7.5 KiB
MegaD HomeAssistant integration
Интеграция с MegaD-2561
Основные особенности:
- Настройка в веб-интерфейсе + yaml
- Все порты автоматически добавляются как устройства (для обычных релейных выходов создается
light, для шим -lightс поддержкой яркости, для цифровых входовbinary_sensor, для датчиковsensor) - Возможность работы с несколькими megad
- Обратная связь по mqtt
- События на двойные/долгие нажатия
- Команды выполняются друг за другом без конкурентного доступа к ресурсам megad, это дает гарантии надежного исполнения большого кол-ва команд (например в сценах). Каждая следующая команда отправляется только после получения ответа о выполнении предыдущей.
Зависимости
Важно!! Перед использованием необходимо настроить интеграцию mqtt в HomeAssistant
Для максимальной совместимости необходимо обновить ваш контроллер до последней версии, тк были важные обновления в части mqtt
Установка
Рекомендованный способ с поддержкой обновлений - HACS:
HACS - Integrations - Explore, в поиске ищем MegaD.
Альтернативный способ установки:
# из папки с конфигом
wget -q -O - https://raw.githubusercontent.com/andvikt/mega_hacs/master/install.sh | bash -
Не забываем перезагрузить HA
Настройка
Настройки -> Интеграции -> Добавить интеграцию в поиске ищем mega
Все имеющиеся у вас порты будут настроены автоматически.
Вы можете менять названия, иконки и entity_id так же из интерфейса.
По умолчанию все порты настроенные как сенсоры запрашиваются с периодичностью, указанной в настройках. Если это значение выставить в 0, сканирование выполняться не будет.
Так же доступна кастомизация устройств с помощью yaml:
# configuration.yaml
mega:
hello: # ID меги, как в UI
7: # номер порта
domain: switch # тип устройства (switch или light, по умолчанию для цифровых выходов используется light)
invert: true # инвертировать или нет (по умолчанию false)
name: Насос # имя устройства
8:
# исключить из сканирования
skip: true
33:
# для датчиков можно кастомизировать только имя и unit_of_measurement
# для температуры и влажность unit определяется автоматически, для остальных юнита нет
name: какой-то датчик
unit_of_measurement:
hum: "%" # если датчиков несколько, то можно указывать юниты по их ключам
temp: "°C"
14:
name: какой-то датчик
unit_of_measurement: "°C" # если датчик один, то просто строчкой
События
binary_sensor срабатывает когда цифровой выход принимает значение 'ON', вместе с этим
он сохраняет полученные параметры от меги в аттрибутах. Атрибутами можно пользоваться так:
- alias: some double click
trigger:
- platform: state
entity_id: binary_sensor.mega_1
attribute: cnt
to: 2
action:
- service: light.toggle
entity_id: light.some_light
Однако, особенность state-триггера в атоматизациях HA в том, что он срабатывает только когда state меняется. Это может мешать, тк если вы повторно совершите двойной клик, стейт уже не поменяется, поэтому рекомендуется пользоваться event-триггером.
При каждом срабатывании binary_sensor так же сообщает о событии типа mega.sensor.
События можно использовать в автоматизациях, например так:
- alias: some double click
trigger:
- platform: event
event_type: mega.sensor
event_data:
entity_id: binary_sensor.mega_1
cnt: 2
action:
- service: light.toggle
entity_id: light.some_light
Чтобы понять, какие события происходят, лучше всего воспользоваться панелью разработчика и подписаться
на вкладке события на событие mega.sensor, понажимать кнопки.
Сервисы
Все сервисы доступны в меню разработчика с описанием и примерами использования
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
Просьба прикладывать детальный лог, который можно включить в конфиге так:
logger:
default: info
logs:
custom_components.mega: debug