Dav*_*rks 1 amazon-web-services aws-iot
我正在查看有关影子状态的 AWS IoT 文档,并尝试更好地了解影子文件中desired和 的使用。reported
文档指出:
当影子的状态发生变化时,AWS IoT 会向所有 MQTT 订阅者发送 /delta 消息,其中包含所需状态和报告状态之间的差异。
浏览完文档的其余部分后,我觉得我并没有清楚地掌握desiredvs的用例reported。有人可以解释一下用例吗?我们什么时候使用其中一种而不是另一种?
让我们从头开始,设备影子是AWS IoT 注册表中定义的事物的持久虚拟影子。基本上,it\xe2\x80\x99 是一个 JSON 状态文档,用于存储和检索事物的当前状态信息。您可以使用 MQTT 主题或 REST API 调用与设备影子交互。Shadows 的主要优点是您可以与它交互,无论该物体是否连接到互联网。
\nShadow\xe2\x80\x99s 文档包含一个状态属性,用于描述设备\xe2\x80\x99s 状态的各个方面:
\n{\n "state": {\n "desired": {\n "color": "RED"\n },\n "reported": {\n "color": "GREEN"\n },\n "delta": {\n "color": "RED"\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n这是每个状态的描述:
\ndesired。reported。delta。每个影子都有一个保留的 MQTT 主题和 HTTP URL,支持影子上的get、update、 和操作。delete让我们来看看:
$aws/things/THING_NAME/shadow/update:发布到此主题以更新/创建物体影子;$aws/things/THING_NAME/shadow/update/accepted:AWS IoT在接受更新请求后发布该主题的状态文档reported或部分内容;desired$aws/things/THING_NAME/shadow/update/rejected:AWS IoT 在拒绝更新请求时向此主题发布错误消息;$aws/things/THING_NAME/shadow/update/documents:只要成功执行影子更新,AWS IoT 就会向此主题发布包含先前和当前状态信息的状态文档;$aws/things/THING_NAME/shadow/update/delta:当 AWS IoT 接受事物影子的更改并且请求状态文档包含所需状态和报告状态的不同值时,AWS IoT 会发布对此主题的响应增量状态文档。这是一个例子。假设我们有一个空气净化器,我们想要改变风扇速度。流程如下:
\n$aws/things/THING_NAME/shadow/update以使用新的所需状态更新设备影子:"fanSpeed": 50。它看起来像这样:{\n "state": {\n "desired": {\n "fanSpeed": 50\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nreported状态与 不同"fanSpeed": 50,AWS IoT 会将desired状态发布到 delta topic $aws/things/THING_NAME/shadow/update/delta。{\n "state": {\n "desired": {\n "fanSpeed": 50\n },\n "reported": {\n "fanSpeed": 100\n },\n "delta": {\n "fanSpeed": 50\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n$aws/things/THING_NAME/shadow/update订阅 delta 主题的设备(我们的空气净化器)将执行请求的操作(在本例中将风扇速度设置为 50),并使用带有以下 JSON 消息的更新主题向 AWS IoT Device Shadow 报告新状态:{\n "state": {\n "reported": {\n "fanSpeed": 50\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n现在我们的空气净化器的风扇速度为 50...这就是它的工作原理;)
\n| 归档时间: |
|
| 查看次数: |
1556 次 |
| 最近记录: |