В этой статье я расскажу про свой опыт использования умного дома без ремонтных работ, прокладки кабеля и т.д. Описания установки и конфигурации в данной статье не будет. Если нужно более подробно описать какую-то интеграцию, то пишите в комментариях, сделаю отдельную статью.
-
Оборудование и ПО
В качестве сервера используется 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 для долгосрочного хранения данных и визуализации.
-
Интеграции
-
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, так как там был круглый подрозетник, он за полгода уже дважды зависал, причем настолько, что перестает реагировать даже на нажатие кнопки на самом выключателе, лечится отключением электропитания. Пока не разбирался как его полечить.
Вытяжка на кухне включается при повышении влажности, но при включенной вытяжке влажность сразу падает и я пока не придумал как определять, что вытяжка больше не нужна, пришлось пока отключить автоматизацию, иначе при готовке вытяжка постоянно включается и выключается.
Комментарии (15)
DASpit
06.07.2023 12:56+1По вытяжке имеет смысл поставить таймер отключения, тогда будет не часто включаться/выключаться, а с большей периодичностью, скажем 10 минут.
tmv002 Автор
06.07.2023 12:56Думал над этим. Тогда вытяжка будет работать ещё 10 минут после выключения варочной панели, но в целом идея рабочая.
DeKaNszn
06.07.2023 12:56Мне помогает "включение при влажности выше Х более чем 30с" + "выключение при влажности ниже Х-Y более чем 30с". Разделение значений помогает избежать постоянных вкл/выкл, а интервал времени помогает игнорировать короткие изменения.
У вас, кстати, может не сработать автоматизация, если Home Assistant ещё не загрузился к моменту, когда происходит описанное в триггере событие
tmv002 Автор
06.07.2023 12:56Так проблема в том, что показатели влажности и температуры падают до нормальных в момент включения вытяжки. X-Y тут не поможет. А про незагруженный Home Assistant вообще не понял, он работает месяцами, перезагружается, только для обновления, либо для применения каких-то параметров или установки новых интеграций через HACS.
DeKaNszn
06.07.2023 12:56+1хм, у вас вытяжка за секунды снижает влажность на 20 и более процентов? тогда да, вам не подходит этот метод. Возможно вам надо учитывать потребление электричества/газа варочной панелью?
Пример из жизни: пропало электричество на полчаса, влажность поднялась за это время и при старте Home Assistant триггер "влажность стала выше Х" не сработал, потому что она уже была выше Х. У меня в большинстве автоматизаций из-за этого дополнительным триггером служит старт Home Assistant (и добавлены условия из триггеров)
shadrap
06.07.2023 12:56+1две точки доступа Mikrotik подключенные через CAPsMAN к роутеру, и когда я добавлял гостевой SSID и разносил 2Ghz по каналам все с Zigbee стало хорошо
Извините. Нифига не понял.., что в итоге помогло, фильтрация по MAC или вы перевели часть с устройств на другие частоты?
tmv002 Автор
06.07.2023 12:56Zigbee2mqtt работал и работает на дефолтном 11 канале это частота 2.405GHz (у Zigbee своя нумерация каналов, она не совпадает с Wi-Fi).
Когда было плохо точки доступа сами выбирали канал, я на тот момент даже не знал, что у Zigbee и Wi-Fi используется один диапазон частот, сейчас у точек доступа 6 и 11 канал, это 2.437GHz и 2.462GHz соответственно.
dr_Sergeus
06.07.2023 12:56+1Это Вы про zigbee из идеального мира. Первая и важная задача при построении сети на zigbee это скан каналов wifi на предмет наименьшей загруженности. Причина проста - устройства, которые работают на близкой частоте просто глушат наводками слабосильные батарейные zigbee end-device. Тут приходилось в разные комнаты разносить головное устройство с координатором на борту и wifi роутер, чтобы отвалов не было. А однажды пришлось на метр передвинуть wifi часы с погодой.
Это я по опыту интегратора пишу.
Мы, к примеру, все ставим в докер (обычно до 6 контейнеров: HA, mariaDB, mqtt, z2m, home-assistant-configurator, portainer (по желанию)). И работает это на 2GB памяти с 32 eMMC.А TuYa - зло. Камни от TI давно не юзаем, только от Silabs
По автоматизациям - на вкус и цвет-фломастеры разные. Большинство автоматизацией давно написано через trigger->action->choose->sequence, что позволило сократить нагрузку на железку, уменьшив количество автоматизаций.
По статье - супер, может кому поможет, спасибо.
tmv002 Автор
06.07.2023 12:56+1Спасибо про идею trigger->action->choose->sequence, сходу на 6 автоматизаций меньше стало.
akavato
06.07.2023 12:56+1Камни от TI давно не юзаем, только от Silabs
А почему так? У меня просто диаметрально противоположный опыт: с zigstar на ti 2652P2 z2m работает стабильно, а вот на silabs EFR32MG21 постоянные отвалы датчиков, особенно на батарейках
dr_Sergeus
06.07.2023 12:56Обновите прошивку в координаторе на EFR. Для старых датчиков 6.10.3 самая стабильная если датчики новые, то надо идти на 7. Мы уже используем 7.1.1. EZSP v9 в так сказать "продакшене".
А почему EFR - так исторически сложилось на тестах производительности, что для своих координаторов мы выбрали EFR. Как и то, что датчики мы используем от производителя Konke
Astroscope
06.07.2023 12:56Включение ночника при обнаружении движения на одном из датчиков
Как по мне - overkill. Хватает обычных ночников с датчиком движения.
dr_Sergeus
06.07.2023 12:56Ни разу. Ночники включаются сразу несколько, освещая путь ночью. И расположение в видимости датчика движения самого ночника - ни разу не нужно. Один датчик на все ночники и ленты, которые включаются в зависимости от времени в разном режиме, цвете и яркости.
tmv002 Автор
06.07.2023 12:56После полной темноты, даже от ночника на минимальной яркости прямой свет неприятен, поэтому он у меня стоит вне прямой видимости, а датчики с разных сторон длинного коридора. Кроме того днём он не нужен. Отдельно умный дом только для ночника строить, конечно, overkill, но когда он уже есть - сделал и забыл.
Pitcentr0
я купил мини ПК Beelink T4 Pro Mini подключил HDD поставил proxmox и там настроил все виртуальные машины