这一节我们来讨论另外一种设备上行数据,即设备状态。
设备状态数据
上一节,我们完成了对设备上行数据的处理,假设说我们有一台装有温度传感器的设备,那么它可以使用这个功能将每个时刻统计到的温度数据上报到 IotHub,IotHub 会记录每一条温度数据并通知业务系统,业务系统可以自行存储温度数据也可以使用 IotHub 提供的接口来查询不同时刻的温度数据。
除了温度读数,设备可能还会需要上报一些其他数据,比如当前使用的软件/硬件版本、传感器状态(有没有坏掉)、电池电量等,这些属于设备的状态数据,通常我们不会关心这些数据的记录,只关心当前的状态,那么用我们在前面实现的上报数据功能来管理设备的状态就稍微有点不合适了。
设备状态上报
IotHub 需要对设备的状态进行单独处理,我们这样来设计 IotHub 的设备状态管理功能。
- 设备用 JSON 的格式将当前的状态发布到主题:
update_status/:productName/:deviceName/:messageId。 - IotHub 将设备的状态用 JSON 的格式存储在 Devices Collection 中。
- IotHub 将设备的状态通知到业务系统,业务系统再做后续的处理,比如通知相关运维人员等。
- IotHub 提供接口供业务系统查询设备的当前状态。
为了对消息进行去重,设备状态消息也会带 MessageID; 设备状态消息一定是单向,设备端状态更改,然后经由 IotHub 通知到业务
本文介绍了物联网设备如何上报和管理状态数据。设备通过JSON格式发布状态到特定主题,IotHub存储并通知业务系统,提供查询接口。DeviceSDK实现了状态发布接口,IotHub服务器端增加ACL列表、存储状态、通知系统并提供查询设备状态的接口。验证流程确保状态上报功能正常工作。文章还讨论了为何不使用MQTT的Retained Message机制,因为IotHub的实现方式导致其无效。
订阅专栏 解锁全文

8638

被折叠的 条评论
为什么被折叠?



