# MegaD HomeAssistant integration Интеграция с [MegaD-2561](https://www.ab-log.ru/smart-house/ethernet/megad-2561) ## Основные особенности: - Настройка в веб-интерфейсе + yaml - Все порты автоматически добавляются как устройства (для обычных релейных выходов создается `light`, для шим - `light` с поддержкой яркости, для цифровых входов `binary_sensor`, для датчиков `sensor`) - Возможность работы с несколькими megad - Обратная связь по mqtt - События на двойные/долгие нажатия - Команды выполняются друг за другом без конкурентного доступа к ресурсам megad, это дает гарантии надежного исполнения большого кол-ва команд (например в сценах). Каждая следующая команда отправляется только после получения ответа о выполнении предыдущей. ## Зависимости **Важно!!** Перед использованием необходимо настроить интеграцию [mqtt](https://www.home-assistant.io/integrations/mqtt/) в HomeAssistant Для максимальной совместимости необходимо обновить ваш контроллер до последней версии, тк были важные обновления в части mqtt ## Установка Рекомендованный способ с поддержкой обновлений - [HACS](https://hacs.xyz/docs/installation/installation): HACS - Integrations - Explore, в поиске ищем MegaD. Альтернативный способ установки: ```shell # из папки с конфигом wget -q -O - https://raw.githubusercontent.com/andvikt/mega_hacs/master/install.sh | bash - ``` Не забываем перезагрузить HA ## Настройка `Настройки` -> `Интеграции` -> `Добавить интеграцию` в поиске ищем mega Все имеющиеся у вас порты будут настроены автоматически. Вы можете менять названия, иконки и entity_id так же из интерфейса. #### Так же доступна кастомизация устройств с помощью yaml: ```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', вместе с этим он сохраняет полученные параметры от меги в аттрибутах. Атрибутами можно пользоваться так: ```yaml - 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`. События можно использовать в автоматизациях, например так: ```yaml - 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`, понажимать кнопки. ## Сервисы Все сервисы доступны в меню разработчика с описанием и примерами использования ```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 ```