Кастомизация
С помощью yaml-конфигурации можно кастомизировать ваши устройства.
Основное#
Альтернативная адресация
Начиная с v1.1.0 большинство параметров объектов можно записывать в более простой и понятной форме:
mega: # название интеграции
entities:
sensor.some_sensor: #entity_id как в интерфейсе HA
filter_low: 20
filter_high: 40
Некоторые параметры по своей логике (влияют на entity_id) не могут быть записаны таким образом, среди них: - domain - skip - name
Остальные параметры можно записывать используя новый entities
Конфиг записывается стандартным образом в файл configuration.yaml
, начинаем с
указания названия интеграции:
mega:
megaid1:
10:
domain: switch
invert: true
megaid2:
14:
hex_to_float: true
mega:
megaid1:
10:
domain: switch
invert: true
megaid2:
14:
hex_to_float: true
Далее конфигурируются порты:
mega:
megaid1:
10:
domain: switch
invert: true
megaid2:
14:
hex_to_float: true
Параметры устройств#
В зависимости от типа порта доступны разные параметры. Все параметры опциональные, в скобках приведены типы и дефолтные значения.
Стандартный набор параметров#
Все устройства вне зависимости от типа
- skip (bool, false): пропустить или нет. Если true - устройство будет исключено из списка
- name (str): имя, используется в интерфейсе
Реле#
- domain (str, light): тип устройства. Можно выбрать light или switch
- invert (bool, false): инвертировать или нет.
ds2413#
Те же параметры, что у реле, но записываются иначе:
10:
c6c439000000_a: #c6c439000000 - это адрес ds2413, a-первый канал
# параметры
c6c439000000_b: #b-второй канал
Диммеры#
- smooth (float, 0): программное плавное диммирование. Это поле отвечает за кол-во секунд, за которое яркость диммера набирает от 0 до 100%
- range (list[int, int], [0, 255]), начиная с версии 1.1.0: границы диммирования в абсолютных единицах 0..255. При диммировании 1%
будет равен левой границе, 100% - правой.
range: [20, 200]
Подробнее про плавное диммирование
MegaD-16R-XT, MegaD-16PWM#
Порты расширителей MegaD-16R-XT, MegaD-16PWM конфигурируются аналогично обычным реле и диммерам, но адресация порта выглядит так:
33e1: # 33-основной порт, на котором сидит расширитель, e1-дополнительный порт расширителя
# стандартный конфиг порта
33e2:
RGB+W#
Для настройки rgb(w) лент существует специальный раздел led
в настройках каждого контроллера:
mega:
megaid1:
led:
ledid1: # id, который вы придумываете сами
# конфиг
На диммерах#
Интеграция может превратить любые 3 (или 4) диммера (актуально для мосфетов на pwm-расширителе или моноблоке) в rgb(w) контроллер с интерфейсом выбора цвета. Конфиг для такого типа ленты будет выглядеть так:
- ports (list[str]): список номеров портов, из которых составлять ленту, все порты должны быть типа PWM. Порядок цветов строго [R, G, B, W]. W указывается опционально
- white_sep (bool, true): яркостью белого можно управлять в двух режимах - синхронно с яркостью RGB, либо отдельно, по умолчанию стоит отдельно (true)
- smooth (float, 1): скорость диммирования, от 0 до 100% за
секунд.
Пример:
some_led1:
ports: [10, 12, 15, 16]
white_sep: true
smooth: 2
Адресные ленты на WS281X#
Подробно про поддержку контроллера таких лент рассказано в инструкции. Интеграция не привносит ничего нового - только помогает "пробросить" такие ленты в интерфейс HA. Конфиг таких лент выглядит так:
- ws28xx (bool, false): обязательное поле, необходимо установить true.
- port (int): номер порта, на котором настроена лента.
- order (str, "rgb"): последовательность каналов, допускаются любые комбинации букв r,g,b: rbg, bgr и тд
- chip (int, 100): кол-во чипов в ленте, по умолчанию 100, если их меньше емеет смысл указать правильное кол-во для увеличения скорости плавного диммирования
- smooth (float, 1): скорость диммирования, от 0 до 100% за
секунд.
Пример:
some_led2:
ws28xx: true
port: 36
order: bgr
smooth: 2
Бинарные сенсоры#
Или по-другому цифровые входы. Как правило используются для выключателей, кнопок, датчиков движения и тд.
на меге
Для корректной работы binary_sensor имеет смысл использовать режим P&R в настройках порта меги
Бинарные сенсоры так же отвечают за события типа mega.binary, об этом подробнее в разделе события
Примеры шаблонов ответа:
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 %}
Датчики#
Любой датчик будь то i2c или аналоговый или 1-wire
- unit_of_measurement (str): единицы измерения, список доступных
- value_template (str): шаблон для конвертации, например
{{(value|float)/100}}
- device_class (str): класс устройства, список доступных
- hex_to_float (bool, false): если ваш датчик возвращает float запакованный в HEX, интеграция его распакует (перед применением темплейта)
- filter_high (float, none): верхняя граница значений, выше нее значения будут считаться ошибочными и отбрасываться. Доступно так же глобальное значение
- filter_low (float, none): нижняя граница значений, ниже нее значения будут считаться ошибочными и отбрасываться. Доступно так же глобальное значение
- filter_values ([float], none): список значений, которые считаются ошибочными. Доступно так же глобальное значение
- filter_scale (float, none): значение отклонения от текущего значения, которое будет считаться выбросом и отфильтруется, например если установить 1, то это означает, что при росте показателя сенсора на 100% и больше или падении на 100% и больше, такое значение не будет отображаться. Доступно так же глобальное значение
- fill_na (str, last): чем заполнять пропуски, по-умолчанию last, что означает последнее значение, можно так же поставить none-тогда будут пропуски (разрывы на графике).
При этом есть так же особенности адресации, так для сенсора на одном порте с одним значением:
36:
# конфиг
DHT11/22#
На этих сенсорах два значения, одно для температуры, второе для влажности, поэтому для них применяется особый вид адресации:
35:
name:
hum: "влажность"
temp: "температура"
# и так далее для любого параметра сенсоров
1W-BUS#
Для датчиков установленных в шину 1-wire адресация кастомизации такая:
35:
addr: # адрес датчика, по-умолчанию entity_id будет состоять из адреса и типа
# конфиг
i2c#
Для сенсоров i2c нужно так же указать id сенсора, который можно посмотреть в атрибутах объекта на странице разработчика.
36:
htu21d_humidity: # i2c_id
# конфиг
Параметры контроллера#
Некоторые параметры применяются для всего контроллера (одна мега)
def_response#
Шаблон ответа сервера по умолчанию. Если этот параметр указан, то настройка "d по умолчанию" в UI игнорируется.
Пример:
mega:
megaid1:
def_response: >-
{% if m in [0, 1] %}d{% endif %}
Параметры интеграции#
allow_hosts#
Отвечает за список хостов, с которых интеграция "слушает" сообщения. По умолчанию, в этот список входят все настроенные меги, а так же все запросы с локального хоста.
Иногда, в целях отладки, требуется расширить этот список, что можно сделать следующим оьразом:
mega:
allow_hosts:
- 192.168.1.20
filter_high#
Верхняя граница значений датчиков по-умолчанию, выше нее значения будут считаться ошибочными и отбрасываться
filter_low#
Нижняя граница значений датчиков по-умолчанию, ниже нее значения будут считаться ошибочными и отбрасываться
filter_values#
Список значений, которые считаются ошибочными, настройка по-умолчанию для всех датчиков. Удобно, если у вас много однотипных датчиков
mega:
filter_values: [-82, - 150]
filter_scale#
Значение отклонения от текущего значения, которое будет считаться выбросом и отфильтруется, например если установить 1, то это означает, что при росте показателя сенсора на 100% и больше или падении на 100% и больше, такое значение не будет отображаться.
mega:
filter_scale: 1 # 100%