В этой статье я расскажу про свой опыт использования умного дома без ремонтных работ, прокладки кабеля и т.д. Описания установки и конфигурации в данной статье не будет. Если нужно более подробно описать какую-то интеграцию, то пишите в комментариях, сделаю отдельную статью.
Оборудование и ПО
В качестве сервера используется VM запущенная на VMWare ESXi с Ubuntu 22 LTS. Внутрь VM прокинуты два адаптера: ZigBee CC2652 и Bluetooth Ugreen на чипе RTL8761BUV
Сначала я использовал вариант установки Home Assistant Core, потом перешел на docker.
Используются 6 контейнеров: Homeassistant, zigbee2mqtt, mosquitto, influxdb, grafana, nginx. Назначение первых трех контейнеров не вызывает вопросов, последний контейнер занимается обновлением let's encrypt сертификатов и проксированием, a influxdb и grafana для долгосрочного хранения данных и визуализации.
Интеграции
Вот так у меня на текущий момент выглядит страница интеграций в HA Generic Camera
Интеграция используется для работы с камерами Hikvision. Раньше еще была Axis - для нее есть отдельная интеграция. Используются как сенсоры определения движения, для просмотра видеопотока и для отправки фото в telegram, при открытии и закрытии входной двери.
Сенсоры через интеграцию Generic Camera не получить, поэтому они отдельно прописаны в конфигурационном файле HA:
binary_sensor: - platform: hikvision host: cam4.examaple.com username: hass password: !secret "hik_pass" - platform: hikvision host: cam3.example.com username: hass password: !secret "hik_pass"
Google assistant
Используется только для открытия шлагбаумов при въезде в ЖК и на паркинг, чтобы не нужно было брать в руки телефон. Для всего остального используется Алиса.
Haier Online (HON)
Кастомная интеграция установлена через HACS. Используется для управления Мульти-сплит системой с 4 внутренними блоками.
Доступны сенсоры: температура снаружи, внутри, статус сплита.
Управление: включение/выключение, установка целевой температуры и программы.
LG WebOS Smart TV
Интеграция с телевизорами LG WebOS.
Сенсоры: Включен/выключен, громкость, используемый источник (Ivi, Plex, HDMI и т.д.)
Управление: Включение/выключение, установка громкости, выбор источника, пауза/проигрывание.
Телевизоры подключены через Wi-Fi, для включения на них отправляется magic пакет, в самой интеграции такого функционала нет, поэтому используется автоматизация в HA
Автоматизация для включения телевизора
alias: Спальня-телевизор-включение description: Необходимо для работы кнопки включения телевизора или включения через Алису trigger: - platform: device device_id: 1d399e9a9f6cf23e13f2c412ec6e639f domain: webostv type: webostv.turn_on condition: [] action: - service: wake_on_lan.send_magic_packet data: mac: D4:86:60:26:F0:E2 broadcast_address: 192.168.88.84 mode: single
Mikrotik
Интеграция используется для определения кто в данный момент находится дома.
MQTT
Интеграция с mosquitto, в ней в основном устройства подключенные по протоколу Zigbee через zigbee2mqtt, и есть еще Xiaomi Hub (используется просто как ночник) c установленным OpenWrt for Xiaomi Zigbee.
Используются производители: CR Smart Home, eWeLink, IKEA, Legrand, Moes, TuYa, UseeLink, Xiaomi.
Устройства: Теплый пол, приводы штор, электрические розетки, выключатели, приводы на арматуру водоснабжения, реле, датчики протечки, открытия, влажности, температуры, движения, освещенности, беспроводные выключатели, Xiaomi Cube.
Несколько примеров автоматизаций:
Включение теплого пола и вытяжки при высокой влажности
alias: Ванна-вкл-вент-теплпол-влажность-высокая description: Включить теплый пол и вентилятор trigger: - type: humidity platform: device device_id: 3d380f4db9c9a9b9a92ddcb7d6ba4eea entity_id: sensor.sensor_bathroom_humidity domain: sensor above: 55 for: hours: 0 minutes: 0 seconds: 0 milliseconds: 0 condition: [] action: - type: turn_on device_id: fe3b24d58f4848ea314bfee3a2847d31 entity_id: switch.switch_bathroom_left domain: switch - service: climate.set_temperature target: entity_id: climate.floorheat_bathroom data: temperature: 28 hvac_mode: heat - delay: hours: 0 minutes: 0 seconds: 5 milliseconds: 0 - device_id: 0d62a807416ae25bdb4a4bfc081d121f domain: climate entity_id: climate.floorheat_bathroom type: set_hvac_mode hvac_mode: heat mode: single
Включение ночника при обнаружении движения на одном из датчиков
alias: Коридор-движение description: "" trigger: - type: motion platform: device device_id: 0cca9328b6eef50c5aad68231b10ae27 entity_id: binary_sensor.motion_corridor_occupancy domain: binary_sensor - platform: state entity_id: - binary_sensor.cam4_pir_alarm_2 from: "off" to: "on" condition: - condition: or conditions: - condition: sun before: sunrise - condition: sun after: sunset - condition: time before: "07:00:00" action: - type: turn_on device_id: d97eb090526f9b0cd75e829fdff60886 entity_id: light.bed_side_lamp domain: light brightness_pct: 50 flash: short mode: single
Отправка фото в телеграм при открытии двери
alias: Входная-дверь-открыта-Фото-Телега-in description: "" trigger: - type: opened platform: device device_id: 31f8b43b5a647cf4f785a905ef46003e entity_id: binary_sensor.contact_hallway_contact domain: binary_sensor condition: [] action: - service: script.send_photo_telegram data: url: http://hass:********@cam4.***.ru/ISAPI/Streaming/channels/101/picture mess: "{{ now().strftime('%H:%M:%S') }} Входная дверь открыта" mode: parallel max: 3
alias: send_photo_telegram variables: mess: null sequence: - service: telegram_bot.send_photo data: url: "{{url}}" target: "-1001555******" caption: "{{mess}}" mode: parallel max: 10
Изменение положения штор на угол поворота Xiaomi Cube
alias: Cube_rotate_right description: "" trigger: - platform: mqtt topic: zigbee2mqtt/0x00158d0004863928 payload: rotate_right value_template: "{{ value_json.action }}" condition: [] action: - service: script.cover_change_position data: position: >- {{ [(state_attr("cover.curtain_masterbedroom_right", "current_position") - (trigger.payload_json.action_angle / 2) | int), 0] | max }} mode: queued max: 2
alias: cover_change_position variables: angle: null sequence: - service: mqtt.publish data: topic: zigbee2mqtt/0x00158d00058a0983/set payload: "{\"position\": {{ position }}}" mode: queued max: 2
Bluetooth Low Energy Monitor
Кастомная интеграция установлена через HACS. Необходима для работы с устройствами BLE. Через нее работают: Умный браслет Mi Band, весы Mi Scale, датчики протечки и зачем-то соседский замок Aqara N200 сообщается мне статус замка и двери. Что интересно канал до датчиков протечки шифруется и для их подключения нужно получить ключ шифрования, а замок передает свои статусы без шифрования.
Блок с ключами шифрования из configuration.yaml
ble_monitor: devices: - mac: '54:EF:44:E1:AA:15' encryption_key: '7fb71c4935913c157a0e3e045400c897' - mac: '54:EF:44:E1:AD:D6' encryption_key: '172c0615f5dd7a9bc667cef7aa712e80' - mac: '54:EF:44:E1:A4:09' encryption_key: 'ed14843e79a7b860c62a3f9ec768eb7e' - mac: '54:EF:44:E1:A9:12' encryption_key: 'c60b3ae034f2d5184d9dfe6cf1b23432'
ПИК Домофон
Кастомная интеграция с ПИК Домофоном. Используется для просмотра видеопотока с домофонов (таких 3 штуки) и для открытия дверей, калиток и шлагбаумов. При въеде/выезде с паркинга мне нужно открывать 2 шлагбаума: один для въезда на территорию ЖК, другой на сам паркинг, так как телефон подключается к автомобилю через wireless android auto, то он не всегда под рукой, научить Алису отвечать без запуска приложения на андроиде я не смог, поэтому шлагбаумы открываю через Google Assistant. Устройства ПИК Домофон находятся в домене button, но Google Assistant их не воспринимает, из-за этого пришлось сделать виртуальный выключатель, который выставляется в Google Assistant.
Виртуальные переключатели для Google Assistant в configuration.yaml
google_assistant: project_id: ha--------16047 service_account: !include SERVICE_ACCOUNT.JSON report_state: true expose_by_default: false entity_config: switch.virtgatein: name: 'Entrance gate' expose: true room: Outside switch.virtgateout: name: 'Exit gate' expose: true room: Outside switch.virtgateparking: name: 'Parking gate' expose: true room: Outside switch.virtgateunderground: name: 'Underground gate' expose: true room: Outside switch: - platform: template switches: virtgatein: friendly_name: "Виртуальный включатель шлагбаум въезд" unique_id: virtgatein turn_on: service: switch.turn_on target: entity_id: switch.virtgatein turn_off: service: switch.turn_off target: entity_id: switch.virtgatein virtgateout: friendly_name: "Виртуальный включатель шлагбаум выезд" unique_id: virtgateout turn_on: service: switch.turn_on target: entity_id: switch.virtgateout turn_off: service: switch.turn_off target: entity_id: switch.virtgateout virtgateparking: friendly_name: "Виртуальный включатель шлагбаум паркинг" unique_id: virtgateparking turn_on: service: switch.turn_on target: entity_id: switch.virtgateparking turn_off: service: switch.turn_off target: entity_id: switch.virtgateparking virtgateunderground: friendly_name: "Виртуальный включатель шлагбаум подземелье" unique_id: virtgateunderground turn_on: service: switch.turn_on target: entity_id: switch.virtgateunderground turn_off: service: switch.turn_off target: entity_id: switch.virtgateunderground
Кроме того, если сказать "Алиса, свет", то Алиса сделает переключение состояния (toggle), а Google Assistant в таком случае всегда включает вне зависимости от статуса, поэтому в автоматизацию еще пришлось добавить автоматическое выключение.
Автоматизация открытия шлагбаума
alias: снаружи-шлагбаум-въезд description: "" trigger: - platform: state entity_id: - switch.virtgatein to: "on" from: "off" condition: [] action: - device_id: 6823413313691b06fb039a8884597c62 domain: button entity_id: button.iot_relay_41772_unlocker type: press - service: switch.turn_off data: {} target: entity_id: switch.virtgatein mode: single
Plex
Не придумал для чего использовать, но он есть))
Xiaomi Miio
Используется для управления системами приточной вентиляции.
Сенсоры: содержание СО2 и PM2.5, температура, скорость вращения вентиляторов, статус, программа.
Управление: включение/выключение, программа, скорость вращения вентиляторов, подогрев воздуха.
Yandex Smart Home + Yandex.Station
Интеграции используются для управления умным домом через голосового помощника Алиса, для этого в каждой комнате стоят Яндекс Станции и для того чтобы отправлять голосовые уведомления через Яндекс Станции. После того как появилась возможность управлять умным домом через помощника необходимость в других средствах управления практически отпала.
BedSideLamp
Когда-то давно мне подарили лампу Yeelight BedSideLamp, она прекрасно завелась с этой интеграцией. Включение/выключение, яркость, цвет.
InfluxDB
Для более долгого хранения информации. Для визуализации используется Grafana.
Telegram
Отправка событий умного дома, основное это отправка фото при входе и выходе из квартиры.
Проблемы
Когда я начинал работу с умным домом я использовал проводной датчик двери подключенный к arduino, которая писала статус в MQTT, в новой квартире решил не возится с проводами и перешел на Zigbee датчики. Сначала это было полное разочарование, задержка отправки события открытия двери и получения выключателем команды на включение занимала до 3 секунд. Проблема решилась неожиданно: у меня используется две точки доступа Mikrotik подключенные через CAPsMAN к роутеру, и когда я добавлял гостевой SSID и разносил 2Ghz по каналам все с Zigbee стало хорошо, задержка не более 0,5 секунды.
Много читал, что у людей отваливаются датчики Xiaomi по Zigbee, у меня таких проблем нет, раз в полгода бывает надо переджоинить один из большого количества датчиков. По батарейкам за 2 года эксплуатации менял только в датчиках протечки. И вот недавно в одном из датчиков температуры и влажности.
Выключатели все кроме одного Xiaomi с ними все ок, за 2 года один наиболее нагруженный выключатель в прихожей сломался. Он включается при движении в прихожей и открытии двери. А в кладовку пришлось ставить выключатель TuYa, так как там был круглый подрозетник, он за полгода уже дважды зависал, причем настолько, что перестает реагировать даже на нажатие кнопки на самом выключателе, лечится отключением электропитания. Пока не разбирался как его полечить.
Вытяжка на кухне включается при повышении влажности, но при включенной вытяжке влажность сразу падает и я пока не придумал как определять, что вытяжка больше не нужна, пришлось пока отключить автоматизацию, иначе при готовке вытяжка постоянно включается и выключается.