AWS IoT Greengrass Version 1 於 2023 年 6 月 30 日進入延長使用壽命階段。如需詳細資訊,請參閱AWS IoT Greengrass V1 維護政策。在此日期之後, AWS IoT Greengrass V1 將不會發行提供功能、增強功能、錯誤修正或安全性修補程式的更新。在上運行的設備 AWS IoT Greengrass V1 不會中斷,並將繼續運行並連接到雲。我們強烈建議您移轉至 AWS IoT Greengrass Version 2,這會增加重要的新功能,並支援其他平台。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
序列流連接器
警告
此連接器已移至延長使用要求,以及AWS IoT Greengrass不會發行提供功能、增強現有功能、安全性修補程式或錯誤修正的更新。如需詳細資訊,請參閱 AWS IoT Greengrass Version 1維護政策。
序列連接器讀取和寫入序列埠AWS IoT Greengrass核心裝置。
此連接器支援兩種操作模式:
隨需讀取。接收 MQTT 主題上的讀取和寫入請求,並發佈讀取操作的回應,或寫入操作的狀態。
輪詢讀取。定期從序列埠讀取。這個模式還支援隨需讀取請求。
注意
讀取請求的最大讀取長度限制為 63994 位元組。寫入請求的最大資料長度限制為 128000 位元組。
此連接器具有下列版本。
版本 |
ARN |
---|---|
3 |
|
2 |
|
1 |
|
如需版本變更的詳細資訊,請參閱 Changelog。
要求
此連接器有下列要求:
Connector 參數
此連接器提供下列參數:
BaudRate
-
序列連線的傳輸速率。
中的顯示名稱AWS IoT主控台:傳輸速率
必要:
true
類型:
string
有效值:
110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400
有效模式:
^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$
Timeout
-
讀取操作的逾時 (以秒為單位)。
中的顯示名稱AWS IoT主控台:Timeout (逾時)
必要:
true
類型:
string
有效值:
1 - 59
有效模式:
^([1-9]|[1-5][0-9])$
SerialPort
-
裝置上實體序列埠的絕對路徑。這是指定給本機裝置資源的來源路徑。
中的顯示名稱AWS IoT主控台:序列
必要:
true
類型:
string
有效模式:
[/a-zA-Z0-9_-]+
SerialPort-ResourceId
-
代表實體序列埠的本機裝置資源 ID。
注意
此連接器已授予資源的讀寫存取權。
中的顯示名稱AWS IoT主控台:序列埠資源
必要:
true
類型:
string
有效模式:
[a-zA-Z0-9_-]+
PollingRead
-
設置讀取模式:輪詢讀取或隨需讀取。
對於輪詢讀取模式,指定
true
。在此模式中,需要PollingInterval
、PollingReadType
和PollingReadLength
屬性。對於隨需讀取模式,指定
false
。在這個模式下,類型和長度值是在讀取請求中指定。
中的顯示名稱AWS IoT主控台:讀取模式
必要:
true
類型:
string
有效值:
true, false
有效模式:
^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$
PollingReadLength
-
在每個輪詢讀取操作中讀取的資料長度 (以位元組為單位)。這只適用於使用輪詢讀取模式時。
中的顯示名稱AWS IoT主控台:輪詢讀取長度
必要:
false
。 此屬性為必要屬性。PollingRead
是true
。類型:
string
有效模式:
^(|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-2][0-9]{3}|63[0-8][0-9]{2}|639[0-8][0-9]|6399[0-4])$
PollingReadInterval
-
輪詢讀取的間隔 (以秒為單位)。這只適用於使用輪詢讀取模式時。
中的顯示名稱AWS IoT主控台:輪詢讀取間隔
必要:
false
。 此屬性為必要屬性。PollingRead
是true
。類型:
string
有效值:1-999
有效模式:
^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$
PollingReadType
-
輪詢執行緒讀取的資料類型。這只適用於使用輪詢讀取模式時。
中的顯示名稱AWS IoT主控台:輪詢讀取類型
必要:
false
。 此屬性為必要屬性。PollingRead
是true
。類型:
string
有效值:
ascii, hex
有效模式:
^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$
RtsCts
-
指出是否啟用 RTS/CTS 流程控制。預設值為
false
。如需詳細資訊,請參閱 RTS、CTS 及 RTR。 中的顯示名稱AWS IoT主控台:RTS/CTS 流程控制
必要:
false
類型:
string
有效值:
true, false
有效模式:
^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$
XonXoff
-
指出是否啟用軟體流程控制。預設值為
false
。如需詳細資訊,請參閱軟體流程控制。 中的顯示名稱AWS IoT主控台:軟體流程控制
必要:
false
類型:
string
有效值:
true, false
有效模式:
^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$
Parity
-
序列埠的同位。預設值為
N
。如需詳細資訊,請參閱同位。 中的顯示名稱AWS IoT主控台:序列同位
必要:
false
類型:
string
有效值:
N, E, O, S, M
有效模式:
^(|[NEOSMneosm])$
建立範例連接器 (AWS CLI)
以下 CLI 命令會建立ConnectorDefinition
包含序列流連接器的初始版本。它將連接器設定為輪詢讀取模式。
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySerialStreamConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/SerialStream/versions/3", "Parameters": { "BaudRate" : "9600", "Timeout" : "25", "SerialPort" : "/dev/serial1", "SerialPort-ResourceId" : "my-serial-port-resource", "PollingRead" : "true", "PollingReadLength" : "30", "PollingReadInterval" : "30", "PollingReadType" : "hex" } } ] }'
在 中AWS IoT Greengrass主控台,您可以從群組中新增連接器連接器(憑證已建立!) 頁面上的名稱有些許差異。如需詳細資訊,請參閱 Greengrass 連接器入門 (主控台)。
輸入資料
此連接器接受兩個 MQTT 主題上對連接埠的讀取或寫入請求。輸入訊息必須是 JSON 格式。
-
serial/+/read/#
主題上的讀取請求。 -
serial/+/write/#
主題上的寫入請求。
若要發佈到這些主題,請將 +
萬用字元換成核心物件名稱,將 #
萬用字元換成序列埠的路徑。例如:
serial/
core-thing-name
/read/dev/serial-port
- 主題篩選條件:
serial/+/read/#
-
使用此主題將隨需讀取請求傳送到序列接腳。讀取請求的最大讀取長度限制為 63994 位元組。
- 訊息屬性
-
readLength
-
從序列埠讀取的資料長度。
必要:
true
類型:
string
有效模式:
^[1-9][0-9]*$
type
-
要讀取的資料類型。
必要:
true
類型:
string
有效值:
ascii, hex
有效模式:
(?i)^(ascii|hex)$
id
-
請求的任意 ID。此屬性用於將輸入請求映射到輸出回應。
必要:
false
類型:
string
有效模式:
.+
- 範例輸入
-
{ "readLength": "30", "type": "ascii", "id": "abc123" }
- 主題篩選條件:
serial/+/write/#
-
使用此主題將寫入請求傳送到序列接腳。寫入請求的最大資料長度限制為 128000 位元組。
- 訊息屬性
-
data
-
要寫入序列埠的字串。
必要:
true
類型:
string
有效模式:
^[1-9][0-9]*$
type
-
要讀取的資料類型。
必要:
true
類型:
string
有效值:
ascii, hex
有效模式:
^(ascii|hex|ASCII|HEX)$
id
-
請求的任意 ID。此屬性用於將輸入請求映射到輸出回應。
必要:
false
類型:
string
有效模式:
.+
- 範例輸入:ASCII 請求
-
{ "data": "
random serial data
", "type": "ascii", "id": "abc123" } - 範例輸入:十六進位請求
-
{ "data": "
base64 encoded data
", "type": "hex", "id": "abc123" }
輸出資料
連接器將輸出資料發佈在兩個主題:
-
在
serial/+/status/#
主題上來自連接器的狀態資訊。 -
在
serial/+/read_response/#
主題上來自讀取請求的回應。
發佈到此主題時,連接器會將 +
萬用字元換成核心物件名稱,將 #
萬用字元換成序列埠的路徑。例如:
serial/
core-thing-name
/status/dev/serial-port
- 主題篩選條件:
serial/+/status/#
-
使用此主題監聽讀取和寫入請求的狀態。如果
id
屬性包含在請求中,則會在回應中傳回。- 輸出範例:Success
-
{ "response": { "status": "success" }, "id": "abc123" }
- 輸出範例:Failure (失敗)
-
失敗回應包含
error_message
屬性,描述執行讀取或寫入操作時發生的錯誤或逾時。{ "response": { "status": "fail", "error_message": "Could not write to port" }, "id": "abc123" }
- 主題篩選條件:
serial/+/read_response/#
-
使用此主題,以接收來自讀取操作的回應資料。如果類型為
hex
,則回應資料為 Base64 編碼。- 範例輸出
-
{ "data": "
output of serial read operation
" "id": "abc123" }
使用範例
使用下列高階步驟,設定可用來試用連接器的範例 Python 3.7 Lambda 函數。
注意
-
如果您使用其他 Python 執行時間,則可以建立從 Python 3.x 到 Python 3.7 的符號連結。
-
連接器入門 (主控台) 和 連接器入門 (CLI) 主題包含詳細步驟,說明如何設定和部署範例 Twilio 通知連接器。
確定您符合連接器的要求。
-
建立並發佈 Lambda 函數,以將輸入資料傳送至連接器。
將範例程式碼儲存為 PY 檔案。下載並解壓縮AWS IoT Greengrass核心開發套件。然後,建立在根層級包含 PY 檔案和
greengrasssdk
資料夾的 zip 套件。此 zip 套件是您上傳至的部署套件AWS Lambda。建立 Python 3.7 Lambda 函數後,請發佈函數版本並建立別名。
-
設定 Greengrass 群組。
-
部署群組。
-
在 中AWS IoT主控台、測試」頁面中,訂閱輸出資料主題以檢視來自連接器的狀態訊息。範例 Lambda 函數具有長時間的生命週期,而且在部署完群組後會立即開始傳送訊息。
完成測試後,您可以將 Lambda 生命週期設為隨需 (或
"Pinned": false
在 CLI 中設為) 並部署群組。這會讓函數停止傳送訊息。
範例
下列範例 Lambda 函數會將輸入訊息傳送至連接器。
import greengrasssdk import json TOPIC_REQUEST = 'serial/CORE_THING_NAME/write/dev/serial1' # Creating a greengrass core sdk client iot_client = greengrasssdk.client('iot-data') def create_serial_stream_request(): request = { "data": "TEST", "type": "ascii", "id": "abc123" } return request def publish_basic_request(): iot_client.publish(payload=json.dumps(create_serial_stream_request()), topic=TOPIC_REQUEST) publish_basic_request() def lambda_handler(event, context): return
授權
序列流連接器包含下列第三方軟體/授權:
pyserial
/BSD
此連接器會在Greengrass Core 軟體授權合約
Changelog
下表說明連接器每個版本的變更。
版本 |
變更 |
---|---|
3 |
已將 Lambda 執行時間升級至 Python 3.7,這會改變執行時間要求。 |
2 |
更新的 Connector ARN,AWS 區域支援。 |
1 |
初始版本。 |
Greengrass 群組一次只能包含連接器的一個版本。若要取得有關升級連接器版本的資訊,請參閱升級連接器版本。