Skip to content
Andrey edited this page Feb 17, 2021 · 11 revisions

HTTP in

Начиная с версии 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. Это может быть использовано, например, для запоминания яркости (тк сам контроллер этого не умеет). В шаблоне можно использовать параметры, которые передает контроллер (m, click, pt, mdid, mega_id)

Примеры:

mega:
  mega1: # id меги, который вы сами придумываете в конфиге в UI
    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 %}

Ответ в режиме MQTT

Начиная с версии v0.3.17 ответ можно слать так же и в режиме MQTT. Аналогично, темплейт должен возвращать готовую команду такую же как требует команда cmd, так же можно использовать d, но d не отправляется по умолчанию, это сделано чтобы не сломать текущую логику у пользователей предыдущих версий. Чтобы включить для всех входов в режиме mqtt отправку команды d необходимо в конфиге прописать следующее:

mega:
  mega1:
    force_d: true

Внимание! Нельзя использовать чекбокс напротив поля act если планируется использовать ответ сервера - у вас и сработает act и команда от сервера, а вслучае ответа d сработает act два раза.

Так же следует понимать, что это не "ответ" в нормальном понимании - это вызов следом за полученным mqtt-сообщением http команды такого вида http://megaurl/?pt=port&cmd=rendered_template, где port - это номер порта сработавшего входа, а cmd - текст команды, который получен из темплейта. Те это имитация ответа. У этого подхода есть минус - задержка в исполнении будет значительно выше чем при ответе в режиме http, но тем не менее эта задержка скорее всего не будет сильно заметна.

Clone this wiki locally