0

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

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

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

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

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

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

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

4

2 回答 2

1

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

第二种(不那么漂亮)的方法是为每个灯的界面添加一个遥测点。因此,brightness您将拥有lamp1_brightnessand lamp2_brightness。我仅将其包含在我的答案中,因为它是可行的,并且会导致在 IoT Central 中看到每个灯的仪表板。它也不能很好地扩展。

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

于 2020-07-22T15:02:57.757 回答
0

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

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

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

您可能要检查的文件...

扫描设备.py

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

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

提供设备.py

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

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

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

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

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

于 2020-07-24T19:05:11.377 回答