Автоматизация deconz событий в Home Assistant

01 февраля 2019, 14:59

Deconz имеет достаточно хорошую документацию, так же как и Home Assistant, но иногда бывает, что не знаешь, с чего начать. Особенно, если не знаком ни с тем ни с другим, а автоматизировать что-то руки чешутся. По правде говоря, я был вынужден разобраться с автоматизациями через события deconz'а, потому что икеевские диммеры нормально у меня так и не заработали в фирменном приложении Phoscon. 

Автоматизировать здесь мы будет IKEA Tradfri диммер и лампочку. На самом деле выбор источника событий не имеет значения, потому что принцип везде одинаковый. Так же не очень важно как у вас установлен Home Assistant и/или deconz, потому что главное это иметь доступ к логу первого (а он всегда есть, т.к. лог лежит в папке конфигураций), и прокинутые устройства от второго.

Для начала нам нужно убедиться, что все готово для нашей автоматизации. Что нужно проверить:

  1. Устройства видны в Home Assistant
  2. Home Assistant был перезагружен после добавления устройств в deconz

Устройства видны в Home Assistant

Для этого можно перейти на страницу интеграций Home Assistant по адресу https://ХХХ:8123/config/integrations/dashboard
Это должно выглядеть примерно так:

Здесь мы можем увидеть идентификатор шлюза и иконки подключенных устройств. Нажимаем на панель и перед нами предстаёт полный список устройств в виде карточек. Выбираем нужный:

Обратите внимание: устройства удаленного управления (ZHASwitch category) из deconz'а в Home Assistant прокидываются как сенсор разряда батареи. Это нормально и так и задумано. Имена устройств будут именно такие, как вы их назвали в Phoscon, а нужный нам ключ, будет составлен из имени с некоторыми преобразованиями. Например, все пробелы будут заменены нижними подчеркиваниям, а если два устройства с одинаковым именем, то будут добавлены цифры в конец идентификатора, и т.д. т.п. Нам же нужен этот ключ для автоматизаций, чтобы его получить нажимаем на карточку и отсюда копируем значение event id:


Это кодовое имя нужно куда-то сохранить, мы будем его вписывать в автоматизацию в следующих шагах.

Home Assistant был перезагружен после добавления устройств в deconz

Тут все просто: добавил устройство - перезапусти HA. Причины этого таковы, что deconz сообщает HA что было добавлено новое устройство, но это не всегда отрабатывает корректно для 100% всех устройств.

Ловим коды событий.

Чтобы автоматизировать нашу лампочку, нам нужно знать, когда и какая кнопка нажата, или как у нас повернут наш диммер, или как мы повернули aqara'вский кубик и т.д. Для этого мы включим логи и будем ловить все что есть. В конфигурации HA (configuration.yaml) ищем параметр logger и добавляем параметр для deconz'а:

logger:
  default: info
  logs:
    pydeconz: debug
    homeassistant.components.deconz: debug

После этого в файле home-assistant.log начнут появляться искомые события. Чтобы долго и нудно не искать по файлу, что же там срабатывало, просто выведем фильтрованный лог в консоль:

tail -f home-assistant.log|grep "\[pydeconz.deconzdevice\].*[0-9]\{4\}"

Теперь крутим диммер/нажимаем кнопку/кидаем кубик и по итогу в логе должны быть строчки похожие на:

2019-02-01 08:03:27 DEBUG (MainThread) [pydeconz.deconzdevice] TRÅDFRI remote control: update buttonevent with 1002

1002 это наш искомый код события. Теперь у нас есть всё, чтобы настраивать автоматизации. 

Автоматизация

По умолчанию, в конфигурации HA есть такой чудесный файл automations.yaml. Он подключается в конфигурацию следующей строчкой:

automation: !include automations.yaml

Стоит обратить внимание, что данный способ подключения предполагает, что в файле automations.yaml будет содержаться YAML список. Это значит, что всё есть в этом файле - это набор YAML элементов начинающихся с "-".

Теперь непосредственно сами автоматизации. Совсем простые автоматизации строятся следующим образом: есть триггер и есть действие. Мы не будем сейчас городить условия, шаблоны или другие возможности автоматизаций, а сделаем простое действие: получили событие (покрутили диммер, нажали кнопку)  - включили/выключили лампу. С полным описанием автоматизаций можно ознакомится в документации HA на офф. сайте. А нам нужно прописать в наш файл автоматизаций вот что:

- id: tradfri_dimmer_off
  alias: Tradfri Dimmer off
  trigger:
  - event_type: deconz_event
    platform: event
    event_data:
      event: 4002
      id: tradfri_wireless_dimmer
  action:
  - service: light.turn_off
    entity_id: light.big_bulb

Разберем по строчкам что и как. 

  1. id: tradfri_dimmer_off - уникальный идентификатор автоматизации. 
  2. alias: Tradfri Dimmer off - имя, которое будет отображаться в интерфейсе HA
  3. trigger - описание триггера
  4. event_type: deconz_event - вид ожидаемого события
  5. platform: event - источник события 
  6. event_data - грубо говоря фильтр события. 
  7. event: 4002 - наш идентификатор deconz события
  8. id: tradfri_wireless_dimmer - скопированный на первом шаге идентификатор устройства что эмитирует событие
  9. action - описание реакции (действия)
  10. service: light.turn_off - сервис, который вызвать (выключить лампочку)
  11. entity_id: light.big_bulb  - параметр сервиса, идентификатор лампочки, которую мы выключаем

Сохранив и перезагрузив автоматизации, наш диммер должен теперь выключать лампочку. Аналогично можно сделать включение лампочки, необходимо использовать сервис light.turn_on и соответствующее 4х циферное событие deconz'а.


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

  1. Александр Жабунин (OXOTH1K)
    Александр Жабунин (OXOTH1K) 5 месяцев назад

    Так держать! Статья отличная! У меня деконза нет, но я надеюсь когда нибудь появится)

  2. Алексей Леонтьев (c_ache)
    Алексей Леонтьев (c_ache) 5 месяцев назад

    Отличная статья! Касательно диммера тродфри, с 58 версии деконза он теперь добавляется со своим энтити и, если настроены прямые ассоциации, регулирует забиндинные лампочки через интерфейс ХА.

    2000x2000x_image.png?1549051027
    • Georgy Grigoryev (iamkarlson)
      Georgy Grigoryev (iamkarlson) 5 месяцев назад

      Я кстати вчера наткнулся на странное поведение прямых байдингов, возможно это как раз следствие апдейта на 58 версию

К списку статей

Похожие статьи

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
14 ноября 2018, 06:43
Плагин для интеграции в Athom Homey дочерних zigbee-устройств, подключенных на координаторы deCONZ - RaspBee или ConBee.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется