如何区分IoT Central中来自多个类似传感器(飞利浦色调灯泡)和连接到IoT Central的网关设备的数据



我们有一个在物联网中心应用程序中注册的网关设备。该网关设备通过ZigBee连接到多个类似的传感器设备,例如飞利浦色调灯泡。我们通过简单的JSON 将传感器的遥测数据发送到物联网中心

{"mac":"<mac address>","illumination":"200","bulb_status":"1"}

在物联网中心,我们已将网关设备注册为具有设备模板的物联网设备,该设备模板具有与飞利浦灯泡和其他传感器相关的遥测属性。

现在我们面临的挑战是,如何区分物联网中心1号房间的飞利浦灯泡和2号房间的菲利普灯泡发送的数据,因为我们只有1台设备在物联网中心注册。

JSON对灯泡和IoT Central中的遥测值都具有类似的属性,无论哪个设备发送最后一条消息,它都将被替换。

请为我提供适用于这种情况的正确的可扩展方法。

注意:考虑到我们的网关设备目前无法运行IoT Edge运行时。所以我们不能把它用作Edge设备。

有两种方法可以解决这个问题。第一种方法是对网关设备进行编程,为每个灯泡提供身份信息。这意味着你所有的灯都将成为物联网中心的一个独立设备(你将为此充电(。您的网关设备需要具有它发送遥测数据的所有设备的连接详细信息。

第二种(不那么漂亮(方法是为每个灯的接口添加一个遥测点。所以你应该有lamp1_brightnesslamp2_brightness而不是brightness。我只是在回答中包含了这一点,因为这是可行的,并且将导致在物联网中心看到每个灯的仪表板。它的规模也不好。

最终Azure IoT Edge将支持身份翻译,这可以解决的这一问题和其他问题

我举了一个Nano BLE设备的E2E示例,该设备使用Azure IoT Python SDK通过基于Raspberry Pi的中央网关捕获数据。这个例子是";进行中";,但我想你可能会发现两个文件很有用。。。

主要项目https://github.com/Larouex/IoTCRaspberryPiProtocolTranslationGateway

BLE项目https://github.com/Larouex/IoTCNanoBLESense33

您可能想要签出的文件。。。

丑闻.py

https://github.com/Larouex/IoTCRaspberryPiProtocolTranslationGateway/blob/master/scandevices.py

此脚本使用BLEScan查找与命名模式匹配的BLE设备,并将它们写入配置文件。

临时性

https://github.com/Larouex/IoTCRaspberryPiProtocolTranslationGateway/blob/master/provisiondevices.py

此脚本和关联类使用Azure IoT SDK for Devices读取配置文件中的设备,并在Azure IoT Central中提供这些设备。当前的代码采用透明的方法,使用BLE设备的身份进行配置,看起来像Iot Central中的真实设备。

在接下来的几周里,我将继续添加其他场景,如不透明和协议翻译(看起来像您感兴趣的场景(。

你可能想通过建模位置和分离遥测值(相对于绘制mac地址(来考虑色调的差异,但当你添加或尝试删除灯泡时,你会在版本控制方面遇到一些困难。

我建议确定翻译,并将每个灯泡与一个模型关联起来。将设备组用于聚合视图。然后设备属性,因为对定位等有用

最新更新