RU

MQTT

Модель

🚩

Задача: Предположим, у вас есть чайник, который передает температуру воды в градусах Фаренгейта. Вы хотите включать и выключать его по команде в зависимости от температуры. Согласно прошивке контроллера чайника, он работает по протоколу MQTT и

  • отправляет данные о температуре в пакетах с топиком kettle/temperature
  • включается при поступлении пакета с топиком kettle/actions и данными {"on" : true}
  • выключается при поступлении пакета с топиком kettle/actions данными {"on" : false}

Для подключения чайника к платформе создайте для него модель MQTT.

В шаблонной модели есть несколько параметров. Удалите лишние параметры и оставьте только температуру. В параметре Температура задайте необходимый топик в разделе Источник и смените единицу измерения.

Подробнее о формировании аргументов MQTT >>>

Также в шаблонной модели есть две команды, отредактируйте их:

  1. смените идентификатор на более подходящий по смыслу;

  2. смените имя, с которым команда отображается в интерфейсе;

  3. укажите топик и данные согласно тем, которые ожидает принять устройство.

Подробнее о формировании действий MQTT >>>

Посмотрите превью объекта с моделью, которую вы создали, нажав кнопку Показать превью.

При желании выберите иконку для отображения объекта на карте или загрузите свое изображение.

Объект

Создайте объект для вашего чайника. Выберите модель, которую только что создали. Затем введите идентификатор, который используется в качестве ClientID устройства при подключении по MQTT. Укажите имя объекта. Для дополнительной защиты доступа к объекту в разделе MQTT аутентификация задайте логин и пароль.

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

После сохранения откроется инструкция по настройке устройства на платформу, а иконка сразу отобразится на карте в выбранном месте.

Вы можете добавить еще один объект - например, чайник соседа. Тогда вам следует проделать те же самые действия, но задать другой уникальный идентификатор и имя. Модель может остаться той же, если устройства идентичные.

Подключение

Для подключения устройств к платформе в настройках прошивки укажите

  • хост dev.rightech.io
  • порт 1883 (8883 при подключении по TLS)

Если вы задавали логин и пароль, не забудьте также их указать.

Убедитесь, что после сохранения настроек данные присылаются и отображаются в интерфейсе.

Отправьте команды и проверьте, что подключенные устройства на них реагируют.

Обработчики

🚩

Задача: В данном примере температура воды в чайнике присылается в градусах Фаренгейта. Однако для того чтобы оценить полученные значения и сформировать правильные значения уставки в сценарии автоматизации, гораздо удобнее оперировать с величинами в градусах Цельсия. В таком случае вы можете сделать обработчик, который переводит значения из одной единицы измерения в другую согласно формуле.

Создайте новый обработчик.

В качестве входного аргумента функция принимает температуру в градусах Фаренгейта, в качестве выходного - в градусах Цельсия. За преобразование отвечает соответствующая формула. Проверьте правильность работы обработчика в режиме тестирования.

Добавьте обработчик на все необходимые объекты - в данном примере это будут два чайника.

Так как у них одинаковая модель, то установите соответствие для аргументов модели и параметров обработчика один раз. Если бы модели отличались, то было бы необходимо соотнести параметры для каждой модели.

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

Добавьте новый аргумент в качестве выходного параметра обработчика.

Обработка пакетов данных от устройства начинается автоматически после заполнения всех параметров. Перейдите в объекты и проверьте, что рассчитанные значения появляются в интерфейсе.

Для удобства скройте отображение параметра с градусами Фаренгейта.

Таким образом, при получении новых значений вы будете видеть только нужные величины.

Логика

Поддержание горячей температуры воды в чайнике

🚩

Задача: Предположим, перед вами стоит задача поддержания постоянной температуры воды в чайнике выше 80 градусов. Если температура опускается ниже, чайник нужно включить. Как только температура поднимается выше 99 градусов, чайник нужно выключить.

Такую задачу легко реализовать автоматом из двух состояний: чайник включен и чайник выключен. Переходы между этими состояниями будут происходить при получении соответствующих значений температуры воды.

Создайте новый автомат.

Так как по логике работы сценария автоматизации предусматривается цикличный контроль за температурой, автомат будет бесконечным, конечное состояние можно отодвинуть из поля зрения и не использовать. Создайте два состояния автомата.

Переходы между состояниями будут происходить при получении определенных данных, значит события переходов будут одинаковые - Получены данные, а условия разные.

Теперь определите, какие действия должны выполняться в состояниях. Во-первых, включение и выключение чайника.

Во-вторых, для дополнительной индикации в интерфейсе объекта можно изменять статус объекта.

Автомат готов. Выберите объекты и запустите его.

Теперь при поступлении соответствующей температуры отправляется команда на включение/выключение чайника.

Также статус объекта меняется на актуальный.

Включение чайника по команде, только если вода остыла

🚩

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

Такую задачу также легко реализовать автоматом. Он будет содержать три состояния: проверка температуры, низкая температура и высокая температура. Переходы между этими состояниями будут происходить при получении соответствующих значений температуры воды.

Создайте новый автомат.

В данном случае автомат будет конечным. Дополнительно к конечному состоянию создайте три состояния.

Переход из состояния проверки температуры произойдет при получении определенных данных, значит события переходов будут одинаковые - Получены данные, а условия разные.

💡

Подсказка: Используйте событие Мгновенный переход, а не Получены данные, если хотите чтобы проверка условий была выполнена для текущих значений без ожидания получения нового пакета данных.

После выполнения определенных действий в одном из двух состояний нужно перейти в конечное состояние. Для этого подойдет событие Мгновенный переход. В данном случае проверка каких-либо условий уже не нужна.

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

Автомат готов. Перейдите в модель устройств, чтобы создать команду, по которой он будет запускаться. В разделе Выполнить выберите автомат, который только что сделали.

Перейдите в объект чайника, на котором хотите выполнить эту команду. Отправленная команда будет считаться выполненной только тогда, когда автомат завершит работу.

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

Метки

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

Создайте две метки.

После добавления метки на объект кликните на нее - в новой вкладке браузера откроется ссылка, которую вы указали.