Все началось с того, что я хотел включить свет в туалете, а он включился через три секунды.
У меня стоял шлюз Xiaomi, датчик движения Aqara и какая-то ноунейм релешка. Схема работала так: датчик видит меня -> сигнал летит в Китай на сервер Xiaomi -> там скрипт думает -> сигнал летит обратно ко мне в квартиру -> свет включается.
В тот момент я понял две вещи.
Первая: я не хочу, чтобы товарищ майор из Пекина знал, как часто я хожу в туалет.
Вторая: мой дом не должен превращаться в тыкву, когда провайдер проводит плановые работы.
Ниже рассказ о том, как я выкинул все проприетарные шлюзы, купил один свисток и поднял Home Assistant.
Почему Wi-Fi устройства - это зло
Многие новички покупают Wi-Fi розетки. Это дешево, не нужен шлюз.
Но когда у вас 5 устройств - все ок. Когда их 50 - ваш домашний роутер начинает сходить с ума. Wi-Fi не предназначен для того, чтобы держать постоянный коннект с кучей мелких датчиков, которые шлют по 5 байт данных.
Плюс энергопотребление. Wi-Fi датчик на батарейке живет месяц. Zigbee - два года.
Железо: один стик, чтобы править всеми
Чтобы отвязаться от экосистем (Xiaomi, Tuya, Apple), нужен координатор.
Я взял Sonoff Zigbee 3.0 USB Dongle Plus.
Стоит копейки, пробивает две бетонные стены, выглядит как серьезное промышленное устройство в алюминиевом корпусе.
Прошивается за 5 минут, после чего превращается в универсальный приемник, который понимает вообще всё: от лампочек IKEA до датчиков протечки с AliExpress.
Софт: Зоопарк в контейнерах
Вся магия строится на связке трех китов:
Zigbee2MQTT (z2m). Эта штука общается со свистком и переводит сигналы zigbee в понятный протокол MQTT.
Mosquitto. Брокер сообщений. Почтальон, который носит письма между сервисами.
Home Assistant (HA). Мозг. Там крутятся скрипты и красивый интерфейс (который вы настроите один раз и никогда не будете открывать).
Почему z2m, а не нативный ZHA в Home Assistant?
Потому что архитектура должна быть модульной. Если я завтра захочу снести HA и поставить OpenHAB (чур меня), мне не придется переспаривать все 50 датчиков. Они живут в z2m.
Вот docker-compose.yml, который поднимает всё сразу.
Обратите внимание на проброс устройства /dev/ttyACM0 - это и есть наш стик.
YAML
version: '3.8'
services:
mqtt:
image: eclipse-mosquitto:2.0
restart: unless-stopped
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
ports:
- "1883:1883"
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt
restart: unless-stopped
depends_on:
- mqtt
volumes:
- ./zigbee2mqtt/data:/app/data
- /run/udev:/run/udev:ro
environment:
- TZ=Europe/Moscow
devices:
# Проверяйте адрес через ls -l /dev/serial/by-id/
- /dev/ttyACM0:/dev/ttyACM0
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
restart: unless-stopped
depends_on:
- mqtt
- zigbee2mqtt
volumes:
- ./ha_config:/config
- /etc/localtime:/etc/localtime:ro
network_mode: host # Важно для discovery устройств в сети
WAF (Wife Acceptance Factor)
Самое сложное в умном доме - это не YAML-конфиги писать. Самое сложное - сделать так, чтобы жена (девушка, мама, кот) не убили вас за то, что свет теперь включается только с телефона.
Золотое правило инженера: физический выключатель должен работать всегда.
Я использовал zigbee-реле, которые ставятся в подрозетник ЗА обычный выключатель. Выключатель щелкает - реле меняет состояние.
Если сервер умрет, сгорит малинка или докер уйдет в бутлуп - свет все равно включится, потому что реле замкнет цепь физически.
Никогда, слышите, никогда не ставьте умные лампочки, которые управляются только по воздуху, в основные люстры. Вас проклянут в первый же вечер.
Автоматизация без GUI
Home Assistant предлагает визуальный редактор автоматизаций. Но мы же не ради кликанья мышкой тут собрались.
YAML дает гибкость.
Пример автоматизации: если датчик протечки сработал, перекрываем кран, шлем уведомление в телеграм и включаем красную подсветку в коридоре (чтобы было страшно).
YAML
alias: Leakage Detected
trigger:
- platform: state
entity_id: binary_sensor.water_leak_kitchen
to: 'on'
action:
# Закрываем кран (нужен электропривод)
- service: switch.turn_off
target:
entity_id: switch.water_valve_main
# Шлем панику в телегу
- service: notify.telegram
data:
message: "ПОТОП НА КУХНЕ! Кран перекрыт."
# Включаем аварийное освещение
- service: light.turn_on
target:
entity_id: light.corridor_strip
data:
color_name: red
brightness: 255
Итого
Цена вопроса - 2000 рублей за стик и пару вечеров на чтение документации.
Взамен вы получаете систему, которая работает мгновенно. Задержка между нажатием беспроводной кнопки и включением света - меньше 100 миллисекунд.
Китайские облака идут лесом. Интернет не нужен.
И самое приятное чувство - когда в доме пропадает сеть, а у тебя все продолжает работать, как часы.
В комментариях жду адептов Wiren Board, которые скажут, что беспровод - это ненадежно и надо было штробить стены под витую пару.
Комментарии (9)

akod67
27.11.2025 09:23Подтупливание зигби устройств на больших сетках - тоже обычная картина. Но в любом случае - УД должен быть локальным. И зря на провода кидаетесь. Наработайте статистику года в 3. Походите, батарейки поменяйте (надоест уже на второй раз) и прочее. Говорю как 15летний обладатель типа-УД по большей части проводного, но и зигбей пару десятков девайсов работает. Особая прелесть - когда какие-то запрятанные в потолки-люстры девайсы отваливаются и их надо перепаривать.
Если сервер умрет, сгорит малинка или докер уйдет в бутлуп - свет все равно включится, потому что реле замкнет цепь физически.
Зависит от света ещё. Можно насобирать таких стартовых токов, что китайские релюшки на раз залипать будут.

Soorin
27.11.2025 09:23Почему ZigBee - это зло:
Вы хотите включить свет в туалете, а он не включается. Что? А ничего, просто датчик не присылал ничего уже несколько часов. Батарейка датчика последний раз была 100%. Способа опросить/разбудить его удалённо - не существует. кнопочкой он тоже не включился - батарейка села "в ноль". После замены батарейки он не хочет определяться шлюзом. Ой, а шлюз-то сам завис. Вынимаем "свисток", вставляем... Ой, помогло (в прошлый раз не помогало, пришлось стучать бубном по колёсам). Удаляем датчик - не хочет удаляться, т.к. нет связи. Удаляем
sudoпринудительно. Включаем обнаружение устройств. Зажимаем кнопку на датчике. Ура, идёт привязка. Заработало... можно идти в туалет.И слава богу, что это датчик включения света - а не реле управления нагревателем, застрявшее на "Вкл" где-нибудь в загородном доме за 100км.
Итог: никакого ZigBee на ответственных вещах - только WiFi-устройства со своей веб-мордой, к которым можно подключиться прямо через роутер, минуя умный дом и ненадёжные "свистки".

akod67
27.11.2025 09:23Уже давно не свистки, а вполне себе надёжные standalone "zigbee zigstar lan gateway" и подобное. Z2M на N100 - более стрёмное звено, но относительную стабильность обеспечить можно. А вот "эфир" - штука неконтролируемая. Если делать сие в человейнике с кучей соседей - вопросиков много. Да и в пределах одной сетки бывают спамящие девайсы. Не надо тащить в сетку всё, что на алике валяется.

JBFW
27.11.2025 09:23У WiFi релюшек есть интересная особенность: иногда можно их перешить/перепаять на esp8266, которые завести в свою mesh сеть.
Технически тоже WiFi, но работает не через Wifi-роутер, поэтому надежнее.
Но система управления этим сложнее, не просто "через веб-морду". Как и Zigbee, по mqtt
griba
в смысле только время и показывает?
А если по делу, то локальное решение имеет очевидно как свои плюсы, так и минусы. Например, если следующим шагом захочется отопление включать до того, как приехал домой - надо либо vpn городить либо в свет свой HA публиковать (а тут начнутся двойные NAT и прочие приключения). И есть интересный вопрос, а выключатели без фиксации положения? чтобы в сценарии включил привычным образом, выключил механически не было ситуации, что он остался включенным?
JBFW
Эта проблема решается несколькими способами: от привязки внутреннего mqtt к москиту на внешнем сервере (доступ с ограничениями, с tls) до белого IP дома с подключением к тому же mqtt (и снова с tls) прямо с телефона, и управление крутилками-кнопками там.
Получается локальная сеть дома - и возможность доступа снаружи, если вообще не заблокировали...
griba
ну погодите, это же локальная установка, какой внешний mosquito? Белый ip не всем раздают.
akod67
Ну уж придумать как пакет в дом прислать - мульон способов. Хоть через телегу.