序列号流 连接器 - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

序列号流 连接器

TheThethe 序列号流 连接器 读取和写入串行端口上的串行端口 AWS IoT Greengrass 核心设备。

此连接器支持两种操作模式:

  • 按需读取。. 接收关于 MQTT 主题的读取和写入请求,并发布读取操作的响应或写入操作的状态。

  • 轮询读取。. 定期从串行端口读取。该模式还支持“按需读取”请求。

注意

读取请求的限制为最多 63994 字节的读取长度。写入请求的限制为最多 128000 字节的数据长度。

此连接器具有以下版本。

版本

ARN:

3

arn:aws-cn:greengrass:区域::/connectors/SerialStream/versions/3

2

arn:aws-cn:greengrass:区域::/connectors/SerialStream/versions/2

1

arn:aws:greengrass:区域::/connectors/SerialStream/versions/1

有关版本更改的信息,请参阅 长Elog.

要求

此连接器具有以下要求:

Version 3
  • AWS IoT Greengrass Core 软件 v1.9.3 版或更高版本。

  • Python 版本 3.7 已安装在核心设备上并且已添加到 PATH 环境变量。

  • Greengrass 组中一个指向目标串行端口的 本地设备资源

    注意

    建议先设置串行端口并验证可读取和写入此串行端口,然后部署此连接器。

Versions 1 - 2
  • AWS IoT Greengrass Core 软件 v1.7 or later。

  • Python 版本 2.7 已安装在核心设备上并且已添加到 PATH 环境变量。

  • Greengrass 组中一个指向目标串行端口的 本地设备资源

    注意

    建议先设置串行端口并验证可读取和写入此串行端口,然后部署此连接器。

连接器参数

该连接器提供以下参数:

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...在此模式下, PollingIntervalPollingReadType,和 PollingReadLength 属性为必填项。

  • 对于读取按需模式,请指定 false...在此模式下,读取请求中指定了类型和长度值。

在 AWS IoT 控制台中显示名称: :阅读更多

必需: true

类型: string

有效值: true, false

有效模式: ^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

PollingReadLength

要在每个轮询读取操作中读取的数据长度(字节)。仅当使用“轮询读取”模式时才适用。

在 AWS IoT 控制台中显示名称: :轮询读取长度

必需: false...此属性为必填项 PollingReadtrue.

类型: 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...此属性为必填项 PollingReadtrue.

类型: string

有效值: 1 - 999

有效模式: ^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$

PollingReadType

轮询线程读取的数据类型。仅当使用“轮询读取”模式时才适用。

在 AWS IoT 控制台中显示名称: :轮询读取类型

必需: false...此属性为必填项 PollingReadtrue.

类型: 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-cn:greengrass:区域::/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 控制台 中,您可以从该组的 Connectors (连接器)页面添加一个连接器。有关更多信息,请参阅 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/#

使用此主题接收来自读取操作的响应数据。如果类型为 ,则响应数据经过 Base64 编码。hex.

输出示例。
{ "data": "output of serial read operation" "id": "abc123" }

示例用法

使用以下概括步骤设置可用于尝试连接器的示例 Python 3.7 Lambda 函数。

注意
  1. 确保您符合 要求 对于连接器。

  2. 创建并发布将输入数据发送到连接器的 Lambda 函数。

    保存 示例代码 作为PY文件。下载并解压缩 适用于 Python 的 AWS IoT Greengrass Core 开发工具包。然后,创建一个 zip 包,其中在根级别包含 PY 文件和 greengrasssdk 文件夹。此 zip 包是您上传到 AWS Lambda 的部署包。

    创建 Python 3.7 Lambda 函数后,发布函数版本并创建别名。

  3. 配置 Greengrass 组。

    1. 通过 Lambda 函数的别名添加此函数(推荐)。将 Lambda 生命周期配置为长时间生存(或在 CLI 中设置为 "Pinned": true)。

    2. 添加所需的本地设备资源并授予对 Lambda 函数的读/写访问权限。

    3. 将连接器添加到您的组中,并配置 参数.

    4. 将订阅添加到允许连接器接收的组 输入数据 并发送 输出数据 在支持的主题过滤器上。

      • 将 Lambda 函数设置为源,将连接器设置为目标,并使用支持的输入主题筛选条件。

      • 将连接器设置为源,将 AWS IoT Core 设置为目标,并使用支持的输出主题筛选条件。您可以使用此订阅查看 AWS IoT 控制台 中的状态消息。

  4. 部署组。

  5. 在 AWS IoT 控制台 中,在 Test (测试) 页面上,订阅输出数据主题以查看连接器中的状态消息。示例 Lambda 函数是长时间生存的,并且在部署组后立即开始发送消息。

    完成测试后,您可以将 Lambda 生命周期设置为按需(或在 CLI 中设置为 "Pinned": false )并部署组。这会阻止函数发送消息。

Example

以下是 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

许可证

TheThethe 序列号流 连接器包括以下第三方软件/许可:

此连接器按照 Greengrass 核心软件许可协议发布。

Changelog

下表描述了连接器每个版本中所做的更改。

版本

更改

3

已将 Lambda 运行时升级到 Python 3.7,这会更改运行时要求。

2

用于 AWS 区域支持的已更新连接器 ARN。

1

首次发布。

Greengrass 组一次只能包含一个版本的连接器。有关升级连接器版本的信息,请参阅升级连接器版本

另请参阅