当前位置: 首页 > 知识库问答 >
问题:

如何在 Python 中接收 Azure 设备遥测数据?

姚鹤龄
2023-03-14

如何使用Python在Event Hub中接收设备消息?我看到来自Event Hub的摘要消息,但缺少详细的设备消息。

使用 Azure IOT 远程监视示例(https://github.com/Azure/azure-iot-remote-monitoring、https://www.azureiotsolutions.com/Accelerators)和 IOT 中心资源管理器 https://github.com/Azure/iothub-explorer 可提供如下消息:

= = = = From:' chiller-01.0 ' at ' 2018-06-27t 17:35:13.835 z ' = = = = { "温度":74.8813305672404,"温度_单位":" F ","湿度":67.345695720448,"湿度_单位":" % ","压力":155.648674178239,"压力_单位":" psig" } -应用属性v1 "," io thub-creation-time-utc ":" 2018-06-27t 17:35:13.5066336 z "," $ $ creation time utc ":" 2018-06-27t 17:35:13 00:00 "," $$MessageSchema ":"冷却器-传感器;v1 "," $$ContentType": "JSON" }

为了用python获取这些消息,我在https://github.com/Azure/azure-event-hubs-python使用azure-event-hubs-python库和示例,使用在Operations选项卡上为IOT中心指定的事件中心连接字符串,从事件中心读取IOT消息。节点JS中编写的IOT中心浏览器使用IOT中心连接字符串,但使用python编写相应的代码失败,eventhubclient . from _ Connection _ String失败,因为“EndPoint”不在连接字符串中。将连接字符串中的“HostName”更改为“EndPoint”会在connection.pyx中产生错误:

文件"./src/connection.pyx",第20行,在uamqp.c_uamqp.create_connectionTypeError:预期字节,找到NoneType

预挂起协议 sb:// 到终结点时,会报告未指定 EventHub:

值错误:未指定EventHub

添加;EntityPath=进一步,但由于CBS令牌身份验证错误而失败:

azure.eventhub。EventHubError:接收失败:CBS令牌身份验证失败。状态代码:401说明:b'指定的SAS令牌具有无效签名。它与主键或次键都不匹配。”

使用事件集线器连接字符串进行IOT集线器的连接和接收消息修复了这些错误,但仅接收摘要数据,而无需任何设备遥测,例如:

{
  "count": 0,
  "total": 0,
  "minimum": 0,
  "maximum": 0,
  "average": 0,
  "resourceId": "/SUBSCRIPTIONS/{SUBSCRIPTION}/RESOURCEGROUPS/{RESOURCEGROUP}/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/{IOTHUB}", 
  "time": "2018-06-27T16:59:00.0000000Z", 
  "metricName": "jobs.failed", 
  "timeGrain": "PT1M"
}

由于设备数据丢失,我不确定是否向Python EventHubClient传递了正确的参数,或者客户端只是没有返回它们。一年前的堆栈交换我如何从Azure IoT中心接收设备发送的消息?表示无法使用Python读取遥测数据,但由于Python EventHub SDK已经存在,我希望这一问题得到解决。

共有1个答案

田意致
2023-03-14

是的,最新的EventHubs SDK提供了使用python读取遥测数据的功能。我不知道你是否提到了发布在GitHub上的问题(#28)。我认为annatisch在4月28日的评论对这个问题是有帮助的。

 类似资料:
  • 我正在尝试用HTTP GET请求向Azure Iot Central中的设备发送遥测信息。 我有一个遗留的iot应用程序,我正在尝试将它迁移到Azure iot Central,所以现在我需要将我正在进行的iot数据同步到Azure iot Central。 我发现的一种快速实现的方法是使用逻辑应用程序。 我已经成功地创建了Iot中央应用程序和逻辑应用程序配置,我还找到了获取设备信息和更新属性的方

  • 问题内容: 我又来了。 所以,长话短说:在我的应用程序中,我试图借助Android Samples(that)从BLE设备(滴答心率监测器:that)接收数据。但是…我没有从我的设备接收数据!我可以得到特征和描述符,但是……仅此而已。我只是.. 错过了重点 。这是我的代码: __ 这是我的日志: 问题答案: 您有一个电话,但没有回调来接收该值。它是BluetoothGattCallback的一部分

  • 这听起来很基本,但我是Android BLE开发的初学者。到目前为止,我能够创建我的Nexus9设备作为外围设备和Moto G作为中心设备。而且我正在成功连接设备。但我不知道当我从中央设备发送一个特性时,它将从外设接收到哪里?广告回调仅在广告启动成功而不是(在我的例子中是成功的)时才返回 这是我的外设代码 我正在从中央使用连接的Gatt的writeCharacteristic命令,但不知道如何从外

  • 我们已经在Azure IOT Central上注册了我们的IOT设备,并且能够在IOT Central上可视化遥测数据。但是,当我们使用Azure在Android示例应用IOT central上生成的主键发送遥测时,我们无法可视化数据。 我错过什么了吗?我们如何将iOS和Android注册为IoT Central上的一个设备以可视化数据?

  • 我正在尝试在python azure函数中安装jdk pip install-jdk 进口jdk path_to_java_home=jdk。安装('15’,jre=true) 现在,我正在尝试设置JAVA_HOME的路径 我怎么才能做到呢?