Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
работа_с_mqtt [2021/09/25 03:49] 65.21.180.7 старая версия восстановлена (2021/09/23 03:25) |
работа_с_mqtt [2023/10/24 18:43] admin [Команды и инструкции, которые могут быть переданы в Payload] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | MQTT является, | + | MQTT является, |
- | Работа контроллера LightHub полностью управляется при помощи данного интерфейса | + | Работа контроллера LightHub полностью управляется при помощи данного протокола. |
- | Поподробнее про MQTT можно прочитать [[https:// | + | |
- | Теперь о том, как | + | Прочитать про MQTT, а также, ознакомиться с основными |
- | Имеются два типа топиков - командные и статусные | + | Именно MQTT является протоколом для интеграции контроллера в системы Умного Дома |
- | По командным - обьекты контроллера получают инструкции | + | |
- | Также, в статусные топики направляется информация если состояние обьекта контроллера изменилось в связи с локальными процессами (например, | + | Теперь о том, как MQTT применяется в данном контроллере: |
+ | |||
+ | В общем виде, формат топика выглядит следующим образом: | ||
+ | |||
+ | < | ||
+ | root/ | ||
+ | </ | ||
+ | |||
+ | * **root**: это значение имеет смысл, если один брокер обслуживает много абсолютно независимых систем или пользователей. По умолчанию - myhome | ||
+ | |||
+ | * **id-устройства** - индивидуальное Имя контроллера, задаваемое в его конфигурации (к одному брокеру может быть подключен только один контроллер | ||
+ | |||
+ | * **bcst** - групповое (широковещательное) имя контроллера. Может быть одинаковое у многих контроллеров, | ||
+ | |||
+ | * **item** - устройство или группа устройств, | ||
+ | |||
+ | * **subitem** - значение, | ||
+ | Для адресной светодиодной ленты: 10-20 будет значить, | ||
+ | Также, если в качестве subitem указать значения из набора ON, | ||
+ | |||
+ | * **suffix** - параметр определяет какое именно свойство объекта меняется. Может быть одним из стандартного набора **cmd,set** или значением, | ||
+ | |||
+ | Имеются три типа | ||
+ | |||
+ | По командным - объекты контроллера получают инструкции извне, интерпретируют их, выполняют и изменившийся статус направляют в статусные топики. | ||
+ | |||
+ | Программы удаленного доступа используют статусные топики для отображения актуального текущего состояния устройств в своем интерфейсе, | ||
+ | |||
+ | Также, в статусные топики направляется информация если состояние объекта контроллера изменилось в связи с локальными процессами (например, | ||
+ | |||
+ | Служебные топики используются для нужд, напрямую не связанных с управлением устройствами. Предназначены для удаленного управления контроллером, | ||
+ | |||
+ | ===== Пример настройки MQTT в JSON конфигурации: | ||
- | Пример настройки MQTT в JSON конфигурации: | ||
< | < | ||
" | " | ||
Строка 18: | Строка 47: | ||
Настройка mqtt задает (в порядке следования): | Настройка mqtt задает (в порядке следования): | ||
- | * Имя контроллера (к одному брокеру может быть подключен только один контроллер с конкретным именем. Если подключается второй с тем же именем - первый отключается) | + | |
- | * IP или | + | |
- | * Порт (по умолчанию, 1883) | + | |
- | * Имя | + | |
- | Настройка topics позволяет определить как формируются MQTT топики у данного контроллера | + | * IP или доменное имя брокера |
+ | * Порт (по умолчанию, | ||
+ | * Имя пользователя и пароль (по умолчанию, | ||
+ | |||
+ | ===== MQTT топики ===== | ||
+ | |||
+ | Настройка topics | ||
В данном примере: | В данном примере: | ||
- | * Командные топики: myhome/ | + | **Командные топики |
- | * Статусный топик: myhome/ | + | |
- | (Именно это соответствует настройкам по-умолчанию) | ||
- | Зачем два командных топика: | + | * myhome/ |
- | Через индивидуальный, | + | |
+ | * myhome/ | ||
+ | |||
+ | * myhome/ | ||
+ | |||
+ | |||
+ | |||
+ | **Командные топики (индивидуальные): | ||
+ | |||
+ | |||
+ | * myhome/ | ||
+ | |||
+ | * myhome/ | ||
+ | |||
+ | * myhome/ | ||
+ | |||
+ | * myhome/ | ||
+ | |||
+ | |||
+ | **Статусные топики: | ||
+ | |||
+ | |||
+ | * myhome/ | ||
+ | |||
+ | * myhome/ | ||
+ | |||
+ | * myhome/ | ||
+ | |||
+ | |||
+ | (Именно это соответствует настройкам по-умолчанию, | ||
+ | |||
+ | Зачем два типа командных топиков: | ||
+ | Через индивидуальный, | ||
+ | |||
+ | В старой версии контроллера, | ||
+ | В данный //совмещенный// топик можно отправлять как команды ON OFF HALT REST и прочие (см. ниже), так и установки канала (яркость, | ||
+ | Отличительная особенность - запись в такой совмещенный топик ненулевого значения включает канал, запись нулевого - выключает канал; | ||
+ | Топики данного типа используются для интеграции с системой OpenHab | ||
+ | |||
+ | **Внимание, | ||
+ | |||
+ | Топики с суффиксом /set и /hsv оперируют значениями 0..255 для настройки яркости/ | ||
+ | |||
+ | |||
+ | ===== Суффиксы ===== | ||
+ | |||
+ | В последних версиях введено понятие " | ||
+ | |||
+ | В первую очередь, | ||
+ | |||
+ | Использование их позволяет полностью разнести логику подачи команд каналу и логику установки параметров канала | ||
+ | Например, | ||
+ | |||
+ | |||
+ | Кроме окончаний /cmd и /set возможны окончания, | ||
+ | например, | ||
+ | |||
+ | Кондиционер: | ||
+ | |||
+ | * /fan (значения HIGH, MEDIUM, LOW) | ||
+ | |||
+ | * /mode | ||
+ | |||
+ | * /lock (ON,OFF) | ||
+ | |||
+ | * /swing (ON,OFF) | ||
+ | |||
+ | * / | ||
+ | |||
+ | Цветное освещение: | ||
+ | |||
+ | * /hue - цвет. Шкала 0-365 | ||
+ | |||
+ | * /sat - насыщенность цвета. 0 - белый, 100 - максимально насыщенный | ||
+ | |||
+ | * /hsv - цвет в нотации hue, | ||
+ | |||
+ | * /rgb - Цвет в нотации RGB или RGBW. (3 или 4 цифры, разделенные запятыми). В отличии от HSV нотации, | ||
+ | |||
+ | ===== Служебные топики ===== | ||
LightHub (во многом) руководствуется конвенцией [[https:// | LightHub (во многом) руководствуется конвенцией [[https:// | ||
Строка 39: | Строка 148: | ||
В частности, | В частности, | ||
- | Важные для понимания моменты: | + | В командный топик $command (например, |
+ | |||
+ | ===== Важные для понимания моменты | ||
При старте контроллер сам подписывается на свои статусные топики на период 5 секунд. Таким образом, | При старте контроллер сам подписывается на свои статусные топики на период 5 секунд. Таким образом, | ||
Строка 46: | Строка 158: | ||
Например, | Например, | ||
- | Базовый набор команд (совместим с OpenHab): | + | ===== Команды и инструкции, |
+ | |||
+ | === Базовый набор команд (совместим с OpenHab):=== | ||
+ | |||
+ | * ON - Включить канал. Если сохранились предыдущие значения (яркость, | ||
+ | |||
+ | * OFF - Выключить канал | ||
+ | |||
+ | * <Numeric value 0..100 или 0..255> - Задает яркость для света (с сохранением цвета), | ||
+ | |||
+ | * <Numeric 0..365>,< | ||
+ | |||
+ | * <Numeric 0..365>,< | ||
+ | |||
+ | |||
+ | === Расширенный набор команд (также, | ||
+ | |||
+ | * HALT - выключить канал(группу) | ||
+ | |||
+ | * REST - включить канал(группу), | ||
+ | |||
+ | * XON - включить канал (группу) (если это не запрещено командой DISABLE). Также см. [[работа_с_mqtt# | ||
+ | |||
+ | * XOFF - выключить (но только при условии что канал был включен командой XON) - идеально для временного включения освещения по детектору движения | ||
+ | |||
+ | * TOGGLE: Переключать из состояния ON в OFF. Если применяется для группы - то принимается что если хоть один канал, входящий в группу включен - она активна и при получении TOGGLE произойдет выключение того, что включено. Последующая команда TOGGLE включит все каналы, | ||
+ | |||
+ | * #AABBCC: Color notation in RGB - Home Remote app color picker compatible | ||
+ | |||
+ | * %-N : Уменьшить значение (яркость, | ||
+ | |||
+ | * %+N : Увеличить значение (яркость, | ||
+ | |||
+ | ==== Команды, | ||
+ | |||
+ | * AUTO | ||
+ | |||
+ | * HEAT | ||
+ | |||
+ | * COOL | ||
+ | |||
+ | * FAN_ONLY | ||
+ | |||
+ | * DRY | ||
+ | |||
+ | * HIGH | ||
+ | |||
+ | * MED | ||
+ | |||
+ | * LOW | ||
+ | |||
+ | Соответственно, | ||
+ | |||
+ | Температура - в топик " | ||
+ | |||
+ | Соответственно, | ||
+ | |||
+ | * Режим работы: | ||
+ | |||
+ | * Установленная температура: | ||
+ | |||
+ | * Текущая температура: | ||
+ | |||
+ | |||
+ | |||
+ | ==== Прочие команды: | ||
+ | |||
+ | * ENABLE для PID регулятора - разрешить авторегулирование, | ||
+ | |||
+ | * DISABLE для PID регулятора - запретить авторегулирование, | ||
+ | |||
+ | * FREEZE - заблокировать канал, после этого он игнорирует поступающие команды | ||
+ | |||
+ | * UNFREEZE - разблокировать канал | ||
+ | |||
+ | Последние 4 команды передаются на статусный топик MQTT с суффиксом /ctrl вместо /cmd как для прочих команд. При рестарте контроллера, | ||
+ | |||
+ | * INCREASE N - увеличить значение канала на N (аналог %N) | ||
+ | |||
+ | * DECREASE N - уменьшить значение канала на N (аналог %-N) | ||
+ | |||
+ | |||
+ | ==== Команды с задержкой ==== | ||
+ | |||
+ | Команды " | ||
+ | |||
+ | |||
+ | ==== Команды, | ||
+ | |||
+ | Если после команды указать целое положительное число, то команда будет выполнена, | ||
- | * 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/ | + | * " |
- | * <Numeric 0..365>,<Numeric 0..100>,<Numeric 0..100> - Color notation in Hue,Saturation,Volume | + | * " |
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
- | Расширенный набор комманд: | + | ==== Команды, с криптографической подписью |
- | * HALT - turn channel off | + | В том случае, если надо гарантировать, что, даже получив доступ к локальной сети, MQTT брокеру или HTTP API, потенциальный злоумышленник не сможет выполнить критичную |
- | * REST - turn channel ON only if it was turned off by HALT command before | + | |
- | * XON - включить канал | + | |
- | * XOFF - выключить | + | |
- | * 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 | + | |
+ | подробное описание тут [[криптоподпись_команды]] | ||