使用azure功能在azure iot Hub中获取在线和离线设备状态
答案 0 :(得分:0)
connectionState字段不可靠,不应用于查询设备状态。有关详细信息,请参见here。
相反,建议您实施从您的设备发送的心跳。或者,您也可以在设备连接事件上创建Azure EventGrid订阅,并收听以下事件:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-how-to-order-connection-state-events#configure-subscription-for-iot-hub-events
// edit:实际上,您可以结合使用EventGrid:https://docs.microsoft.com/de-de/azure/azure-functions/durable/durable-functions-preview
来使用新的有状态的持久性Function功能用于您的用例。答案 1 :(得分:0)
首先配置要从IoT中心发布的事件。更具体地说,DeviceConnected和DeviceDisconnected事件将解决您的目的。
然后最终在Azure函数中实现EventHub触发器以获取事件。
答案 2 :(得分:0)
@claymodel我认为这实际上与Azure Portal的IoT设备部分中 connectionState 的内部实现相同。
我之所以这样认为是因为 DeviceDisconnected 事件在 DeviceTwin 属性部分中显示的大约同一时间到达了Azure函数。
这意味着它基本上与底层实现一样不可靠。 几分钟后我才收到有关断开连接的通知-所以,没用
现在,每次执行操作前我都必须查询设备,以确保设备已实际连接。
这真是一场噩梦! 需要注意的另一件事-有两种方法可以通知设备生命周期事件:
因此IoT中心上的各个部分之间存在巨大的偏差。
说实话,我不知道是否存在以可靠方式检查设备连接的好答案。希望他们会在不久的将来对此有所作为