-
Notifications
You must be signed in to change notification settings - Fork 17
http
Начиная с версии 0.3.1
интеграция стала поддерживать обратную связь без mqtt, используя http-сервер. Для этого в настройках
интеграции необходимо снять галку с использовать mqtt
Внимание! Не используйте srv loop
на контроллере, это может приводить к ложным срабатываниям входов. Вместо srv loop
интеграция будет сама обновлять все состояния портов с заданным интервалом
В самой меге необходимо прописать настройки:
srv: "192.168.1.4:8123" # ip:port вашего HA
script: "mega" # это api интеграции, к которому будет обращаться контроллер
Контроллер ожидает ответ от сервера, который может быть сценарием (по умолчанию интеграция отвечает d
, что означает
запустить то что прописано в поле act в настройках порта).
Внимание! По умолчанию в настройках интеграции стоит опция имитация ответа
- это означает, что сервер вместо ответа
делает запрос к меге с необходимой командой - это вынужденная мера, тк встроенный в HA сервер разбивает пакет на части,
а контроллер не работает с такими пакетами. В целом, имитация ответа
полностью закрывает эту проблему, единственный
недостаток - это небольшая задержка в ответе.
Для максимальной скорости реакции, можно воспользоваться аддоном, подробности в документации аддона.
Если у вас не HA OS, то вы можете настроить nginx самостоятельно, используя эту конфигурацию как пример.
Поддерживаются шаблоны HA. Это может быть использовано, например, для запоминания яркости (тк сам контроллер этого не умеет). В шаблоне можно использовать параметры, которые передает контроллер (m, click, pt, mdid, mega_id)
Примеры:
mega:
mega1: # id меги, который вы сами придумываете в конфиге в UI
# начиная с v0.4.1 можно указать стандартный респонс-шаблон (и это лучше чем force_d)
# в примере ниже d будет отправлено только при условии что m=0 или 1 (что исключает отправку d на долгих нажатиях)
def_response: >-
{% if m in [0, 1] %}d{% endif %}
4: # номер порта, с которого ожидаются события
response_template: "5:2" # простейший пример без шаблона. Каждый раз когда будет приходить сообщение на этот порт,
# будем менять состояние на противоположное
5:
# пример с использованием шаблона, порт 1 будет выключен если он сейчас включен и включен с последней сохраненной
# яркостью если он сейчас выключен
response_template: >-
{% if is_state('light.some_port_1', 'on') %}
1:0
{% else %}
1:{{state_attr('light.some_port_1', 'brightness')}}
{% endif %}
6:
# в шаблон так же передаются все параметры, которые передает контроллер (pt, cnt, m, click)
# эти параметры можно использовать в условиях или непосредственно в шаблоне в виде {{pt}}
response_template: >-
{% if m==2 %}1:0{% else %}d{% endif %}