终止支持通知:2026 年 10 月 7 日, Amazon 将停止对的支持。 Amazon IoT Greengrass Version 1 2026 年 10 月 7 日之后,您将无法再访问这些 Amazon IoT Greengrass V1 资源。如需了解更多信息,请访问迁移自 Amazon IoT Greengrass Version 1。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
串行流连接器
警告
此连接器已进入生命周期延长阶段, Amazon IoT Greengrass 不会发布更新来提供功能、现有功能增强、安全补丁或错误修复。有关更多信息,请参阅 Amazon IoT Greengrass Version 1 维护政策。
串行流连接器对 Amazon IoT Greengrass 核心设备上的串行端口进行读取和写入。
此连接器支持两种操作模式:
按需读取。接收关于 MQTT 主题的读取和写入请求,并发布读取操作的响应或写入操作的状态。
轮询读取。定期从串行端口读取。此模式还支持 Read-On-Demand请求。
注意
读取请求的限制为最多 63994 字节的读取长度。写入请求的限制为最多 128000 字节的数据长度。
此连接器具有以下版本。
版本  | 
                    ARN  | 
                
|---|---|
3  | 
                    
  | 
                
2  | 
                    
  | 
                
1  | 
                    
  | 
                
有关版本更改的信息,请参阅更改日志。
要求
此连接器具有以下要求:
连接器参数
该连接器提供以下参数:
BaudRate- 
                    
串行连接的波特率。
Amazon 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- 
                    
读取操作的超时(以秒为单位)。
Amazon IoT 控制台中的显示名称:超时
必需:
true类型:
string有效值:
1 - 59有效模式:
^([1-9]|[1-5][0-9])$ SerialPort- 
                    
设备上的物理串行端口的绝对路径。这是为本地设备资源指定的源路径。
Amazon IoT 控制台中的显示名称:串行端口
必需:
true类型:
string有效模式:
[/a-zA-Z0-9_-]+ SerialPort-ResourceId- 
                    
表示物理串行端口的本地设备资源的 ID。
注意
连接器被授予对该资源的读写访问权限。
Amazon IoT 控制台中的显示名称:串行端口资源
必需:
true类型:
string有效模式:
[a-zA-Z0-9_-]+ PollingRead- 
                    
设置读取模式:轮询读取或。 Read-On-Demand
对于“轮询读取”模式,请指定
true。在该模式下,PollingInterval、PollingReadType和PollingReadLength属性是必需属性。对于 Read-On-Demand模式,请指定
false。在该模式下,将在读取请求中指定类型和长度值。
Amazon IoT 控制台中的显示名称:读取模式
必需:
true类型:
string有效值:
true, false有效模式:
^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$ PollingReadLength- 
                    
要在每个轮询读取操作中读取的数据长度(字节)。仅当使用“轮询读取”模式时才适用。
Amazon 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- 
                    
轮询读取的时间间隔(以秒为单位)。仅当使用“轮询读取”模式时才适用。
Amazon IoT 控制台中的显示名称:轮询读取间隔
必需:
false。当PollingRead为true时,该属性是必需属性。类型:
string有效值:1 - 999
有效模式:
^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$ PollingReadType- 
                    
轮询线程读取的数据类型。仅当使用“轮询读取”模式时才适用。
Amazon IoT 控制台中的显示名称:轮询读取类型
必需:
false。当PollingRead为true时,该属性是必需属性。类型:
string有效值:
ascii, hex有效模式:
^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$ RtsCts- 
                    
指示是否启用 RTS/CTS 流控制。默认值为
false。有关更多信息,请参阅 RTS、CTS 和 RTR。 Amazon IoT 控制台中的显示名称:RTS/CTS 流量控制
必需:
false类型:
string有效值:
true, false有效模式:
^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$ XonXoff- 
                    
指示是否启用软件流控制。默认值为
false。有关更多信息,请参阅软件流控制。 Amazon IoT 控制台中的显示名称:软件流量控制
必需:
false类型:
string有效值:
true, false有效模式:
^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$ Parity- 
                    
串行端口的奇偶校验。默认值为
N。有关更多信息,请参阅奇偶校验。 Amazon IoT 控制台中的显示名称:串行端口奇偶校验
必需:
false类型:
string有效值:
N, E, O, S, M有效模式:
^(|[NEOSMneosm])$ 
创建连接器示例 (Amazon 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" } } ] }'
在 Amazon 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 的Amazon IoT Greengrass Core 软件开发工具包。然后,创建一个 zip 包,其中在根级别包含 PY 文件和
greengrasssdk文件夹。此 zip 包是您上传到 Amazon Lambda的部署包。创建 Python 3.7 Lambda 函数后,请发布函数版本并创建别名。
 - 
                
配置 Greengrass 组。
 - 
            
部署组。
 - 
            
在 Amazon 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 以获得支持。 Amazon Web Services 区域  | 
                    
1  | 
                        首次发布。  | 
                    
Greengrass 组在一个时间上只能包含一个版本的连接器。有关升级连接器版本的信息,请参阅升级连接器版本。