mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-11 00:54:28 +05:00
145 lines
7.3 KiB
Markdown
145 lines
7.3 KiB
Markdown
# 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
|
||
```
|