Как получить значение двойника старого устройства из события TwinChangeEvents в Microsoft Azure IoT Hub?

Я создал маршрут для TwinChangeEvents на портале Microsoft Azure, и я могу Получать сообщения от устройства к облаку при изменении двойника устройства. Но сообщение содержит только новое двойное значение устройства. Мне нужно было старое значение для анализа, чтобы мне не приходилось анализировать все устройства.

Есть ли способ получить старое значение?


person Yoseph    schedule 20.07.2017    source источник
comment
Вы можете открыть проблему в репозитории azure-iot-sdk-node .   -  person Rita Han    schedule 21.07.2017
comment
Спасибо Рите Хан - MSFT! Я создал проблему: github.com/Azure/azure-iot-sdk -node / issues / 64   -  person Yoseph    schedule 21.07.2017


Ответы (1)


Прежде всего, я хотел бы отметить, что реализация двойных уведомлений об изменениях и TwinChangeEvents в Azure IoT Hub генерировала событие каждый раз, когда вызывалась служба для обновления двойного состояния устройства. , не имеет значения, осталось ли двойное состояние устройства прежним (без изменений). Результатом такого поведения является новый номер версии для того же двойного состояния устройства.

Следующие фрагменты экрана показывают эту ситуацию:

  1. Вызов REST API для обновления двойного состояния, вы можете отправить его несколько раз:  PatchDeviceTwin

  2. Фрагмент экрана сообщения TwinChangeEvents - версия 37:  Version37

  3. Фрагмент экрана сообщения TwinChangeEvents - версия 38:  Version38

Как видите, указанное выше двойное состояние такое же (без изменений), но для каждого вызова (шаг 1) у нас есть новый номер версии.

Похоже, это ошибка, когда уведомление об изменении двойника работает в случае, когда состояние двойника не было изменено. Другими словами, такого рода уведомления должны работать только при изменении состояния устройства. Исправление этой «ошибки» упростит логику в устройстве и за маршрутами Azure IoT Hub Routes.

Что ж, теперь я отвечу на ваш вопрос, как получить старое двойное состояние устройства.

Обратите внимание, что эта функция в настоящее время не реализована в Azure IoT Hub, но добавив несколько компонентов в инфраструктуру Azure IoT, вы можете решить эту проблему.

Вариант 1: - создание конвейера потока TwinChangeEvents, см. следующий рисунок: TwinChangeEventsStreamPipeline Задание ASA может выполняться по горячему пути или в холодный путь, основанный на требованиях бизнес-модели. Обратите внимание, что этот вариант требует дополнительных затрат (~ 120 долларов в месяц) для объектов Capture и ASA Job.

Вариант 2: - создание репозитория TwinChangeEvents (хранилище), см. следующий рисунок:

TwinChangeEventsRepository

Функция Azure запускается двойными событиями изменения, которые отвечают за их сопоставление со строковым объектом хранилища таблиц Azure. После этого конкретное состояние двойника можно запросить из таблицы на основе значения, версии, отметки времени и т. Д.

person Roman Kiss    schedule 23.07.2017