Amazon IoT Greengrass Version 12023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅Amazon IoT Greengrass V1维护政策。在此日期之后,Amazon IoT Greengrass V1不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上运行的设备Amazon IoT Greengrass V1不会受到干扰,将继续运行并连接到云端。我们强烈建议你迁移到Amazon IoT Greengrass Version 2,它补充说重要的新功能和支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
串行流连接器
警告
此连接器已移入延长使用阶段, 和Amazon IoT Greengrass不会发布提供功能、现有功能增强功能、安全补丁或错误修复的更新。有关更多信息,请参阅 Amazon IoT Greengrass Version 1维护政策。
Seriale连接器读取和写入串行端口Amazon IoT Greengrass核心设备。
此连接器支持两种操作模式:
按需读取。接收关于 MQTT 主题的读取和写入请求,并发布读取操作的响应或写入操作的状态。
轮询读取。定期从串行端口读取。该模式还支持“按需读取”请求。
注意
读取请求的限制为最多 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
-
设置读取模式:“轮询读取” 或 “按需读取”。
对于“轮询读取”模式,请指定
true
。在该模式下,PollingInterval
、PollingReadType
和PollingReadLength
属性是必需属性。对于“按需读取”模式,请指定
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-1-1
有效模式:
^(|[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 Greengrassconsole,则可以从该组的连接器页. 有关更多信息,请参阅 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 文件。下载并解压缩Amazon IoT Greengrass适用Python 的核心开发工具. 然后,创建一个 zip 包,其中在根级别包含 PY 文件和
greengrasssdk
文件夹。此 zip 包是您上传到的部署包Amazon Lambda.创建 Python 3.7 Lambda 函数后,发布函数版本并创建别名。
-
配置 Greengrass 组。
-
部署组。
-
在Amazon 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 核心软件许可协议
更改日志
下表介绍每一版连接器中的更改。
版本 |
更改 |
---|---|
3 |
已将 Lambda 运行时升级到 Python 3.7,这会更改运行时要求。 |
2 |
ARN 于Amazon Web Services 区域支持。 |
1 |
首次发布。 |
Greengrass 组每次只能包含连接器的一个版本。有关升级连接器版本的信息,请参阅升级连接器版本。