From 912440c079335b07958e240dfeeb8de7f98f2015 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 3 Aug 2021 11:23:53 +0300 Subject: [PATCH] add new docs --- docs/blueprints.md | 58 ++++++++++++ docs/debug.md | 15 ++++ docs/events.md | 66 ++++++++++++++ docs/http.md | 64 +++++++++++++ docs/i2c.md | 29 ++++++ docs/index.md | 69 ++++++++++++++ docs/services.md | 32 +++++++ docs/settings.md | 16 ++++ docs/smooth.md | 50 +++++++++++ docs/yaml.md | 217 +++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 616 insertions(+) create mode 100644 docs/blueprints.md create mode 100644 docs/debug.md create mode 100644 docs/events.md create mode 100644 docs/http.md create mode 100644 docs/i2c.md create mode 100644 docs/index.md create mode 100644 docs/services.md create mode 100644 docs/settings.md create mode 100644 docs/smooth.md create mode 100644 docs/yaml.md diff --git a/docs/blueprints.md b/docs/blueprints.md new file mode 100644 index 0000000..0de6539 --- /dev/null +++ b/docs/blueprints.md @@ -0,0 +1,58 @@ +**blueprints** - это удобные шаблоны автоматизаций, которые помогают строить автоматизацию из +интерфейса и ими легко делиться. Все ваши шаблоны доступны из специального меню. + +[![Open your Home Assistant instance and show your blueprints.](https://my.home-assistant.io/badges/blueprints.svg)](https://my.home-assistant.io/redirect/blueprints/) + +[Официальная документация по blueprints](https://www.home-assistant.io/docs/blueprint/) + +## Общее +Здесь я делюсь шаблонами, в которых используются события из моей интеграции. + +Если вы хотите сделать что-то подобное своими руками, то можно использовать мои шаблоны как отправную точку. + +Во всех шаблонах в качестве триггера используется событие **mega.binary** и доступен выбор типа, +[подробное описание типов здесь](events.md#binary). + +## Включить что-то +Этот шаблон лучше всего подходит для включения сценариев/сцен или любых других объектов по нажатию какой-то кнопки или +обнаружению движения. + +!!! note "Движение" + Датчики движения - это такие же *binary_sensor* как и обычные выключатели. В зависимости от настроек контроллера + будут приходить события либо типа **single** (если настроен режим click), либо **press** + +Опционально так же доступна настройка автоматического выключения по таймеру, если указан 0 (по умолчанию), таймер не +будет использован. + +Опционально доступен так же *блокирующий объект* и *период блокировки*. Например, если в одной комнате с датчиком +движения есть выключатель, тогда его можно указать как *блокирующий объект* и в течении *периода блокировки* +после нажатия выключателя события с датчика движения будут игнорироваться. + +[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgist.github.com%2Fandvikt%2Fb78459f4f43862d04c7fbba20d6893c7) + +[Исходный код](https://gist.github.com/andvikt/b78459f4f43862d04c7fbba20d6893c7) +## Переключить состояние +Классическое управление светом с кнопки без фиксации: нажали кнопку - свет выключился, если он сейчас включен, и наоборот. +Если вам нужно управлять несколькими светильниками, то необходимо будет +[создать группу света](https://www.home-assistant.io/integrations/light.group/) + +[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgist.github.com%2Fandvikt%2Fefb48535b1b9d998fe3dbe9a3efcea2c) + +[Исходный код](https://gist.github.com/andvikt/efb48535b1b9d998fe3dbe9a3efcea2c) +## Выключатель с фиксацией +Если выбран тип "нестрогий", то при каждом переключении состояния выключателя состоянии целевого объекта так же будет +меняться. Этот режим рекомендуется, тк в случае переключения состояния с сервера, в случае со строгим типом будет +"рассинхрон" - вам придется сначала выключатель привести в соответствие с текущим состоянием света. + +Если выбран тип "строгий", то будет строгое соответсвие состояний, те выкл==выкл и наоборот. + +[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgist.github.com%2Fandvikt%2F9addf966db75d0964143177963f40bb9) + +[Исходный код](https://gist.github.com/andvikt/9addf966db75d0964143177963f40bb9) +## Универсальный шаблон +Универсальный шаблон, с помощью которого можно выбрать любое событие меги, привязать +к нему набор произвольных действий + +[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgist.github.com%2Fandvikt%2Fbe1f683d308050b8972f9efa8aec465f) + +[Исходный код](https://gist.github.com/andvikt/be1f683d308050b8972f9efa8aec465f) \ No newline at end of file diff --git a/docs/debug.md b/docs/debug.md new file mode 100644 index 0000000..25501a5 --- /dev/null +++ b/docs/debug.md @@ -0,0 +1,15 @@ +[Сообщить о проблеме](https://github.com/andvikt/mega_hacs/issues/new?assignees=&labels=&template=bug-report.md&title=){ .md-button .md-button--primary } + +В первую очередь проверьте лог на наличие ошибок, доступ к логу возможен по кнопке ниже. + +[![Open your Home Assistant instance and show your Home Assistant logs.](https://my.home-assistant.io/badges/logs.svg)](https://my.home-assistant.io/redirect/logs/) + +Так же будет очень полезно прикладывать детальный лог, который можно включить в конфиге так: +```yaml +logger: + default: info + logs: + custom_components.mega: debug +``` +Для просмотра логов рекомендуется использовать [logviewer](https://github.com/hassio-addons/addon-log-viewer) + diff --git a/docs/events.md b/docs/events.md new file mode 100644 index 0000000..a7f4ad0 --- /dev/null +++ b/docs/events.md @@ -0,0 +1,66 @@ +Для быстрого старта рекомендую попробовать [мои шаблоны автоматизаций](blueprints.md) + +## mega.binary {: #binary} +События можно использовать только в автоматизациях как триггер типа *event* +```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 +``` +!!! note "Возможные варианты поля type" + - **press**: замыкание + - **release**: размыкание (с гарантией, что не было долгого нажатия) + + *Эти типы доступны только в режиме click (настраивается на контроллере):* + + - **long**: долгое нажатие + - **long_release**: размыкание после долгого нажатия + - **single**: одинарный клик (в режиме кликов) + - **double**: двойной клик + +## mega.sensor +Этот вид событий более "технический", им имеет смысл пользоваться только если функциональности *mega.binary* не +достаточно. +```yaml +# событие при перезагрузке меги +- alias: mega restart + trigger: + - platform: event + event_type: mega.sensor + event_data: + st: 1 + action: + # какой-то экшн +# Пример события с полями как есть прямо из меги +- 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 +``` +!!! note "События могут содержать следующие поля в event_data" + - **mega_id**: id как в конфиге HA + - **pt**: номер порта + - **cnt**: счетчик срабатываний + - **mdid**: id как в конфиге контроллера + - **click**: клик (подробнее в документации меги) + - **port**: номер порта + + +## Отладка +Чтобы понять, какие события приходят, лучше всего воспользоваться панелью разработчика (кнопка ниже) и подписаться +на вкладке события на событие `mega.binary` или `mega.sensor`, понажимать физические кнопки на меге. + +[![Open your Home Assistant instance and show your event developer tools.](https://my.home-assistant.io/badges/developer_events.svg)](https://my.home-assistant.io/redirect/developer_events/) diff --git a/docs/http.md b/docs/http.md new file mode 100644 index 0000000..772855c --- /dev/null +++ b/docs/http.md @@ -0,0 +1,64 @@ +Контроллер оповещает сервер о своих событиях, например, нажали кнопку выключателя или сработал датчик движения, +для этого в интеграции реализован http-сервер, для его работы необходимо прописать +в настройках меги следующие параметры: + +```yaml +srv: "192.168.1.4:8123" # ip:port вашего HA +script: "mega" # это api интеграции, к которому будет обращаться контроллер +``` + +!!! note "Внимание!" + Не используйте **srv loop** на контроллере - это может приводить к ложным срабатываниям входов. Вместо srv loop + интеграция будет сама обновлять все состояния портов с заданным интервалом + +За события будут отвечать объекты типа *binary_sensor* - их статус будет меняться на **on** при замыкании +контакта, на **off** при размыкании, а так же для более сложного контроля (двойные, долгие нажатия) предусмотрены +события с типом *mega.binary*, [об этом подробнее в разделе события](events.md) + +Так же вы можете [воспользоваться моими шаблонами автоматизаций](blueprints.md) для быстрого понимания, как всем этим +пользоваться. + +## Ответ на входящие события от контроллера + +Контроллер ожидает ответ от сервера, который может быть сценарием (по умолчанию интеграция отвечает `d`, что означает +запустить то что прописано в поле act в настройках порта). + +*Внимание!* По умолчанию в настройках интеграции стоит опция `имитация ответа` - это означает, что сервер вместо ответа +делает запрос к меге с необходимой командой - это вынужденная мера, тк встроенный в HA сервер разбивает пакет на части, +а контроллер не работает с такими пакетами. В целом, `имитация ответа` полностью закрывает эту проблему, единственный +недостаток - это небольшая задержка в ответе. + +Для максимальной скорости реакции, можно воспользоваться +[аддоном](https://github.com/andvikt/mega_addon/tree/master/mega-proxy), подробности в документации аддона. + +[Поддерживаются шаблоны HA.](yaml.md#binary) Это может быть использовано, например, для запоминания яркости (тк сам контроллер этого не +умеет). + +## Отладка шаблонов {: #temp-debug } +Отладку шаблонов рекомендуется проводить в специальном меню HA, которое находится в `Панель разработчика` - `Шаблоны` + +Вот пример, с которого можно начать: +```yaml +{## Переменные, которые передает контроллер, указываются только в тесте ##} +{% set m = 1%} +{% set pt = 2%} +{% set mdid = 'mega'%} +{## Шаблон ответа ##} +{% if m in [0, 1] %}d{% endif %} +``` + +## Отладка ответов http-сервера {: #http-response } +Для отладки ответов сервера можно самим имитировать запросы контроллера, если у вас есть доступ к консоли HA: +```shell +curl -v -X GET 'http://localhost:8123/mega?pt=5&m=1&mdid=mymega1' +``` +Где mymega1 - id устройства mega, который нужно узнать по url `http://192.168.1.14/sec/?cf=2` + +При этом необходимо так же в настройках интеграции прописать хост, с которого вы будете обращаться, +[подробнее](yaml.md#allow_hosts) + +И тогда можно с локальной машины делать запросы на ваш сервер HA: +```shell +curl -v -X GET 'http://192.168.88.1.4:8123/mega?pt=5&m=1&mdid=mymega1' +``` +В ответ будет приходить либо d, либо скрипт, который вы настроили \ No newline at end of file diff --git a/docs/i2c.md b/docs/i2c.md new file mode 100644 index 0000000..504d4f7 --- /dev/null +++ b/docs/i2c.md @@ -0,0 +1,29 @@ +I2C-датчики будут добавлены автоматически в HA с названием, соответствующим порту, типу и адресу +(если необходим), название и entity_id вы всегда можете поменять из интерфейса HA, [а также дополнительно их +кастомизировать с помощью yaml](yaml.md#sensors). + +Как и все остальные датчики, i2c подчиняется единому интервалу обновления, который указывается в меню интеграции. + +## Список i2c-датчиков, поддерживаемых интеграцией: {: #list} +!!! note "" + Под поддерживаемыми подразумеваются те датчики, у которых учтены все возможные + дополнительные значения, а так же корректно определены типы + + Неподдерживаемые датчики все равно будут работать, но будет отображаться только основное значение (i2c_par=0), + а тип будет определен как общий, универсальный для всех датчиков. + +- HTU21D/Si7021 +- SHT31 +- MAX44009 +- BH1750 +- TSL2591 +- BMP180 +- BME280 +- T6703/T67xx +- MLX90614 +- PTsensor +- MCP9600 +- DPS368 +- ADS1115/ADS1015 + +Так же заводите issue если какой-то датчик отсутсвует в этом списке, но поддерживается контроллером. diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..27b9b5a --- /dev/null +++ b/docs/index.md @@ -0,0 +1,69 @@ +# MegaD HomeAssistant integration +[![hacs_badge](https://img.shields.io/badge/HACS-Custom-orange.svg)](https://github.com/custom-components/hacs) +[![Donate](https://img.shields.io/badge/donate-Yandex-red.svg)](https://yoomoney.ru/to/410013955329136) +Star + +[Сообщить о проблеме](https://github.com/andvikt/mega_hacs/issues/new?assignees=&labels=&template=bug-report.md&title=){ .md-button .md-button--primary } + +Интеграция с [MegaD-2561, MegaD-328](https://www.ab-log.ru/smart-house/ethernet/megad-2561) + + +Если вам понравилась интеграция, не забудьте поставить звезду на гитхабе - вам не сложно, а мне приятно ) А если +интеграция очень понравилась - еще приятнее, если вы воспользуетесь кнопкой доната ) + +Обновление прошивки MegaD можно делать прямо из HA с помощью [аддона](https://github.com/andvikt/mega_addon.git) + +Предложения по доработкам просьба писать в [discussions](https://github.com/andvikt/mega_hacs/discussions), о проблемах +создавать [issue](https://github.com/andvikt/mega_hacs/issues/new/choose) +## Основные особенности {: #mains } +- Настройка в [веб-интерфейсе](settings.md) + [yaml](yaml.md) +- Все порты автоматически добавляются как устройства (для обычных релейных выходов создается + `light`, для шим - `light` с поддержкой яркости, для цифровых входов `binary_sensor`, для датчиков + `sensor`) +- Поддержка rgb+w лент как с использованием диммеров, так и адресных лент на чипах ws28xx и подобных, + [подробнее про rgbw](yaml.md#rgb) +- Плавное диммирование для любых диммируемых объектов (в том числе с аппаратной поддержкой и без), + [подробнее про smooth](smooth.md) +- Возможность работы с несколькими megad +- Обратная связь по [http](http.md) +- Автоматическое восстановление состояний выходов после перезагрузки контроллера +- Автоматическое добавление/изменение объектов после перезагрузки контроллера +- [События](events.md) на двойные/долгие нажатия +- Команды выполняются друг за другом без конкурентного доступа к ресурсам megad, это дает гарантии надежного исполнения + большого кол-ва команд (например в сценах). Каждая следующая команда отправляется только после получения ответа о + выполнении предыдущей. +- поддержка [ds2413](https://www.ab-log.ru/smart-house/ethernet/megad-2w) в том числе несколько шиной (начиная с версии 0.4.1) +- поддержка расширителей MegaD-16I-XT, MegaD-16R-XT, MegaD-16PWM (начиная с версии 0.5.1) +- поддержка всех возможных датчиков в режиме I2C-ANY, полный список поддерживаемых датчиков + [по ссылке](i2c.md) (начиная с версии 0.6.1) + +## Установка {: #install} +Если вы уже раньше устанавливали HACS, то просто поищите в списке интеграций HACS MegaD, если нет, то сначла необходимо +установить HACS - это витрина сторонних интеграций. [Инструкция по установке](https://hacs.xyz/docs/installation/installation) + +Далее внутри интерфейса HACS ищем MegaD: `HACS - Integrations - Explore`, в поиске ищем MegaD. + +На этом установка не закончена, вам потребуется прописать настройки каждого контроллера, [подробнее](settings.md) + +!!! note "Альтернативный способ установки" + ```shell + # из папки с конфигом + wget -q -O - https://raw.githubusercontent.com/andvikt/mega_hacs/master/install.sh | bash - + ``` + Не забываем перезагрузить HA + +## Обновления +Обновления выполняются так же в меню HACS. +Информация об обновлениях приходит с некоторым интервалом, чтобы вручную проверить наличие обновлений +нажмите три точки возле интеграции в меню HACS и нажмите `обновить информацию` + +Чтобы включить возможность использования бета-версий, зайдите в HACS, найдите интеграцию MegaD, нажмите три точки, +там кнопка "переустановить" или reinstall, дальше нужно нажать галку "показывать бета-версии" + +## Зависимости {: #deps } +Для максимальной скорости реакции на команды сервера, рекомендуется выключить `имитацию http-ответа` в +настройках интеграции и настроить proxy_pass к HA, самый простой способ сделать это - воспользоваться +[специальным аддоном](https://github.com/andvikt/mega_addon/tree/master/mega-proxy) + +Обновить ваш контроллер до последней версии, обновление прошивки MegaD можно делать +из HA с помощью [аддона](https://github.com/andvikt/mega_addon.git) diff --git a/docs/services.md b/docs/services.md new file mode 100644 index 0000000..3ae4894 --- /dev/null +++ b/docs/services.md @@ -0,0 +1,32 @@ +Все сервисы доступны в меню разработчика с описанием и примерами использования +```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" +``` \ No newline at end of file diff --git a/docs/settings.md b/docs/settings.md new file mode 100644 index 0000000..008a6a0 --- /dev/null +++ b/docs/settings.md @@ -0,0 +1,16 @@ +[После успешной установки интеграции в HACS](index.md#install), необходимо настроить +каждый контроллер, проще всего сделать это по этой кнопке: + +[![Добавить интеграцию](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=mega) + +Все имеющиеся у вас порты будут настроены автоматически. Вы можете менять названия, иконки и entity_id так же из интерфейса. + +В самой меге необходимо прописать настройки: +```yaml +srv: "192.168.1.4:8123" # ip:port вашего HA +script: "mega" # это api интеграции, к которому будет обращаться контроллер +``` +Так же необходимо настроить Mega-ID в настройках контроллера, для каждой меги id должен быть разным. + +При любых изменениях настроек контроллера (типы входов, id и тд) необходимо в настройках интеграции нажать `Обновить +объекты` diff --git a/docs/smooth.md b/docs/smooth.md new file mode 100644 index 0000000..67ef611 --- /dev/null +++ b/docs/smooth.md @@ -0,0 +1,50 @@ +Начиная с версии `1.0.0` интеграция поддерживает плавные переходы. Функция реализована +как на аппаратном уровне, так и на программном. + +Для аппаратной поддержки в настройках контроллера диммируемого порта необходимо включить опцию smooth. + +В чем разница между аппаратной и программной реализацией? Контроллер на аппаратном уровне умеет медленно +менять значение pwm-порта, рекомендуется для всех портов с поддержкой этого режима использовать именно его, +тк будет обеспечена максимальная плавность для любого числа устройств одновременно. +Плавность программного диммирования ограничена ресурсами вашего сервера и скоростью ответа контроллера, +если вы будете довольно быстро (за пару секунд) диммировать сразу группу +света из нескольких светильков, то в программной реализации возможно увидеть скачки. + +Тем не менее, pwm-расширитель не умеет аппаратно сглаживать диммирование, поэтому для него есть смысл воспользоваться +программной реализацией + +Для запуска плавного перехода можно воспользоваться штатными сервисами, например: +```yaml +action: + service: light.turn_on + entity_id: light.some_light + data: + # свет будет плавно включаться в течении 30 секунд + brightness_pct: 50 + transition: 10 # кол-во секунд на переход +``` +Так же любые диммируемые каналы могут участвовать в сценах, а эти сцены в свою очередь будут поддерживать опцию transition: +```yaml +action: + service: scene.turn_on + target: + entity_id: scene.romantic + data: + transition: 2.5 +``` + +Плавность реализована в любых диммируемых объектах: свет, rgb-ленты. + +Кроме того, возможно установить плавность по-умолчанию (имеет смысл использовать на pwm-расширителе), для этого в yaml-конфиге +следует добавить опцию smooth: +```yaml +mega: + mega1: + 10e1: + smooth: 1 # если указать, то порт будет диммироваться плавно (от 0 до 100% за секунд) + # опцию smooth можно использовать и на обычном pwm-порте, но в этом мало необходимости, лучше использовать + # встроенный в контроллер механизм smooth +``` + +Для светодиодных лент smooth по умолчанию установлен в 1 секунду, +подробнее [тут](yaml.md#rgb) \ No newline at end of file diff --git a/docs/yaml.md b/docs/yaml.md new file mode 100644 index 0000000..b80709f --- /dev/null +++ b/docs/yaml.md @@ -0,0 +1,217 @@ +С помощью yaml-конфигурации можно кастомизировать ваши устройства. + +## Основное +Конфиг записывается стандартным образом в файл `configuration.yaml`, начинаем с +указания названия интеграции: +```yaml hl_lines="1" +mega: + megaid1: + 10: + domain: switch + invert: true + megaid2: + 14: + hex_to_float: true +``` +Далее каждый новый контроллер добавляется с помощью указания его id, который вы +придумали при установке интеграции +```yaml hl_lines="2 6" +mega: + megaid1: + 10: + domain: switch + invert: true + megaid2: + 14: + hex_to_float: true +``` + +Далее конфигурируются порты: +```yaml hl_lines="3 4 5 7 8" +mega: + megaid1: + 10: + domain: switch + invert: true + megaid2: + 14: + hex_to_float: true +``` + +## Параметры устройств +В зависимости от типа порта доступны разные параметры. Все параметры опциональные, в скобках приведены типы и дефолтные +значения. +### Стандартный набор параметров +Все устройства вне зависимости от типа +!!! note "" + - **skip** (bool, false): пропустить или нет. Если true - устройство будет исключено из списка + - **name** (str): имя, используется в интерфейсе +### Реле +!!! note "" + - **domain** (str, light): тип устройства. Можно выбрать light или switch + - **invert** (bool, false): инвертировать или нет. +### ds2413 +Те же параметры, что у реле, но записываются иначе: +```yaml +10: + c6c439000000_a: #c6c439000000 - это адрес ds2413, a-первый канал + # параметры + c6c439000000_b: #b-второй канал +``` +### Диммеры +!!! note "" + - **smooth** (float, 0): программное плавное диммирование. Это поле отвечает за кол-во секунд, за которое яркость + диммера набирает от 0 до 100% + - **limits** (list[int, int], [0, 255]), *начиная с версии 1.1.0*: границы диммирования в абсолютных единицах контроллера. При диммировании 1% + будет равен левой границе, 100% - правой. +[Подробнее про плавное диммирование](smooth.md) +### MegaD-16R-XT, MegaD-16PWM +Порты расширителей MegaD-16R-XT, MegaD-16PWM конфигурируются аналогично обычным реле и диммерам, но адресация порта +выглядит так: +```yaml +33e1: # 33-основной порт, на котором сидит расширитель, e1-дополнительный порт расширителя + # стандартный конфиг порта +33e2: +``` +### RGB+W {: #rgb} +Для настройки rgb(w) лент существует специальный раздел `led` в настройках каждого контроллера: +```yaml hl_lines="3" +mega: + megaid1: + led: + ledid1: # id, который вы придумываете сами + # конфиг +``` +Далее интеграция имеет поддержку двух типов лент +#### На диммерах +Интеграция может превратить любые 3 (или 4) диммера (актуально для мосфетов на pwm-расширителе или моноблоке) +в rgb(w) контроллер с интерфейсом выбора цвета. Конфиг для такого типа ленты будет выглядеть так: +!!! note "" + - **ports** (list\[str\]): список номеров портов, из которых составлять ленту, все порты должны быть типа PWM. + Порядок цветов строго \[R, G, B, W\]. W указывается опционально + - **white_sep** (bool, true): яркостью белого можно управлять в двух режимах - синхронно с яркостью RGB, либо + отдельно, по умолчанию стоит отдельно (true) + - **smooth** (float, 1): скорость диммирования, от 0 до 100% за секунд. +Пример: +```yaml +some_led1: + ports: [10, 12, 15, 16] + white_sep: true + smooth: 2 +``` +#### Адресные ленты на WS281X +Подробно про поддержку контроллера таких лент рассказано в [инструкции](https://www.ab-log.ru/smart-house/ethernet/megad-2561#ws). +Интеграция не привносит ничего нового - только помогает "пробросить" такие ленты в интерфейс HA. +Конфиг таких лент выглядит так: +!!! note "" + - **ws28xx** (bool, false): обязательное поле, необходимо установить true. + - **port** (int): номер порта, на котором настроена лента. + - **order** (str, "rgb"): последовательность каналов, допускаются любые комбинации букв r,g,b: rbg, bgr и тд + - **chip** (int, 100): кол-во чипов в ленте, по умолчанию 100, если их меньше емеет смысл указать правильное кол-во + для увеличения скорости плавного диммирования + - **smooth** (float, 1): скорость диммирования, от 0 до 100% за секунд. +Пример: +```yaml +some_led2: + ws28xx: true + port: 36 + order: bgr + smooth: 2 +``` +### Бинарные сенсоры {: #binary} +Или по-другому цифровые входы. Как правило используются для выключателей, кнопок, датчиков движения и тд. +!!! note "" + - **response_template** (str): шаблон ответа на команды сервера. По-умолчанию d. + Про формат ответа подробно описано [тут](https://www.ab-log.ru/smart-house/ethernet/megad-2561#conf-in-act). + В шаблоне можно использовать параметры, которые передает контроллер (m, click, pt, mdid, mega_id). + Про отладку шаблонов подробнее [тут](http.md#temp-debug) + +!!! note "на меге" + Для корректной работы binary_sensor имеет смысл использовать режим P&R в настройках порта меги +Бинарные сенсоры так же отвечают за события типа *mega.binary*, [об этом подробнее в разделе события](events.md) + +Примеры шаблонов ответа: +```yaml +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 %} +``` + + +### Датчики {: #sensors } +Любой датчик будь то i2c или аналоговый или 1-wire +!!! note "" + - **unit_of_measurement** (str): единицы измерения, [список доступных](https://developers.home-assistant.io/docs/core/entity/sensor#available-device-classes) + - **value_template** (str): шаблон для конвертации, например `{{(value|float)/100}}` + - **device_class** (str): класс устройства, [список доступных](https://developers.home-assistant.io/docs/core/entity/sensor#available-device-classes) + - **hex_to_float** (bool, false): если ваш датчик возвращает float запакованный в HEX, интеграция его распакует (перед применением темплейта) +При этом есть так же особенности адресации, так для сенсора на одном порте с одним значением: +```yaml +36: + # конфиг +``` +#### DHT11/22 +На этих сенсорах два значения, одно для температуры, второе для влажности, поэтому для них применяется +особый вид адресации: +```yaml +35: + name: + hum: "влажность" + temp: "температура" + # и так далее для любого параметра сенсоров +``` +Логика так себе ) Но так повелось в первых версиях. +#### 1W-BUS +Для датчиков установленных в шину 1-wire адресация кастомизации такая: +```yaml +35: + addr: # адрес датчика, по-умолчанию entity_id будет состоять из адреса и типа + # конфиг +``` +#### i2c {: #i2c} +Для сенсоров i2c адресация конфига такая: +```yaml +36: + htu21d_humidity: # entity_id сенсора без приставки sensor., видно в интерфейсе HA + # конфиг +``` +[Подробнее про i2c](i2c.md) +## Параметры контроллера +Некоторые параметры применяются для всего контроллера (одна мега) +### def_response +Шаблон ответа сервера по умолчанию. Если этот параметр указан, то настройка "d по умолчанию" +в UI игнорируется. + +Пример: +```yaml +mega: + megaid1: + def_response: >- + {% if m in [0, 1] %}d{% endif %} +``` + +## Параметры интеграции +### allow_hosts {: #allow_hosts } +Отвечает за список хостов, с которых интеграция "слушает" сообщения. По умолчанию, в этот список +входят все настроенные меги, а так же все запросы с локального хоста. + +Иногда, в целях отладки, требуется расширить этот список, что можно сделать следующим оьразом: +```yaml +mega: + allow_hosts: + - 192.168.1.20 +```