Azure functions 如何使用azure功能在azure iot Hub中获取在线和离线设备状态

Azure functions 如何使用azure功能在azure iot Hub中获取在线和离线设备状态,azure-functions,azure-iot-hub,Azure Functions,Azure Iot Hub,使用azure功能在azure iot Hub中获取联机和脱机设备状态connectionState字段不可靠,不应用于查询设备状态。有关详细信息,请参阅 相反,建议您实施从设备发送的心跳。或者,您也可以在设备连接事件上创建Azure EventGrid订阅,并收听以下内容: //编辑:您实际上可以将新的有状态持久功能功能功能与EventGrid一起用于您的用例:首先配置要从IoT中心发布的事件。更具体地说,DeviceConnected和DeviceDisconnected事件将解决您的问题

使用azure功能在azure iot Hub中获取联机和脱机设备状态

connectionState字段不可靠,不应用于查询设备状态。有关详细信息,请参阅

相反,建议您实施从设备发送的心跳。或者,您也可以在设备连接事件上创建Azure EventGrid订阅,并收听以下内容:


//编辑:您实际上可以将新的有状态持久功能功能功能与EventGrid一起用于您的用例:

首先配置要从IoT中心发布的事件。更具体地说,DeviceConnected和DeviceDisconnected事件将解决您的问题


最后在Azure函数中实现EventHub触发器以获取事件。

@claymodel我认为这实际上与Azure门户IoT设备部分中的连接状态的内部实现相同

我之所以这么认为,是因为DeviceDisconnected事件到达Azure函数的时间几乎与DeviceTwin属性部分中显示的时间相同

这意味着它基本上和底层实现一样不可靠。 我只是在几分钟后才接到断开连接的通知-所以,没用

现在,我必须在每次执行操作之前查询设备,以确保设备实际已连接

这真是一场噩梦! 另一件需要注意的事情-有两种方法可以通知设备生命周期事件:

  • 来自消息路由部分,但实际上仅在EventData类中以某种格式发送创建和删除的事件
  • 从物联网中心的“事件”部分,您可以创建订阅并指向事件中心,以处理设备创建的设备删除的设备连接的设备断开的——这些事件中心在EventData类中发送不同类型的格式
  • 因此,物联网枢纽上各部分之间存在巨大的错位


    老实说,我不知道是否有一个可靠的方式检查设备连接的好答案。希望他们在不久的将来真的会为此做点什么

    Azure IoT Hub为其注册的每个设备维护设备双胞胎。此device twin是关于设备的JSON格式信息,它包含“connectionState”属性,如果它是“已连接”或“已断开连接”,则可以在Azure函数中检查该属性。