【问题标题】:AWS IoT device shadows conceptAWS IoT 设备阴影概念
【发布时间】:2019-05-15 08:29:14
【问题描述】:

我有一个发布的物联网事物 -

时间戳、isAdmin 和数据

一个话题

“物联网/样本数据”

我有一个规则来监听这个主题并将这个数据推送到 DynamoDB。 用户可以使用应用程序的设备影子功能将 isAdmin 布尔值更新为 false。 如何将设备影子连接到规则引擎,以便在更新影子时更新 DynamoDB 中的 isAdmin 布尔值。

我看到了影子 mqtt 主题,但我遗漏了一些东西,它不知何故不起作用。

非常感谢任何帮助。

【问题讨论】:

  • 某些东西必须订阅影子 mqtt 主题才能处理该更新。您说您注意到影子 mqtt 主题,但到目前为止您尝试过用它们做什么?
  • 我看到了影子 mqtt 主题“$aws/things/pSensor/shadow/update”并将我的规则查询语句更改为 SELECT desired FROM '$aws/things/pSensor/shadow/update'。现在我向这个主题发布了带有状态和所需字段的有效 JSON,但没有数据最终出现在 dynamo

标签: amazon-web-services aws-iot


【解决方案1】:

我可以给出一些提示,这可能会对您有所帮助。

  1. 我正在使用查询之类的选择子句,您可以从影子中的结构进行交叉检查。 SELECT state.reported.* FROM '$aws/things/pSensor/shadow/update/accepted'
  2. 使用 AWS IoT 本身提供的 mqtt 客户端测试您的主题“$aws/things/pSensor/shadow/update/accepted”。订阅主题并从您的移动应用程序发送数据。
  3. 在 JSON(移动数据发布)中,如果任何 key 或 value 为空,它将不起作用。就我而言,我发送的是 valye "NA" 而不是 ""(空白)。
  4. 最重要的是,在您现有的 AWS IoT 规则中添加错误操作并在 SQS 中推送错误详细信息并在管理控制台中订阅 SQS。如果有任何错误,它将在队列中提供详细信息。 SQS 中的数据采用 Base64 编码,因此您可以在线解码。
  5. 我确信您的 DynamoDB 操作具有正确的语法。我正在使用诸如“${state.reported.isAdmin}”之类的主键(您可以将其与您的影子匹配)。

如果有帮助请告诉我。

问候,

克里山

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多