Умный дом в Питере – OpenHAB с Яндекс Алисой

В Питере для своей супруги Юли сделал полноценный умный дом. В квартире управляется: весь свет, отопление, вентилятор и вытяжка. Вот что получилось, немножко расскажу про архитектуру и решения. Чуть позже подключил всю систему к умной колонке с Алисой.

Правильно сделанный умный дом – невероятно удобная штука, я уже давно не представляю свою жизнь без него. Самые важные моменты:

  • Умный дом должен быть автономным: никаких китайских облаков, приложений от вендора или зависимости от наличия интернета.
  • Свет должен управляться абсолютно весь. Когда у тебя одна лампочка осталось глупая, то групповой выключатель будет выключать почти всё, а то что осталось будет бесить.
  • Умный дом должен быть интегрирован в существующий ремонт, без колхоза.
  • Умный дом не должен быть эксклюзивной системой – при отказе свет должен продолжать работать как обычно, через физические кнопки.

Архитектура

Умный дом построен на основе системы OpenHAB, недавно обновились до 4-ой версии. У Юли имеется небольшой домашний сервер, где так же имеется джентльменский набор современного жителя – бекап фоток, файловое хранилище, медиатека и прочее.

Изначальный набор для первой версии умного дома

Первоначально всё крутилось на Raspberry PI 4 с SSD диском в USB коробке. Так сделал из-за того что система будет абсолютно бесшумная, но потом десять раз пожалел – получилось дорого, медленно, и самое главное – ненадёжно, microSD карты отказывали на раз-два. Это особенно глупо, с учётом что у меня нет постоянного физического доступа. Не используйте Raspberry PI для автономных устройств, это очень глупая идея. За те же деньги можно спокойно купить неплохой неттоп без вентиляторов и с нормальным диском NVME, что будет в сто раз надёжнее и быстрее.

Подбор железа для второй версии

После нескольких отказов, собрал из нормального железа новый сервер. Использовал материнскую плату с Core i3-7300, который я купил на второй день после моего переезда в ФРГ в 2017 году, для использования как домашний сервер, и долгое время он так и работал. Недавно обновил домашний сервер с железа с работы и платформа освободилась.

Настройка конфигурации на стуле

Кинул в чемодан материнку с процессором и диск NVME для системы, корпус купил уже на месте.

Итого, сетап:

  • Сервер: Core i3-7300 c Proxmox, умный дом находится в контейнере с Ubuntu 22.04
  • Управление, интерфейс и автоматизация: OpenHAB
  • Исполнительные устройства: Все Zigbee, брокер zigbee2mqtt
  • Сеть: Два гигабитных роутера TP-Link Archer C7 с OpenWRT

Почему Proxmox: очень удобная система, когда нужно несколько разделённых логически систем (типа умный дом, медиасервер, …) работающих в своих сетях, контейнерах и виртуальных машинах.

Почему OpenHAB: эта система точно не User-frendly, но обладает самой большой гибкостью в настройке и реализации. Если не любите сами разбираться с деталями или писать скрипты, то лучше использовать что-то более мейнстримовое, типа HomeAssistant.

Устройства умного дома

Все устройства – Zigbee. WiFi устройства не используются принципиально для умного дома, как правило у таких только 2.4 ГГц сеть, от которой решено было избавиться вообще. Для клиентов есть быстрая 5 ГГц сеть, умные устройства – только Zigbee. Так же, Zigbee обеспечивает локальность всей системы. Старая 2.4 Ггц сеть погашена для уменьшения помех.

Координатор системы – Sonoff ZBDongle-P, на базе CC2652P. Обратите внимание, что у них есть две версии, у меня именно на базе CC2652P, что важно. После анализа эфира выбран канал с минимальной интерференцией. Донгл прошит прошивкой, рекомендуемой проектом zigbee2mqtt.

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

Верхний свет – отдельно стоящие выключатели заменил на Tuya, с поддержкой фантомного питания (без нейтрали). Слева старый, справа новый выключатель для верхнего света и питания вентилятора в ванной.

Для выключателей, где они часть группы с розеткой и прочим – решил оставить оригинальные клавишные выключатели, в подрозетник установлены Zigbee реле, так же работающие без нейтрали. В комплекте идёт конденсатор, но он не требуется, если есть приличная нагрузка (такая как лампа верхнего света).

В ванной установил подогрев в зеркало. У меня точно такое же дома, поэтому установка была совершенно аналогичная как у меня.

В удобных местах установлены замечательные пультики из Ikea.

Данный пультик управляет мастер-выключателем, уходя из квартиры можно одной кнопкой выключить весь свет, или наоборот – включить свет “welcome” когда возвращаешься. И прочие подобные сценарии, которые сделать очень легко – пультик приклеивается в любом удобном месте, в OpenHAB фигачим любые сценарии на ваш вкус.

Так же заменил лампочки везде, где они были отдельные, но там ничего интересного – выкрутил-вкрутил.

Одну лампочку я сначала пропустил – это лампа письменного стола. Постоянно её забывали выключать, и я уже купил на месте в яндекс-маркете. Лампочка из Ikea, предыдущего поколения, обошлась в 700 рублей (7 евро), что весьма хороший прайс. Но, выбор конечно слабоват, повезло что мог взять именно эту модель (именно такая же у меня в лампе стола в рабочем кабинете). В любом случае рекомендую брать умные лампочки из Икеи, они реально классные и самое удивительное – дешёвые.

Под кроватью установил RGB лампочку – просто прикрутил патрон, можно делать прикольные варианты подсветки. С лентой и отдельным драйвером не хотелось возиться, лампочка светит достаточно годно. В торшерах использовал более новые привозные лампочки E27. Таким образом, можно включать в спальне свет, что бы не било по глазам. Так же установил в шкаф штатную подсветку от Икея + Zigbee драйвер, яркость тоже можно регулировать.

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

У всех ламп имеется регулировка температуры и они автоматически меняют температуру к вечеру.

Термостатики – установил на батареи симпатишные, тоже от Tuya. Так же датчики температуры и влажности в каждую комнату. Один из любимых сценариев – делать прохладнее ночью. пока спишь, и часов в пять утра (или считав будильник на сегодня) включать отопление, что бы просыпаться в тепле.

Так же умным выключателем управляется вентилятор в ванной и кухонная вытяжка переделена в умную.

Все выключатели имеют физические кнопки и свет будет нормально работать даже при полном отказе системы или сети Zigbee. При полном отказе умный дом просто превратится в обычный, только с более дорогими выключателями света.

Карта Zigbee устройств

На данный момент в сети 33 Zigbee устройства в квартире.

Сценарии

Реализованы следующие сценарии:

  • Групповые политики для разных сцен света, типа “я ухожу из дома”, “хочу спать” или “хочу в туалет” и т.п.
  • Свет автоматически теплеет вечером и холодный вечером
  • Отопление держит прохладу ночью и автоматически подогревает утром
  • Автоматическое выключение некоторых устройств по тайм-ауту, типа вентилятора в ванной
  • Кое-какая автоматизация света, типа что свет в кладовке автоматически включается при открытии двери или свет вытяжки включается вместе с рабочим светом на кухне по-умолчанию
  • Кнопками можно включать разный режим света и диммирование, например можно включить неяркий свет в спальне не выжечь себе глаза

Конфигурация

Сразу скажу, конфиг этого умного дома я не выкладывал в паблик на гитхабе, но можно посмотреть конфиг моего дома, там всё так же. Конфигурация моего умного дома на gihub.

Для упрощения конфига для кучи однотипных устройств я использую самописный генератор простыни. С его помощью можно быстро сделать конфиги для устройств со всеми необходимыми свойствами.

Создаём контейнер в proxmox, VLAN для умного дома, что бы изолировать сеть и пробрасываем USB донгл координатора, перед этим добавив в udev статическое имя для девайса:

# Add USB Z-Stack stick as special device to be provided by VM
# Sonoff Zigbee 3.0 dongle

SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="ttyUSB-Z-Stack", MODE="0666", GROUP="dialout"

Теперь он у нас доступен как /dev/ttyUSB-Z-Stack, теперь можно пробросить в контейнер:

lxc.cgroup.devices.allow: c 188:* rwm
lxc.mount.entry: /dev/ttyUSB-Z-Stack dev/ttyUSB-Z-Stack none bind,optional,create=file

На самом деле, девайс можно было пробросить и без имени в udev, используя путь /dev/serial/by-id/usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0, но мне удобнее когда девайс один и тот же в разных системах.

Собираем всё вместе, запускаем OpenHAB, всё работает, наслаждаемся.

Интерфейс умного дома

Используется штатный UI OpenHAB и его приложения под iOS и Android:

Лаконично и всё есть. Но, приложение нужно только для того что бы включить отопление, когда ты собрался домой или проверить – не забыл ли выключить свет. Если умный дом требует копаться в телефоне, что бы включить верхний свет – то это херня а не умный дом. Свет везде управляется автоматически, физическими кнопками и голосовым управлением.

Подключение к Алисе

Следующий этап – добавить голосовое управление. Штука чрезвычайно удобная, когда хочешь включить свет или вытяжку, но темно / мокрые или грязные руки / уже плюхнулся на диван и так далее.

Для данной цели купили Яндекс Станцию мини 2 с часами. Вообще, умный дом можно целиком собрать в яндекс-станции, т.к. у них есть штатная опция как zigbee координатора, но такой способ я даже не рассматривал – такой умный дом будет совершенно не гибкий, в конфигурации где-то там в приложении и не работать без интернета – на фиг такой умный дом нужен.

Поэтому делаем так – ставим прослойку, которая будет показывать Алисе наши устройства, используя кастомный навык. Для этого сделал форк yandex2mqtt, которую знатно перепилил, оригинальная штука работала, но была прям недоделанная. Исправил тучу багов, сделал тюнинг, что бы всё работало нормально.

Создаём приватный навык в консоле разработчика, пробрасываем порт на роутере, что бы Алиса могла дергать наш сервис, заполняем ключи/логины/пароли. Подробнее – смотрите в Readme.

Одно из изменений, которые сделал – разделил конфиги с секретами (ключи API и прочее) и конфигурацию устройств как отдельные файлы. Что позволяет выложить это всё на github. Так же добавил ещё примеров. Сделаю про это отдельную статейку.

Моя конфигурация умного дома для Алисы через yandex2mqtt и файл с шаблонами для устройств. Я быстро переделал всё на функции, делать километровую простыню руками неудобно. Так же в оригинальный сервис добавлена опция, что бы посмотреть итоговый конфиг, после шаблонов.

Теперь можно просить что-то:

  • Алиса, включи свет
  • Алиса, включи вентилятор ванной на 30 минут
  • Алиса, выключи вытяжку

Это действительно очень удобно. Я никогда раньше не пользовался голосовым управлением, сейчас вот наконец понял, что это реально полезная штука.

Проблемы

Главная проблема – отсутствие нейтрали в подрозетниках. Использованные реле в подрозетники без нейтрали иногда зависают. Позже заменил некоторые на такие же с нейтралью, где это возможно, на остальное забили – тот свет всё равно используется редко. Правильное решение – заменить сами светильники на нативные Zigbee, но это будет решение дороже, решили не вкладываться так.

Потолочные светильники – они с функцией RGB с управлением через пультик. Такое управление невозможно нормально интегрировать, кроме того они подключивают из-за умных выключателей, верхний свет может включится цветной, а не ярко белый. Правильное решение – заменить сами светильники на нативные Zigbee, но это будет решение дороже, решили не вкладываться так.

В остальном всё работает хорошо, пользовательница в восторге 🙂

One thought on “Умный дом в Питере – OpenHAB с Яндекс Алисой

Leave a Reply

Your email address will not be published. Required fields are marked *