Skip to content

Кастомизация

С помощью 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
Далее каждый новый контроллер добавляется с помощью указания его id, который вы придумали при установке интеграции
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

Бинарные сенсоры#

Или по-другому цифровые входы. Как правило используются для выключателей, кнопок, датчиков движения и тд.

  • response_template (str): шаблон ответа на команды сервера. По-умолчанию d. Про формат ответа подробно описано тут. В шаблоне можно использовать параметры, которые передает контроллер (m, click, pt, mdid, mega_id). Про отладку шаблонов подробнее тут

на меге

Для корректной работы 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
    # конфиг
Подробнее про i2c

Параметры контроллера#

Некоторые параметры применяются для всего контроллера (одна мега)

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%