Инструменты пользователя

Инструменты сайта


работа_с_mqtt

MQTT является, пожалуй, самым общим и распространенным интерфейсом в IoT Работа контроллера LightHub полностью управляется при помощи данного интерфейса Поподробнее про MQTT можно прочитать тут

Теперь о том, как это применяется в данном контроллере:

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

Также, в статусные топики направляется информация если состояние обьекта контроллера изменилось в связи с локальными процессами (например, обьект переключен при помощи локальных входов)

Пример настройки MQTT в JSON конфигурации:

 "mqtt":["LHexample03","test.mosquitto.org",1883,"user","password"],
 "topics":{"root":"myhome","bcst":"in","out":"s_out"}

Настройка mqtt задает (в порядке следования):

  • Имя контроллера (к одному брокеру может быть подключен только один контроллер с конкретным именем. Если подключается второй с тем же именем - первый отключается)
  • IP или доменное имя брокера
  • Порт (по умолчанию, 1883)
  • Имя пользователя и пароль (по умолчанию, отсутствуют)

Настройка topics позволяет определить как формируются MQTT топики у данного контроллера

В данном примере:

  • Командные топики: myhome/in/<имя item> и myhome/LHexample03/<имя item>
  • Статусный топик: myhome/s_out/<имя item>

(Именно это соответствует настройкам по-умолчанию)

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

LightHub (во многом) руководствуется конвенцией homie для формирования структуры топиков MQTT. (Пока еще не полная поддержка, но основные моменты соблюдены)

В частности, контроллер использует топик $state, чтобы отражать текущее состояние («ready» или «disconnected»), а в топик $stats, раз в 30 секунд передает uptime и размер доступной памяти

Важные для понимания моменты: При старте контроллер сам подписывается на свои статусные топики на период 5 секунд. Таким образом, он получает от MQTT брокера последнее состояние всех своих обьектов (items) и восстанавливает их значения на момент до старта

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

Например, контроллер получил команду «ON» для RGB канала. Он восстанавливает из памяти последнее значения цвета, насыщенности и яркости (HSV) и в статусный топик передает уже эти значения

Базовый набор команд (совместим с OpenHab):

  • ON - Turn channel ON. If some previous channel state is stored (Color, Volume) - it will be restored back. Else channel will be turned on with default values (White colour/100% volume in most cases)
  • OFF - just turn channel off
  • <Numeric value 0..100> - Volume for Dimmer/PWM/FM/Thermostate etc. channels
  • <Numeric 0..365>,<Numeric 0..100>,<Numeric 0..100> - Color notation in Hue,Saturation,Volume

Расширенный набор комманд:

  • HALT - turn channel off
  • REST - turn channel ON only if it was turned off by HALT command before
  • XON - включить канал
  • XOFF - выключить (но только при условии что включен он был командой XON) - идеально для использования совместно с детекторами движения
  • TOGGLE: Toggle ON and OFF state. For group channels - considering the Group Channel in ON state if at least one member of group is active
  • #AABBCC: Color notation in RGB - Home Remote color picker compatible
работа_с_mqtt.txt · Последние изменения: 2019/05/05 21:10 — admin