创建规则以处理 Sidewalk 设备消息
Amazon IoT 规则可以接收来自 Sidewalk 设备的消息并将其路由到其它服务。适用于 LoRaWAN 的 Amazon IoT Core 目标将 Sidewalk 设备与规则相关联,该规则将处理要发送到其他服务的设备消息数据。
您可以将现有规则用于您的目标。在此部分中,我们将创建您在创建 Sidewalk 目标时将会指定的规则 SidewalkRule,如 为您的 Sidewalk 设备添加目标 中所述。在创建规则时,我们将创建一个 Amazon Lambda 操作将消息重新发布到 Amazon IoT 主题。
创建 Sidewalk 目标规则
导航到 Amazon IoT 控制台的规则
-
选择 Create a rule 为目标创建新规则。
-
为 Name(名称)输入名称
SidewalkRule,并为规则指定一个可选的 Description(说明),例如Sidewalk rule for lambda action to republish a topic。 -
将默认查询语句更改为
SELECT *,以便执行与规则关联的任何操作。将 SQL 版本保留为2016-03-23。 -
在 Set one or more actions (设置一个或多个操作) 下,选择 Add action (添加操作)。
-
在规则操作下,选择 Send a message to a Lambda function(将消息发送到 Lambda 函数),然后选择 Configure action(配置操作)。
-
您可以选择现有 Lambda 函数或或创建新的函数。在本示例中,我们将创建 Lambda 函数。选择 Create a new Lambda function(新建 Lambda 函数)。
使用 Amazon Lambda 创建函数
选择 Create a new Lambda function(新建 Lambda 函数)将打开 Lambda 控制台的函数
-
要创建自己的函数,请选择 Author from scratch(从头开始编写)。
-
对于 Function name(函数名称),请输入名称(例如,
Sidewalk_Handler),选择Python 3.8作为 Runtime(运行时),然后选择 Create function(创建函数)。 -
选择控制台中 Code source(代码源)部分的 lambda.py函数。
-
在函数正文中,删除函数正文内的任何代码,并为 Lambda 函数添加打印语句。您还可以使用 base64 解码
PayloadData来接收设备发送到 Amazon IoT 的应用程序数据。以下示例显示 Lambda 函数import json import base64 def lambda_handler(event, context): message = json.dumps(event) print (message) payload_data = base64.b64decode(event["PayloadData"]) print(payload_data) print(int(payload_data,16)) -
要部署函数代码,请选择 deploy(部署)。
-
返回到控制台的规则
中心并刷新页面。选择您创建的 Lambda 函数,然后选择 Add action(添加操作)。
将消息重新发布到 Amazon IoT 主题
您可以添加第二个操作以将消息从控制台的规则
-
选择添加操作。
-
选择 Republish a message to an Amazon IoT topic(将消息重新发布到 IoT 主题),然后选择 Configure action(配置操作)。
-
为 Topic(主题)输入
project/sensor/observed并确保 Quality of Service(服务质量)设置为 0 - The message is delivered zero or more times(0 - 消息将发布零次或多次)。 -
选择 Create Role(创建角色)。输入 SidewalkRepublishRole 作为角色名称,然后选择 Create Role(创建角色)。
-
选择添加操作。
这两个操作都显示在 Amazon IoT 控制台的 Rules(规则)中心。
-
请选择 Create rule (创建规则)。
该规则将在显示规则列表的 Rule(规则)页面显示。
后续步骤
现在,您已经为您的 Sidewalk 设备创建了目标规则,您可以连接设备并观察有关您所订阅主题的消息了。有关更多信息,请参阅连接您的 Sidewalk 设备并查看上行链路元数据格式。