我们正在考虑将 AWS IoT 用于即将推出的项目,该项目以网络连接不可靠的设备为特色。一项要求是向设备发送命令。命令必须可靠地传递(确认),并且当命令稍后完成时,设备还应该发出成功/失败的信号。鉴于 AWS 不支持持久会话,似乎仅将命令发布到 MQTT 主题并不能确保消息得到传递——对吗?
我们一直在推测将命令插入设备影子的“所需”状态内的命令数组中。然后,设备可以通过在影子的“已报告”状态下复制命令来确认命令的接收,并通过在“已报告”状态下设置命令内的结果字段来报告成功/失败。
鉴于我们缺乏使用 AWS IoT 的经验,这似乎是一种明智的方法吗?或者任何人都可以看到更整洁的东西吗?一件令人讨厌的事情是影子会累积已完成的命令,这大概意味着我最终将需要某种内务处理来删除已完成的命令,以将影子保持在合理的大小。
最后,有谁知道带宽使用有多聪明——如果我的服务器将一个元素添加到嵌套在“所需”状态深处的一百个元素的数组中,实际上有多少数据流过网络?同样,当我的设备将元素移动到“报告”状态时。