Как различать данные в IoT Central, поступающие от нескольких похожих датчиков (лампочки Philips Hue) на устройство шлюза, подключенное к IoT Central

У нас есть устройство шлюза, которое зарегистрировано в центральном приложении IoT. Это устройство шлюза подключено к нескольким аналогичным сенсорным устройствам, таким как лампы Philips Hue, через ZigBee. Мы отправляем телеметрию с датчиков в IoT-центр через простой JSON.

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

В IoT Central мы зарегистрировали наше устройство шлюза как устройство IoT с шаблоном устройства, который имеет телеметрические свойства, связанные с лампочкой Philips и другими датчиками.

Теперь проблема, с которой мы сталкиваемся, заключается в том, как различать данные, которые отправляются лампой Philips в комнате 1 и лампой Philips в комнате 2 в IoT Central, поскольку у нас есть только 1 устройство, зарегистрированное в IoT Central.

JSON имеет аналогичные свойства как для лампочек, так и для значений телеметрии в IoT Central, которые заменяются тем устройством, которое отправляет последнее сообщение.

Пожалуйста, предоставьте мне правильный масштабируемый подход для такого сценария.

Примечание. Учтите, что на нашем шлюзе сейчас не может работать среда выполнения IoT Edge. Поэтому мы не можем использовать его как устройство Edge.


person Hariharnath Paduchuru    schedule 17.07.2020    source источник
comment
Ваша цель - видеть каждую лампу / датчик как отдельное устройство в IoT Central или вы хотите, чтобы в Central было одно устройство, которое отображало бы все лампы / датчики?   -  person Matthijs van der Veer    schedule 17.07.2020
comment
Да, наша цель - зарегистрировать 1 устройство в IoT Central, которое однозначно отображает все лампы / датчики в соответствии с MAC-адресом или любым идентификатором. На панели управления   -  person Hariharnath Paduchuru    schedule 17.07.2020
comment
@HariharnathPaduchuru, вы можете попробовать следующее: добавить свойство Location со схемой Geopoint к типу Capability Telemetry. Каждой вашей лампе / датчикам присваивается уникальное значение местоположения.   -  person Roman Kiss    schedule 17.07.2020
comment
@Roman Kiss, если мы добавим свойство местоположения к устройству, которое у нас есть, значения телеметрии местоположения не будут перекрываться на плитке центральной панели iot устройства, поскольку центральная панель мониторинга iot не позволяет различать датчики одного и того же устройства. Я бы создал только одну плитку для этого датчика, и значения от датчиков того же типа будут перекрываться на этом.   -  person Hariharnath Paduchuru    schedule 18.07.2020


Ответы (2)


Есть два способа решить эту проблему. Первый - запрограммировать ваше шлюзовое устройство на идентификацию каждой из ваших лампочек. Это означает, что все ваши лампы станут отдельным устройством в IoT Central (и с вас будет взиматься плата). На вашем шлюзовом устройстве должны быть сведения о подключении для всех устройств, для которых оно отправляет телеметрию.

Второй (не очень красивый) способ - добавить в интерфейс точку телеметрии для каждой лампы. Таким образом, вместо brightness у вас будут lamp1_brightness и lamp2_brightness. Я включаю это в свой ответ только потому, что это возможно и приведет к отображению приборной панели для каждой лампы в IoT Central. Он тоже плохо масштабируется.

В конечном итоге Azure IoT Edge будет поддерживать преобразование идентификаторов, которое может решить эту проблему, и другие вопросы

person Matthijs van der Veer    schedule 22.07.2020

Я разместил E2E-пример устройств Nano BLE с данными, захваченными через центральный шлюз на базе Raspberry Pi с использованием пакета SDK для Azure IoT Python. Этот пример еще не завершен, но я думаю, вам могут пригодиться два файла ...

Основной проект 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

Этот сценарий и связанный класс используют пакет SDK Azure IoT для устройств для чтения устройств в файле конфигурации и их подготовки в Центре Интернета вещей Azure. Текущий код использует прозрачный подход и использует идентификационные данные устройства BLE для подготовки и выглядит как реальное устройство в Iot Central.

В течение следующих нескольких недель я продолжу добавлять другие сценарии, такие как Opaque и Protocol Translation (что похоже на интересующий вас сценарий).

Возможно, вы захотите рассмотреть свои различия в оттенках, смоделировав местоположения и разделив значения телеметрии (в отличие от построения MAC-адресов), но вы столкнетесь с некоторой хрупкостью в управлении версиями при добавлении или попытке удалить лампочки.

Я рекомендую обозначить перевод и связать каждую лампочку с моделью. Используйте группы устройств для сводных представлений. Затем свойства устройства, потому что они полезны для определения местоположения и т. Д.

person Larouex    schedule 24.07.2020