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

HTTP in

hacs_badge Donate

Начиная с версии 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 %}
Clone this wiki locally