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

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


работа_с_mqtt

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
работа_с_mqtt [2021/09/25 03:49]
65.21.180.7 старая версия восстановлена (2021/09/23 03:27)
работа_с_mqtt [2023/10/24 18:43] (текущий)
admin [Команды и инструкции, которые могут быть переданы в Payload]
Строка 1: Строка 1:
 MQTT является, пожалуй, самым общим и распространенным протоколом в IoT MQTT является, пожалуй, самым общим и распространенным протоколом в IoT
-Работа контроллера LightHub полностью управляется при помощи данного протокола +Работа контроллера LightHub полностью управляется при помощи данного протокола
-Поподробнее про MQTT можно прочитать [[https://www.lazyhome.ru/index.php/featurerequest/15-overview/32-mqtt|тут]]+ 
 +Прочитать про MQTT, а также, ознакомиться с основными принципами протокола и понятиями, которые используются далее, можно [[https://www.lazyhome.ru/index.php/featurerequest/15-overview/32-mqtt|тут]] 
 + 
 +Именно MQTT является протоколом для интеграции контроллера в системы Умного Дома под управлением таких открытых систем автоматизации как [[интеграция_с_homeassistant|HomeAsistant]], [[openhab|OpenHab]], IOBroker, NodeRed и прочих. (по ссылками приведены примеры конфигураций систем Умного дома)
  
 Теперь о том, как MQTT применяется в данном контроллере: Теперь о том, как MQTT применяется в данном контроллере:
Строка 44: Строка 47:
 Настройка mqtt задает (в порядке следования): Настройка mqtt задает (в порядке следования):
  
-* Имя контроллера (к одному брокеру может быть подключен только один контроллер с конкретным именем. Если подключается второй с тем же именем - первый отключается). В данном примере, используется имя **LHexample03** +  * Имя контроллера (к одному брокеру может быть подключен только один контроллер с конкретным именем. Если подключается второй с тем же именем - первый отключается). В данном примере, используется имя **LHexample03** 
  
-* IP или доменное имя брокера +  * IP или доменное имя брокера 
-* Порт (по умолчанию, 1883) +  * Порт (по умолчанию, 1883) 
-* Имя пользователя и пароль (по умолчанию, отсутствуют)+  * Имя пользователя и пароль (по умолчанию, отсутствуют)
  
 ===== MQTT топики ===== ===== MQTT топики =====
Строка 59: Строка 62:
  
  
-* myhome/in/<имя item>+  * myhome/in/<имя item>
  
-* myhome/in/<имя item>/set+  * myhome/in/<имя item>/set
  
-* myhome/in/<имя item>/cmd+  * myhome/in/<имя item>/cmd
  
-* myhome/LHexample03/<имя item>/<иной специфичный для устройства суффикс> 
  
  
Строка 71: Строка 73:
  
  
-* myhome/LHexample03/<имя item>+  * myhome/LHexample03/<имя item>
  
-* myhome/LHexample03/<имя item>/set+  * myhome/LHexample03/<имя item>/set
  
-* myhome/LHexample03/<имя item>/cmd+  * myhome/LHexample03/<имя item>/cmd
  
-* myhome/LHexample03/<имя item>/<иной специфичный для устройства суффикс>+  * myhome/LHexample03/<имя item>/<иной специфичный для устройства суффикс>
  
  
Строка 83: Строка 85:
  
  
-* myhome/s_out/<имя item>+  * myhome/s_out/<имя item>
  
-* myhome/s_out/<имя item>/set+  * myhome/s_out/<имя item>/set
  
-* myhome/s_out/<имя item>/cmd+  * myhome/s_out/<имя item>/cmd
  
  
Строка 99: Строка 101:
 Отличительная особенность - запись в такой совмещенный топик ненулевого значения включает канал, запись нулевого - выключает канал; Отличительная особенность - запись в такой совмещенный топик ненулевого значения включает канал, запись нулевого - выключает канал;
 Топики данного типа используются для интеграции с системой OpenHab Топики данного типа используются для интеграции с системой OpenHab
 +
 +**Внимание, начиная с версии ПО 3.0.0 появилось различие:** 
 +
 +Топики с суффиксом /set и /hsv оперируют значениями 0..255 для настройки яркости/уровня PWM, одновременно с этим, в топиках без суффикса сохранена старая нотация 0..100 для совместимости с OpenHAB
 +
  
 ===== Суффиксы ===== ===== Суффиксы =====
Строка 107: Строка 114:
  
 Использование их позволяет полностью разнести логику подачи команд каналу и логику установки параметров канала Использование их позволяет полностью разнести логику подачи команд каналу и логику установки параметров канала
-Например, если канал диммера выключен, запись в топик с окончанием /set значения 60 не включит его, а задаст значение яркости 60%. Если следом отправить ON в топик с окончанием /cmd, диммер включится на заранее установленное значение 60% яркости. Данные топики крайне полезны для интеграции LightHub системами HomeAssistant, HomeBridge.+Например, если канал диммера выключен, запись в топик с окончанием /set значения 60 не включит его, а задаст значение яркости 60 (из 255). Если следом отправить ON в топик с окончанием /cmd, диммер включится на заранее установленное значение (из 255) яркости. Данные топики крайне полезны для интеграции LightHub системами HomeAssistant, HomeBridge.
  
  
Строка 115: Строка 122:
 Кондиционер:  Кондиционер: 
  
-* /fan (значения HIGH, MEDIUM, LOW)+  * /fan (значения HIGH, MEDIUM, LOW)
  
-* /mode +  * /mode 
  
-* /lock (ON,OFF)+  * /lock (ON,OFF)
  
-* /swing (ON,OFF)+  * /swing (ON,OFF)
  
-/quiet  (ON,OFF)+  * /quiet  (ON,OFF)
  
 Цветное освещение: Цветное освещение:
  
-* /hue - цвет. Шкала 0-365+  * /hue - цвет. Шкала 0-365
  
-* /sat - насыщенность цвета. 0 - белый, 100 - максимально насыщенный+  * /sat - насыщенность цвета. 0 - белый, 100 - максимально насыщенный
  
-* /hsv - цвет в нотации hue,saturation,volume (три параметра через запятую). Также, этот формат принимается по-умолчанию при записи в иные топики+  * /hsv - цвет в нотации hue,saturation,volume (три параметра через запятую). Также, этот формат принимается по-умолчанию при записи в иные топики
  
-* /rgb - Цвет в нотации RGB (#RRGGBB) - не рекомендованый вариант данная цветовая схема преобразуется в нотацию HSV для дальнейшего использования +  * /rgb - Цвет в нотации RGB или RGBW. (3  или 4 цифры, разделенные запятыми). В отличии от HSV нотации, формат не позволяет менять яркость канала путем передачи значения 0.255 в топик с окончанием /set. Но, как и в случае HSV, цвет сохраняется в MQTT брокере на случай перезапуска, работают команды ON, OFF, XON, XOFF, HALT, REST   
  
 ===== Служебные топики ===== ===== Служебные топики =====
Строка 140: Строка 147:
  
 В частности, контроллер использует топик $state, чтобы отражать текущее состояние ("ready" или "disconnected"), а в топик $stats, раз в 30 секунд  передает uptime и размер доступной памяти В частности, контроллер использует топик $state, чтобы отражать текущее состояние ("ready" или "disconnected"), а в топик $stats, раз в 30 секунд  передает uptime и размер доступной памяти
 +
 +В командный топик $command (например, myhome/controllerName/$command можно записывать CLI команды, и они будут выполняться таким же образом, как и в случае получения через последовательный порт (см. [[cli_интерфейс]])
  
 ===== Важные для понимания моменты ===== ===== Важные для понимания моменты =====
Строка 151: Строка 160:
 ===== Команды и инструкции, которые могут быть переданы в Payload ===== ===== Команды и инструкции, которые могут быть переданы в Payload =====
  
-Базовый набор команд (совместим с OpenHab):+=== Базовый набор команд (совместим с OpenHab):=== 
 + 
 +  * ON - Включить канал. Если сохранились предыдущие значения (яркость, температура и пр) то эти значения будут восстановлены. (Исключение - если яркость была менее 30% то будет установлена яркость 30%). Если предыдущие значения не найдены, будут заданы значения по-умолчанию: Для света - белый, яркостью 100%, для термостата - 20 градусов цельсия 
 + 
 +  * OFF - Выключить канал 
 + 
 +  * <Numeric value 0..100 или 0..255> - Задает яркость для света (с сохранением цвета), Температуру для термостата, уровень для PWM 
 + 
 +  * <Numeric 0..365>,<Numeric 0..100>,<Numeric 0..100 или 0..255> - Color notation in Hue,Saturation,Volume 
 + 
 +  * <Numeric 0..365>,<Numeric 0..100> - Color notation in Hue,Saturation. Яркость остается неизменной. Сделано для простой интеграции с HomeAssistant, в котором разнесены установки яркости и цвета 
 + 
 + 
 +=== Расширенный набор команд (также, данные команды работают для групп каналов):=== 
 + 
 +  * HALT - выключить канал(группу) 
 + 
 +  * REST - включить канал(группу), канал будет включен только если он был успешно выключен перед этим командой HALT (крайне удобно для Master выключателей. Контроллер умеет включать только то, что было выключено при уходе) 
 + 
 +  * XON - включить канал (группу) (если это не запрещено командой DISABLE). Также см. [[работа_с_mqtt#команды_включаемые_на_время]] 
 + 
 +  * XOFF - выключить (но только при условии что канал был включен командой XON) - идеально для временного включения освещения по детектору движения 
 + 
 +  * TOGGLE: Переключать из состояния ON в OFF. Если применяется для группы - то принимается что если хоть один канал, входящий в группу включен - она активна и при получении TOGGLE произойдет выключение того, что включено. Последующая команда TOGGLE включит все каналы, входящие в группу. 
 + 
 +  * #AABBCC: Color notation in RGB - Home Remote app color picker compatible 
 + 
 +  * %-N : Уменьшить значение (яркость, уровень и пр) канала на N пунктов 
 + 
 +  * %+N : Увеличить значение (яркость, уровень и пр) канала на N пунктов 
 + 
 +==== Команды, применимые для кондиционера и термостата:==== 
 + 
 +  * AUTO 
 + 
 +  * HEAT 
 + 
 +  * COOL 
 + 
 +  * FAN_ONLY 
 + 
 +  * DRY 
 + 
 +  * HIGH 
 + 
 +  * MED 
 + 
 +  * LOW 
 + 
 +Соответственно, данное значение может быть записано в командный топик термостата или кондиционера hbath1. Например: в "myhome/in/h_bath1/cmd" 
 + 
 +Температура - в топик "myhome/in/hbath1/set"
  
-* ON - Включить канал. Если сохранились предыдущие значения (яркость, температура и пр) то эти значения будут восстановлены. (Исключение - если яркость была менее 30% то будет установлена яркость 30%). Если предыдущие значения не найдены, будут заданы значения по-умолчанию: Для света - белый, яркостью 100%, для термостата - 20 градусов цельсия +Соответственнотермостат или кондиционер hbath1 свое состояние будет отражать в следующих статусных топиках:
-* OFF - Выключить канал +
-* <Numeric value 0..100> - Задает яркость для света (с сохранением цвета), Температуру для термостата, уровень для PWM +
-* <Numeric 0..365>,<Numeric 0..100>,<Numeric 0..100> - Color notation in Hue,Saturation,Volume +
-* <Numeric 0..365>,<Numeric 0..100> - Color notation in Hue,Saturation. Яркость остается неизменной. Сделано для простой интеграции с HomeAssistant, в котором разнесены установки яркости и цвета+
  
 +  * Режим работы: "myhome/s_out/hbath1/cmd"
  
-Расширенный набор команд (также, данные команды работают для групп каналов):+  * Установленная температура: "myhome/s_out/hbath1/set"
  
-HALT - выключить канал(группу) +  Текущая температура: "myhome/s_out/tbath1"
-* REST - включить канал(группу), канал будет включен только если он был успешно выключен перед этим командой HALT (крайне удобно для Master выключателей. Контроллер умеет включать только то, что было выключено при уходе+
-* XON - включить канал (группу) +
-* XOFF - выключить (но только при условии что канал был включен командой XON) - идеально для использования совместно с детекторами движения +
-* TOGGLE: Переключать из состояния ON в OFF. Если применяется для группы - то принимается что если хоть один канал, входящий в группу включен - она активна и при получении TOGGLE произойдет выключение того, что включено. Последующая команда TOGGLE включит все каналы, входящие в группу. +
-* #AABBCCColor notation in RGB - Home Remote app color picker compatible +
-* %-N : Уменьшить значение (яркость, уровень и пр) канала на N пунктов +
-* %+N : Увеличить значение (яркость, уровень и пр) канала на N пунктов+
  
-Команды, применимые для кондиционера и термостата: 
  
-* AUTO 
  
-* HEAT+==== Прочие команды: ====
  
-COOL+  ENABLE для PID регулятора - разрешить авторегулирование, для всех каналов - разрешить команду XON
  
-FAN_ONLY+  DISABLE для PID регулятора - запретить авторегулирование, для всех каналов - запретить команду XON. Использование данной пары команд очень удобно для разрешения - запрещения сценариев временного включения канала. Например временного включения света по датчику движения.
  
-DRY+  FREEZE - заблокировать канал, после этого он игнорирует поступающие команды
  
-HIGH+  UNFREEZE - разблокировать канал
  
-* MED+Последние 4 команды передаются на статусный топик MQTT с суффиксом /ctrl вместо /cmd как для прочих команд. При рестарте контроллера, эти значения, также, считываются из статусных топиков и восстанавливаются. Это позволяет запоминать комбинации состояний канала в брокере. Например, канал может быть одновременно заблокирован и включен
  
-LOW+  INCREASE N - увеличить значение канала на N (аналог %N) 
  
-Прочие варианты:+  * DECREASE N - уменьшить значение канала на N (аналог %-N) 
  
-* ENABLED - аналог ON 
  
-* DISABLED - аналог OFF+==== Команды с задержкой ====
  
-* TRUE - аналог ON+Команды "ON","OFF","REST","TOGGLE","HALT","XON","XOFF","INCREASE","DECREASE","ENABLE","DISABLE","UNFREEZE","FREEZE","AUTO","FAN_ONLY" могут быть выполнены с задержкой после получения, если вместо командный топик с суффиксом /cmd их направить в топик с суффиксом /del и в Payload после названия команды, через пробел, указать величину задержки в миллисекундах 
 + 
  
-* FALSE - аналог OFF+==== Команды, включаемые на время  ====
  
-* INCREASE+Если после команды указать целое положительное число, то команда будет выполнена, но спустя указанное время, будет выполнена обратная команда
  
-* DECREASE+Взаимно - Обратные Команды  
 +  "ON","OFF", 
 +  * "TOGGLE","TOGGLE" 
 +  * "REST","HALT", 
 +  * "XON","XOFF", 
 +  * "INCREASE","DECREASE", 
 +  * "ENABLE","DISABLE", 
 +  * "UNFREEZE","FREEZE"
  
  
 +==== Команды, с криптографической подписью  ====
  
 +В том случае, если надо гарантировать, что, даже получив доступ к локальной сети, MQTT брокеру или HTTP API, потенциальный злоумышленник не сможет выполнить критичную команду (например, открытие ворот), можно использовать механизм цифровой подписи команды. 
  
 +подробное описание тут [[криптоподпись_команды]]
  
работа_с_mqtt.1632530949.txt.gz · Последнее изменение: 2021/09/25 03:49 — 65.21.180.7