Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure Iot边缘报告客户端状态的时间线_Azure_Azure Iot Hub_Azure Iot Hub Device Management - Fatal编程技术网

Azure Iot边缘报告客户端状态的时间线

Azure Iot边缘报告客户端状态的时间线,azure,azure-iot-hub,azure-iot-hub-device-management,Azure,Azure Iot Hub,Azure Iot Hub Device Management,我如何绘制我的意思是,获取数据以绘制IotHub设备客户端连接状态的时间线 我想从我的所有设备中绘制可用性状态时间线,为此我正在执行以下操作: 每一分钟:请求所有“$edgeHub”模块标识 将“$edgeHub”报告的客户端保存到数据库中 从该数据库获取时间线 当我的设备数量增加时,我会做很多请求,我想知道是否没有其他优化的方式使用Azure IoT资源来完成这项工作 从“$edgeHub”模块Twin中,我得到了示例: "reported": { "clie

我如何绘制我的意思是,获取数据以绘制IotHub设备客户端连接状态的时间线

我想从我的所有设备中绘制可用性状态时间线,为此我正在执行以下操作:

每一分钟:请求所有“$edgeHub”模块标识 将“$edgeHub”报告的客户端保存到数据库中 从该数据库获取时间线 当我的设备数量增加时,我会做很多请求,我想知道是否没有其他优化的方式使用Azure IoT资源来完成这项工作

从“$edgeHub”模块Twin中,我得到了示例:

"reported": {
  "clients": {
    "iot/device": {
      "status": "Connected",
      "lastConnectedTimeUtc": "2020-11-30T12:00:41.5918442Z",
      "lastDisconnectedTimeUtc": "2020-11-30T12:00:41.5737114Z"
    }
  }
对于我正在使用的API调用

非常感谢任何有助于我进一步调查Azure监控设备状态的回复。

1。查询 我将选择使用物联网中心查询,而不是逐个请求所有模块

从devices.modules中选择*其中为_definedproperties.reported.clients

我不知道您的SDK是否支持这一点,但大多数(如果不是所有的话)官方SDK都支持运行查询。这将返回定义了客户端报告属性的每个模块。您可以按计划运行它,然后按照最初的计划将输出保存到数据库中

2.将所有模块双事件路由到端点 这一个有点棘手,但您可以基于查询路由设备/模块更改。然后可以将所有事件路由到单独的端点。路线大致如下:

对象是否为$twin.properties.reported.clients

您可以阅读有关邮件路由的更多信息。这种方法的好处是,您不需要向物联网中心发出任何请求,也不需要实时接收更改。您甚至可以使用Azure Stream Analytics来消费这些事件,Azure Stream Analytics支持以本机方式输出到Power BI、表存储和Cosmos DB。结果:您没有编写代码,只使用Azure服务。如果您想利用Azure Stream Analytics,您可能需要咨询Azure定价计算器


注意:我没有彻底测试解决方案2,但从理论上讲这应该有效。

要添加到@matthijs van der veer的答案中,您还可以订阅设备双更改并更新双更改事件上的计数器。

另一种方法,尝试发送设备连接的设备生命周期事件,设备已断开从事件网格到事件集线器的连接。并从Event Hub将其发送到任何端点以处理事件,即可能是从Event Hub侦听事件的模块

因此,流程将如下->
IoT中心刀片->事件->添加订阅->添加事件中心命名空间端点

感谢您的回答,这对我帮助很大。不幸的是,我没有找到一个使用Golang SDK执行查询的好方法,因此我将使用传统API请求为服务人员解决这个问题,因为我们没有很多设备。我也在启动第二个选项,但我相信我会花一段时间让它发挥作用,我会尽快回复第二个选项:。我怀疑使用第二个方法将不会收到连接和断开连接的事件。我相信第二个选项中有一些小的更改,它会起作用。这个微软文档绝对有点帮助,你可以使用设备心跳。您还可以对设备连接/断开状态使用事件网格订阅。有很多方法可以做到,但我很高兴这是一个可行的选择,谢谢你让我知道。有什么理由否决吗?