如何区分 IoT Central 中来自多个类似传感器(Philips hue 灯泡)到连接到 IoT Central 的网关设备的数据

How to differentiate the data in IoT Central coming from multiple similar sensors(Philips hue bulbs) to a gateway device connected to IoT Central

我们有一个在 IoT 中央应用程序中注册的网关设备。该网关设备通过 ZigBee 连接到多个类似的传感器设备,例如飞利浦 hue 灯泡。 我们通过简单的 JSON

从传感器向 IoT Central 发送遥测数据
{"mac":"<mac address>","illumination":"200","bulb_status":"1"}

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

现在我们面临的挑战是,由于我们在 IoT Central 中只有 1 个设备注册,因此如何区分 IoT Central 中 room1 中的 Philips 灯泡和 room2 中的 Philips 灯泡发送的数据。

JSON 具有相似的灯泡属性,IoT Central 中的遥测值正在被发送最后一条消息的任何设备替换。

请为我提供适用于此类场景的正确可扩展方法。

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

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

第二种(不太漂亮)方法是为每个 lamp 添加一个遥测点到您的界面。因此,您将使用 lamp1_brightnesslamp2_brightness,而不是 brightness。我只在我的回答中包含这个,因为它是可行的,并且会导致在 IoT Central 中看到每个 lamp 的仪表板。它也不能很好地扩展。

最终 Azure IoT Edge 将支持身份转换,这可以解决这个问题 other questions

我已经提出了一个 Nano BLE 设备的 E2E 示例,其中包含通过基于 Raspberry Pi 使用 Azure IoT Python SDK 的中央网关捕获的数据。此示例“进行中”,但我认为您可能会发现两个有用的文件...

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

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

您可能想要查看的文件...

scandevices.py

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

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

provisiondevices.py

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

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

在接下来的几周内,我将继续添加其他场景,例如 Opaque 和 Protocol Translation(这看起来是您感兴趣的场景)。

您可能希望通过对位置建模并分离遥测值(相对于绘制 mac 地址)来考虑对 Hues 的区分,但是在添加或尝试删除时您会在版本控制中遇到一些脆弱性灯泡。

我建议识别翻译并将每个灯泡与模型相关联。使用设备组获取聚合视图。然后是设备属性,因为对定位等很有用