Azure IoTHub:获取连接设备的 IP 地址/位置

Azure IoTHub: Get IP Address / Location of connected devices

我想查询连接到 Azure IoTHub 的设备的 public IP 地址或地理位置。 我在将近 3 年前 here 发现了一个关于这个主题的问题。 但答案并不是我真正想要的。有谁知道现在在 IoTHub 或 Azure Functions 中是否有直接用于此任务的新函数?

简短的回答是 Azure IoT 中心没有内置功能来实现这一点。 Rita Han之前给出的答案还是正确的。不过,我想了解更多细节。

如果您可以访问 GPS,则可以将其存储在设备孪生的报告属性中。如果没有可用的 GPS,您可以将设备的 public IP 存储在报告的属性中,并使用外部 API 来解析大致位置。

正如您在评论中提到的,您也可以在遥测消息中发送 IP。这也可以工作,但设备孪生的好处是它在设备离线时也可用,没有任何存储资源(设备孪生位于集线器中)。查看这两种情况的工作量,它们都只使用一条消息将 IP 发送到 IoT 中心。不同之处在于,如果您使用的是 MQTT,则 can listen for a confirmation message 以防更新报告的属性。