# в шаблон так же передаются все параметры, которые передает контроллер (pt, cnt, m, click)
# эти параметры можно использовать в условиях или непосредственно в шаблоне в виде {{pt}}
response_template:>-
{% if m==2 %}1:0{% else %}d{% endif %}
```
Начиная с версии v0.3.17 ответ можно слать так же и в режиме MQTT. Аналогично, темплейт должен возвращать готовую команду
такую же как требует команда cmd, так же можно использовать d, но d не отправляется по умолчанию, это сделано чтобы не
сломать текущую логику у пользователей предыдущих версий. Чтобы включить для всех входов в режиме mqtt отправку команды
d необходимо в конфиге прописать следующее:
```yaml
mega:
mega1:
force_d:true
```
**Внимание!** Нельзя использовать чекбокс напротив поля act если планируется использовать ответ сервера - у вас и
сработает act и команда от сервера, а вслучае ответа d сработает act два раза.
Так же следует понимать, что это не "ответ" в нормальном понимании - это вызов следом за полученным mqtt-сообщением
http команды такого вида `http://megaurl/?pt=port&cmd=rendered_template`, где `port` - это номер порта сработавшего входа,
а`cmd` - текст команды, который получен из темплейта. Те это имитация ответа. У этого подхода есть минус - задержка в
исполнении будет значительно выше чем при ответе в режиме http, но тем не менее эта задержка скорее всего не будет
сильно заметна.
## binary_sensor и события
Входы будут доступны как binary_sensor, а так же в виде событий `mega.sensor` и `mega.binary`.
Для корректной работы binary_sensor имеет смысл использовать режим P&R, для остальных режимов - лучше пользоваться
событиями.
События можно использовать в автоматизациях, например так:
```yaml
# Пример события с полями как есть прямо из меги
- alias:some double click
trigger:
- platform:event
event_type:mega.sensor
event_data:
pt:1
click:2
action:
- service:light.toggle
entity_id:light.some_light
```
События могут содержать следующие поля:
-`mega_id`: id как в конфиге HA
-`pt`: номер порта
-`cnt`: счетчик срабатываний
-`mdid`: if как в конфиге контроллера
-`click`: клик (подробнее в документации меги)
-`value`: текущее значение (только для mqtt)
-`port`: номер порта
Начиная с версии 0.3.7 появилось так же событие типа `mega.binary`:
```yaml
# Пример события с полями как есть прямо из меги
- alias:some long click
trigger:
- platform:event
event_type:mega.binary
event_data:
entity_id:binary_sensor.some_id
type:long
action:
- service:light.toggle
entity_id:light.some_light
```
Возможные варианты поля `type`:
-`long`: долгое нажатие
-`release`: размыкание (с гарантией** что не было долгого нажатия)
-`long_release`: размыкание после долгого нажатия
-`press`: замыкание
-`single`: одинарный клик (в режиме кликов)
-`double`: двойной клик
**гарантия есть только при использовании http-метода синхронизации, mqtt не гарантирует порядок доставки сообщений, хотя
маловероятно, что порядок будет нарушен, но все же сам протокол не дает таких гарантий.
Чтобы понять, какие события происходят, лучше всего воспользоваться панелью разработчика и подписаться
на вкладке события на событие `mega.sensor`, понажимать кнопки.
## Сервисы
Все сервисы доступны в меню разработчика с описанием и примерами использования
```yaml
mega.save:
description:Сохраняет текущее состояние портов (?cmd=s)
fields:
mega_id:
description:ID меги, можно оставить пустым, тогда будут сохранены все зарегистрированные меги
example:"mega"
mega.get_port:
description:Запросить текущий статус порта (или всех)
fields:
mega_id:
description:ID меги, можно оставить пустым, тогда будут порты всех зарегистрированных мег
example:"mega"
port:
description:Номер порта (если не заполнять, будут запрошены все порты сразу)
example:1
mega.run_cmd:
description:Выполнить любую произвольную команду
fields:
mega_id:
description:ID меги
example:"mega"
port:
description:Номер порта (это не порт, которым мы управляем, а порт с которого шлем команду)
example:1
cmd:
description:Любая поддерживаемая мегой команда
example:"1:0"
```
## Отладка
Интеграция находится в активной разработке, при возникновении проблем [заводите issue](https://github.com/andvikt/mega_hacs/issues/new/choose)
Просьба прикладывать детальный лог, который можно включить в конфиге так:
```yaml
logger:
default:info
logs:
custom_components.mega:debug
```
#### Отладка ответов http-сервера
Для отладки ответов сервера можно самим имитировать запросы контроллера, если у вас есть доступ к консоли
HA:
```shell
curl -v -X GET 'http://localhost:8123/mega?pt=5&m=1'
```
Если доступа нет, нужно в файл конфигурации добавить ip, с которого вы хотите делать запросы, например:
```yaml
mega:
allow_hosts:
- 192.168.1.1
```
И тогда можно с локальной машины делать запросы на ваш сервер HA:
```shell
curl -v -X GET 'http://192.168.88.1.4:8123/mega?pt=5&m=1'
```
В ответ будет приходить либо `d`, либо скрипт, который вы настроили
в HomeAssistant, а так же обновить ваш контроллер до последней версии, обновление прошивки MegaD можно делать прямо
из HA с помощью [аддона](https://github.com/andvikt/mega_addon.git)
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.