Прежде всего, я хотел бы отметить, что реализация двойных уведомлений об изменениях и TwinChangeEvents в Azure IoT Hub генерировала событие каждый раз, когда вызывалась служба для обновления двойного состояния устройства. , не имеет значения, осталось ли двойное состояние устройства прежним (без изменений). Результатом такого поведения является новый номер версии для того же двойного состояния устройства.
Следующие фрагменты экрана показывают эту ситуацию:
Вызов REST API для обновления двойного состояния, вы можете отправить его несколько раз:
Фрагмент экрана сообщения TwinChangeEvents - версия 37:
Фрагмент экрана сообщения TwinChangeEvents - версия 38:
Как видите, указанное выше двойное состояние такое же (без изменений), но для каждого вызова (шаг 1) у нас есть новый номер версии.
Похоже, это ошибка, когда уведомление об изменении двойника работает в случае, когда состояние двойника не было изменено. Другими словами, такого рода уведомления должны работать только при изменении состояния устройства. Исправление этой «ошибки» упростит логику в устройстве и за маршрутами Azure IoT Hub Routes.
Что ж, теперь я отвечу на ваш вопрос, как получить старое двойное состояние устройства.
Обратите внимание, что эта функция в настоящее время не реализована в Azure IoT Hub, но добавив несколько компонентов в инфраструктуру Azure IoT, вы можете решить эту проблему.
Вариант 1: - создание конвейера потока TwinChangeEvents, см. следующий рисунок: Задание ASA может выполняться по горячему пути или в холодный путь, основанный на требованиях бизнес-модели. Обратите внимание, что этот вариант требует дополнительных затрат (~ 120 долларов в месяц) для объектов Capture и ASA Job.
Вариант 2: - создание репозитория TwinChangeEvents (хранилище), см. следующий рисунок:
Функция Azure запускается двойными событиями изменения, которые отвечают за их сопоставление со строковым объектом хранилища таблиц Azure. После этого конкретное состояние двойника можно запросить из таблицы на основе значения, версии, отметки времени и т. Д.
person
Roman Kiss
schedule
23.07.2017