Найти тему

Мы построим умный дом. Часть 2

Оглавление

Первая часть получилась объёмная, но зато описал все подводные камни с которыми столкнулся. Теперь посмотрим мои мытарства дальше.

Чтобы решить проблему с подключением устройств с разными регионами (на тот момент у меня появился робот-пылесос для российского региона) и хоть как-то уменьшить потери в 3-5 секунд, я взял стороннею программу ми хоум. Наши умельцы взяли основную программу Сяоми и доработали её. Получилось, что не зависимо от региона теперь можно подключать устройства.

Поставил, поменял регион на Россию, опять все переподключил.

Стало лучше. Задержки в 1-2 секунды уже терпимее, но обновлять программу нужно вручную. И мы опять упираемся в ограниченность функционала в виде определения что все ушли и постоянные подкрутки автоматизаций, которые работают по времени восхода и заката.

К этому моменту я уже понял, что устройств Сяоми мне не хватает и для некоторых задач нужны устройства других производителей. Мне понравились Туя, но они не работают со шлюзом Сяоми (да, производители тоже хотят кушать J).

Начал изучать как поступить.

Пришел к выводу что самое разумное решение будет поставить Home Assistant (далее НА).

Копаем тему дальше. У меня дома есть NAS Synology. Используется для хранение фото, документов и для прочих домашних дел.

Чтобы не покупать отдельно сервер, попробовал поставить НА на него. Так себе идейка. Не предназначен он для нагрузки. Это все-таки хранилка файлов, а не полноценный сервер.

Значит выхода нет и придется ставить отдельную железяку. Сначала смотрел в строну Малинки (raspberry pi), но цены на неё сравнимы с ценами на неттоп из Китая. Да и предназначение у малинки немного другое. Роль сервера скорее вспомогательная.

Ок, лезем на Али и смотрим что есть в наличии. А в наличии много всего. Начиная от Интел НЮК в топовой конфигурации (за бешбабло) и заканчивая совсем уж простыми компами для офисных задач (с ценой соответственно в районе 5-7 тыс.).

В итоге остановился на машинке с селероном на 4-х ядрах, 8 гб оперативки, 128 гб SSD для данных (был бы на 64 – взял бы такой). WiFi, Bluetooth, Ethernet и куча юсб портов – в наличии.

В комплект к серверу взял zigbee свисток от Sonoff (он всеяден и ему не важно какие производители конечных устройств к нему подключаются).

Свисток это черненькая штучка с антенкой. У меня был ЮСБ удлинитель, поэтому я убрал свисток подальше от сервера и электрокабелей - меньше наводок
Свисток это черненькая штучка с антенкой. У меня был ЮСБ удлинитель, поэтому я убрал свисток подальше от сервера и электрокабелей - меньше наводок

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

Это разница в выключателях. Слева - Акара. Справа - Туя. Туя когда выключена светится зеленым, когда включена - оранжевым. Их всегда видно ночью. У Акара - очень слабый светодиод. Когда выключен - горит синим, когда включен - не горит. Ночью не видно. Если не знаешь где выключатель - не найдешь.
Это разница в выключателях. Слева - Акара. Справа - Туя. Туя когда выключена светится зеленым, когда включена - оранжевым. Их всегда видно ночью. У Акара - очень слабый светодиод. Когда выключен - горит синим, когда включен - не горит. Ночью не видно. Если не знаешь где выключатель - не найдешь.

И на закуску взял маленьких радиаторов – доп. охлаждение в сервер и NAS.

Всего получилось 25 тыс. с копейками. Ехало долго. Около 2х месяцев. Кроме того, брал на взлете курса доллара и поэтому получилось дороговато. Сейчас курс 59 руб и получиться должно намного дешевле.

Кроме того, пришлось менять роутер вайфай. Подарочный к ноутбуку от хуавей слишком кастрированный по функционалу. Купил Кинетик Вива. Еще 6 тыс.

Промежуточным итогом на умный дом уже потрачено 41 тыс.

Пендальф приехал

Приехало все одной посылкой. Упаковано хорошо, ничего не пострадало.

Первым делом цепляем неттоп к монитору, клаве и мышке и ставим убунту. Процесс даже проще чем установка Windows.

Дальше ставим всякие допники типа докера, ssh и сносим все барахло которое убунту поставила из коробки (типа браузера, офиса и прочих почтовых клиентов). Оглядываясь назад, сейчас бы я поставил серверную версию. Без всяких бантиков типа красивого интерфейса и не нужных программ.

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

Белая большая коробка - NAS. Маленькая серенькая - сервер умного дома.
Белая большая коробка - NAS. Маленькая серенькая - сервер умного дома.

Теперь можно полноценно настраивать.

Ставим НА. Есть несколько способов это сделать, мне было необходимо чтобы стоял супервизор. Так что качаем 2 пакета – agent-os и homeassistant-supervised

Ставим, запускаем. Ждем минут 10. На выходе получаем готовый НА.

Теперь надо обязательно настроить роутер вайфай. Я не зря гонялся за кинетиком. У этих роутеров (у многих — это есть, но про кинетики я это точно знаю) есть такая штука как KeenDNS. Мы регистрируемся на сайте кинетика и он нам предоставляет постоянное имя домена 3-го уровня для роутера. Выглядит как xxxxxxx.keenetic.link, где xxxxxxx – мы придумываем сами. А так же есть ещё одна плюшка – можно создать домен четвертого уровня для любого адреса в домашней сети. Если сделать домен homeassistant.xxxxxxx.keenetic.link и сказать ему что обращаться нужно по, такому-то IP на порт 8123 – мы получает доступ из любой точки мира по постоянному адресу, который не будет завесить от нашего провайдера. Именно такая штука нам нужна для подключения мобильного приложения к домашнему серверу.

Вернемся к НА. После первоначальной настройки (пароль админа, местоположение, высота над уровнем моря и т.д.), система попробует найти все оборудование которое уже есть в сети (не устройства умного дома, а именно оборудование – принтер, NAS и т.д.). Так же в списке будет ZHA – это компонент для работы с устройствами умного дома. Мне он не нужен, так что настраивать его я не стал.

Дальше нужно обязательно перегрузить сервер.

Почему мне был необходим именно супервайзер? Можно было поставить его как просто контейнер докера, но в этом случае пришлось бы все дополнительные компоненты ставить руками и руками же настраивать. Это не сложно, мне было лень так заморачиваться. Поэтому супервайзер. И поэтому система мне сама определила какое ещё оборудование у меня есть.

Настройка НА

Дальше нужно поставить дополнения. Мне нужна была база данных для записи истории, файл эдитор (если нужно что-то быстренько поменять в настройках). менеджер БД (phpMyAdmin), самба и два дополнения для работы с умным домом – Москито брокер и Zigbee2mqtt.

Остальное по желанию и по необходимости. Первым ставится брокер – в настройках ничего делать на надо. Просто запускаем и смотрим в журнал, когда он стартанет. Вторым ставится Zigbee2mqtt. Тут в настройках уже нужно прописать путь к нашему свистку для Zigbee устройств. Для такой установки, как у меня - это будет port: /dev/ttyUSB0

Сохраняем, запускаем. Вот тут могут быть первые грабли – если при старте был установлен и настроен пакет ZHA, то при запуске Zigbee2mqtt, дополнение не запустится. В журнале пойдут ошибки. Дело в том, что оба дополнения цепляются к одному свистку и ZHA его захватил первым. Именно поэтому я и написал, что не настраивал этот пакет в начале. Если ZHA не установлен, то Zigbee2mqtt запустится без вопросов.

На панели у нас появится пункт Zigbee2mqtt. Переходим в него и нажимаем на кнопку «Запретить подключения (все)». Я не знаю кто придумал так это перевести, но эта кнопка запускает режим сопряжение. Пойдет отсчет 5 минут. Пока он ждет соединения – обходим все устройства (выключатели, реле, датчики и прочие устройства) в доме и переводим их режим сопряжения. В отличии от Ми Хоум, эта система сама ищет все устройства, и сама их добавляет.

Я делал следующим образом – запустил сопряжение, подошел к выключателю, зажал кнопку, замигали диоды, пошел к следующему устройству. Через 4-5 устройств возвращался к компьютеру и перезапускал сопряжение (чтобы время продлить).

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

Потом мне захотелось посмотреть на карту – что к чему подключилось. И тут меня ждал сюрприз.

Я не зря в первой части писал какие устройства могут быть роутерами, а какие конечными устройствами. Т.к. мои выключатели без нейтрали (то есть к ним не приходит фаза и ноль, а только фаза), они являются конечными устройствами и не могут на себя подключать другие устройства. В итоге роутеров у меня только 3 – свисток и 2 реле (к ним приходит 2 провода).

Делаем пометку на будущее – нужно расширить количество роутеров.

Дальше начинаем настраивать автоматизацию. Сразу дам совет – все что относится к свету (выключатели и реле) лучше сразу переопределить в тип устройства light – в будущем это решит много проблем.

Переходим в настройки – автоматизации и сцены и сверху видим 4 пункта: Автоматизации, Сцены, Скрипты и Проекты (фиг его знает кто их так перевел. Правильнее было бы Чертежи).

Сразу переходим в Проекты и нажимаем кнопку импортировать проект.

Нам понадобится ссылка на файл «Включение света по сенсору» из гитхаба. Добавляем чертеж. Эта штука нам здорово облегчит жизнь. Я взял за основу чертеж киевлянина Alex Kvazis и изменил его.

Туалет по-новому

Дальше щелкаем на кнопку создать автоматизацию рядом с этим чертежом, вводим название, выбираем из списка датчик движения в туалете, а в Light ставим объект «свет туалет» (мы же уже переименовали все наши выключатели)

Время выставляем в 120 секунд

Вуаля. Мы создали первую автоматизацию. При этом достаточно сложную:

Она делает следующее – видит по датчику движения в туалете (к этому времени я уже нашел правильное положение датчика и закрепил его на скотч из комплекта), включает свет и запускает обратный таймер на 2 минуты. Если за время отсчета датчик движения фиксирует движение, то таймер сбрасывается и запускается по новой и так до тех пор, пока в течении 120 секунд движения не будет. Дальше свет отключается.

Как это выглядит на практике? Человек (пусть будет Пупкин) зашел в сортир и сел, расслабился и открыл газетку (телефон, книжку, ноутбук и т.д.). Если датчик установлен правильно, то он будет фиксировать любое движение Пупкина (переворот страницы, движение пальца, изменение положения головы) и не будет отключать свет. После того как наш Пупкин покинул заведение раздумий о смысле жизни, датчик в течении 2х минут не будет фиксировать движение и отключит свет. За это время вентилятор высосет все запахи из туалета.

С ванной все сложнее

Первоначально я задействовал сразу 3 автоматизации на одну ванную.

Работало это по принципу, как и в МиХоум. Не удобно.

Дальше я начал думать, как сделать так чтобы ванна фиксировала нахождение Пупкина, даже если датчик не фиксирует движение? Дело в том, что датчик движения у меня расположен так, чтобы фиксировать вход в ванну и подход к раковине. Сама ванна в поле зрения датчика не попадает. Первая идея была – повесить второй датчик движение, но тут есть одна проблема. Если Пупкин будет спокойно лежать в ванной, то инфракрасный датчик может и не зафиксировать движение (если температура воды будет не сильно разнится с температурой тела. Да, есть такая проблема у инфракрасного датчика). Идея родилась, когда я зашел в ванну, а там плескался ребенок. Влажность просто зашкаливала. А если нам совместить влажность и движение через логическое или? У Сяоми для этого пришлось бы делать через 2 условия, в НА все проще. Мы создаем ещё один датчик в котором пишем «если движение или влажность больше 60%» при одном из условий датчик переходит в состояние True. Создаем автоматизацию по тому же чертежу, но только в сенсоре ставим не датчик движения, а наш виртуальный датчик. В Light ставим Свет ванная, время выставляем в 300 секунд. Сохраняем, идем проверять.

Пупкин входит в ванну помыть руки. Реальный датчик фиксирует движение, виртуальный переходит в состояние True – свет включился. Помыл руки, ушел. Через 5 минут таймер отключит свет. Второй вариант – Пупкин пришел в ванну, свет включился. Он залезает в ванну и включает душ. Датчик движения его уже не видит (вне поля зрения), но зато датчик температуры и влажности фиксирует повышение влажности свыше 60%. Т.к. мы использовали логическое «или», наш виртуальный датчик находится в состоянии True. Значит наш таймер не работает и свет не выключается. Наш Пупкин помылся и ушел из ванной. Влажность вытягивается вентиляцией и в какой-то момент падает ниже 60%. Датчик движения тоже не фиксирует движение. Запускается таймер и через 5 минут свет отключается. Это уже действительно удобно и экономично.

Автоматизации, связанные с восходом и заходом солнца

В НА есть специальный объект – Sun. Имеет 2 состояния «над горизонтом» и «за горизонтом».

Например, мне нужно включить ночную подсветку прихожей через 10 минут после захода солнца. В условиях ставим Солнце за горизонтом, смещение +10 минут. В действиях ставим включить подсветку прихожей. Вторая автоматизация – если время 00:00, то отключаем подсветку. Еще одна автоматизация – если время больше 06:30 и солнце за горизонтом включить подсветку. Ждем солнце над горизонтом и отключаем её.

Что мы получаем: солнце село и у нас есть подсветка пути к ванной и туалету. Все очень приятно для глаз и не создает дискомфорта. В 12 ночи, когда все легли спать – подсветка отключается. Зачем нам расходовать электричество, когда мы спим? В 6:30 если солнце ещё не встало, подсветка снова включается и не бьет по глазам и при этом дает спокойно одеться и уйти на работу.

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

Уход из дома и приход обратно

Вишенка на торте – НА, за счет того, что умеет подключаться к роутеру, а также он позволяет создавать виртуальные датчики, может определить есть кто дома или все ушли.

На самом деле задача решается 3 разными путями на выбор:

1. На телефоны жены и мой ставится мобильное приложение НА. Дальше уже сам умный дом определяет где мы в данный момент находимся и если входим в зону дома круг метров 100-200 (можно задавать в настройках на карте), то он понимает, что хозяева пришли и выполняет настроенные действия.

2. Создаем виртуальный датчик ping. На роутере фиксируем IP адрес телефонов членов семьи. Если пинги к телефону проходят, значит телефон в зоне действия роутера, а значит телефон дома. Как только телефоны становятся не доступны, дом понимает, что все ушли. У этого способа есть минус – устройства Apple, когда засыпают, отключают сеть и дом их перестает видеть.

3. Этот способ использовал я. Т.к. дом подключен к роутеру, то роутер ему отдает состояние зарегистрированных устройств. Если мой телефон и телефоны жены в офлайне, значит нас нет дома и можно выполнить некоторые действия.

Как это настроено? Создан виртуальный датчик с логическим «или» в котором определяется состояние телефонов моего и жены. Если хоть один из телефонов онлайн, то датчик вернет True. Если все офлайн – False. Дальше все просто. Я создал скрипт (звучит страшно, но на деле все делается мышкой), который параллельно запускает отключение света – не друг за другом каждую комнату, а сразу все. Сразу после этого действия он отключает не нужные автоматизации. Отключает всё, за исключением автоматизации включения «когда кто-то пришел домой». И 3-е действие отправляет сообщение в телеграмм, что дома никого нет и информацию о состояние света (ещё один виртуальный датчик который собирает информацию со всех светильников. Если все выключены, то состояние off). Да, НА умеет отправлять сообщение в телеграмм и даже может управляться из телеги.

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

Телега или как знать все

Кроме физического мира, НА работает и с виртуальным пространством. Например: каждый день, в 06:30 система мне присылает краткую сводку по состоянию системы (температура в квартире, влажность, давление) и информацию о погоде на сегодня.

Так же система мониторит состоянии батареек у датчиков и оповещает если заряд меньше 20%

В 10 утра приходит отчет о недоступности устройств - особенно внезапное отключение от системы, наблюдается у устройств Сяоми. Туя этим меньше страдает. Ничего страшного в этом нет, система настроена таким образом, что возвращает заблудшее дитя в семью Zigbee, но вот буквально пару дней назад акаровский выключатель вштырило капитально. Подключаться назад не хотел никак. Пришлось запустить процесс привязки устройства и сервер его тут же подхватил. В основном этим страдают устройства которые находятся далеко от свистка. Например, выключатель ванной и туалета стабильно показывает силу сигнала в от 1 до 11 единиц, при этом датчик температуры в зале показывает 158. Естественно, чем выше значение, тем лучше. А почему? Дело в том, что датчик температуры в зале находится в 30 см от свистка, а выключатель ванной и туалета в 10 метрах по прямой через 2 бетонные стены. Самое интересное что рядом (в одном метре без стен) находится реле подсветки прихожей, и оно выступает в роли роутера, но этот выключатель на отрез отказывается к нему цепляться – сеть то самоорганизующаяся. Именно поэтому я писал, что необходимы ещё роутеры и расставлять их тоже надо грамотно, образуя кольцо вокруг свистка в сервере.

Вот так сейчас выглядит моя сеть устройств. Синие - роутеры или устройства выступающие в роли роутеров. Зеленые - конечные устройства. Устройство "Свет ванна туалет" имеет силу сигнала в 12. Через некоторое время сила падает и устройство перестает реагировать. По этому и нужно больше роутеров. У других устройств такого не происходит
Вот так сейчас выглядит моя сеть устройств. Синие - роутеры или устройства выступающие в роли роутеров. Зеленые - конечные устройства. Устройство "Свет ванна туалет" имеет силу сигнала в 12. Через некоторое время сила падает и устройство перестает реагировать. По этому и нужно больше роутеров. У других устройств такого не происходит

Ну и на всякий случай оповещает о перезапуске сервера. Сам сервер работает как часы, а вот отключения электричества бывает. Редко, но случается.

Все датчики и настройки для телеги или чертежи лежат на гитхаб

Продолжение следует....