终止支持通知:2026 年 10 月 7 日, AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后,您将无法再访问这些 AWS IoT Greengrass V1 资源。如需了解更多信息,请访问迁移自 AWS IoT Greengrass Version 1。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
串行流连接器
警告
此连接器已进入生命周期延长阶段, AWS IoT Greengrass 不会发布更新来提供功能、现有功能增强、安全补丁或错误修复。有关更多信息,请参阅 AWS IoT Greengrass Version 1 维护政策。
串行流连接器对 AWS IoT Greengrass 核心设备上的串行端口进行读取和写入。
此连接器支持两种操作模式:
按需读取。接收关于 MQTT 主题的读取和写入请求,并发布读取操作的响应或写入操作的状态。
轮询读取。定期从串行端口读取。此模式还支持 Read-On-Demand请求。
注意
读取请求的限制为最多 63994 字节的读取长度。写入请求的限制为最多 128000 字节的数据长度。
此连接器具有以下版本。
版本 |
ARN |
|---|---|
3 |
|
2 |
|
1 |
|
有关版本更改的信息,请参阅更改日志。
要求
此连接器具有以下要求:
连接器参数
该连接器提供以下参数:
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 控制台中的显示名称:超时
必需:
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-
设置读取模式:轮询读取或。 Read-On-Demand
对于“轮询读取”模式,请指定
true。在该模式下,PollingInterval、PollingReadType和PollingReadLength属性是必需属性。对于 Read-On-Demand模式,请指定
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属性,则该属性将在响应中返回。- 示例输出:成功
-
{ "response": { "status": "success" }, "id": "abc123" } - 示例输出:失败
-
失败响应包含一个
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 运行时,您可以创建从 Python3.x 到 Python 3.7 的符号链接。
-
连接器入门(控制台) 和 连接器入门 (CLI) 主题包含详细步骤,说明如何配置和部署示例 Twilio 通知连接器。
确保满足连接器的要求。
-
创建并发布将输入数据发送到连接器的 Lambda 函数。
将示例代码保存为 PY 文件。下载并解压适用于 Python 的AWS IoT Greengrass Core 软件开发工具包。然后,创建一个 zip 包,其中在根级别包含 PY 文件和
greengrasssdk文件夹。此 zip 包是您上传到 AWS Lambda的部署包。创建 Python 3.7 Lambda 函数后,请发布函数版本并创建别名。
-
配置 Greengrass 组。
-
部署组。
-
在 AWS IoT 控制台的 “测试” 页面上,订阅输出数据主题以查看来自连接器的状态消息。示例 Lambda 函数是长时间生存的,并且在部署组后立即开始发送消息。
完成测试后,您可以将 Lambda 生命周期设置为按需(或在 CLI 中设置为
"Pinned": false)并部署组。这会阻止函数发送消息。
示例
以下示例 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 软件许可协议
更改日志
下表介绍每个版本连接器的更改。
版本 |
更改 |
|---|---|
3 |
已将 Lambda 运行时升级到 Python 3.7,这会更改运行时要求。 |
2 |
更新了连接器 ARN 以获得支持。 AWS 区域 |
1 |
首次发布。 |
Greengrass 组在一个时间上只能包含一个版本的连接器。有关升级连接器版本的信息,请参阅升级连接器版本。