Однажды я попал к своему другу в квартиру, где он помигал мне RGB-лампочкой. Диво-дивное подумал я и решил завести и себе дом дурачок.
TL;DR Этот пост рассчитан на новичков и рассказывает про мои первые шаги с Home Assistant(HA). Надеюсь, он уменьшит порог входа, а также немного времени и средств :)
Начало
А нужен ли мне вообще этот умный дом и готов я в него вкладываться? Стандартный вопрос в начале любого дела. Так как и я был неуверен, бюджет был фиксирован одной сотней евро.
Рекомендую придумать минимальную задачу, которую для вас будет решать умный дом. У меня это стала балконная гирлянда, которая должна включаться в момент подхода к дому. Идею честно стырил у @vas3k. Спасибо! Кстати, пост рекомендован к прочтению, так как до сих пор(декабрь 2021) хорошо описывает общую картину мира
Hardware - не так страшно
Меня очень порадовала работа с железом, просто потому-что делать там особо нечего. Я больше потратил времени на выбор компонентов на амазоне, а с установкой справится и 5-летний ребенок.
Мой сетап (67€):
- Raspberry Pi 3B+ - основная плата. Главная особенность, что идет без кейса и блока питания (40€)
- Блок питания Мне понравился этот, удобная кнопочка для перезагрузки. Позволяет не раздалбывать microUSB порт регулярными манипуляциями (10€)
- MicroSD Согласно инструкции, Raspberry поддерживает от 8 до 32ГБ памяти. Я взял среднее, на 16 ГБ. На карту записывается Home Assistant OS, а также логи и, например, база данных - MariaDB (5€)
- КардРидер Если в вашем ноутбуке нету возможности записывать microSD карты - можно купить кардридер, подойдет самый простой (6€). Вроде можно записывать с Андроид телефона, но я не пробовал. Напишите в комментах у кого есть опыт
- Кейс (опционально) Удобная коробочка, которая закрывает вашу плату от пыли (6€)
Итого, я собрал все компоненты и подключил малинку к интернету. Ура, можно начинать.
Сама установка Home Assistant происходит очень просто. Записываете Home Assistant OS на microSD, вставляете ее в Raspberry PI и ждете минут 15-20, пока она установится. Подробная инструкция есть на официальном сайте.
Как достучаться к устройству?
Вариант 1 (локально, легко) Через локальную сеть, для этого подключите малинку через LAN-кабель или WiFi (UPD: c марта 2021 подключение по wifi значительно упростилось).
После вводите 192.168.x.x:8123 и попадаете на страницу. Также, если вы не знаете ip-address, можете попробовать посмотреть вкладку Clients на роутере или воспользоваться ссылкой http://homeassistant.local:8123/
Вариант 2 (извне, легко, платно) Мне захотелось проверять умный дом, находясь вне дома. Разработчики Home Assistant предоставляют платное Cloud решение.
Если вам лень разбираться самому и вы хотите поддержать проект - за 5€/месяц вы можете подключить платный сервис https://www.home-assistant.io/cloud/
Вариант 3 (извне, посложнее, бесплатно) Для тех, кто не боится сложностей - можете зарегистрировать свой домен, например на https://duckdns.org/ бесплатно. После вам требуется лишь пробросить порт 8123 наружу. Как? Смотрим тут
Лайфхак:
Если у вас айпи адрес меняется каждый день(динамический) - можно воспользоваться встроеной интеграцией либо на роутере активировать DynamicDNS. Зачем? Это позволит регулярно сообщать DuckDNS о смене вашего Ip-адресса и ваш умный дом будет доступен извне по доменному имени всегда.
HA - основы (Q&A)
Что такое Entity?
Любой сенсор или сущность, которая дает вам какую-то информацию
Где посмотреть логи?
Заходим в Configuration>Add-ons, Backups & Supervisor. Вверху меню на 3 пункта. Выбираем System. Тут вы увидите логи. Основное внимание следуюет обращать на Log Provider с именем Core
Как получить доступ к файловой системе в Home Assistant?
Можно установить File Editor Add-on либо открыть доступ через SSH
Как написать первую автоматизацию?
Можно использовать Web UI в разделе Configuration>Automations либо установить Node-Red (больше гибкости, но сложнее разобраться во всех элементах для flow-диаграмы)
Окей, а что за блоки Triggers, Conditions, Actions? HA реагирует на события. Температура изменилась - событие, Кто-то чихнул - событие и т.д. Triggers - это как раз и есть подписка на начальное событие, в случае наступления - автоматизация запустится. Conditions - дополнительные (опциональные) условия, которые должны быть правдивыми в момент работы автоматизации. Actions - действие, которое нужно сделать.
Интересным примером является закат солнца, это может быть как и Trigger так и Condition. Тригер запустится в момент заката, Condition в этом случае помогает включать лампочки, например, только после заката, когда тригером выступает другое событие, например, приход домой (человек вошел в зону Home)
Я нашел кнопку Script. Можно на нее нажать?
Да, конечно. Script - это как функция, которая содержит цепочку вызовов. Script'ы можно вызывать, как самостоятельно, так и в разделе Action
Что такое HACS?
HACS - это альтернативный установщик (а-ля Cydia на джеилбрейкнутом айфоне вместо App Store). Удобен быстрой установкой с Github'а (на ваш страх и риск конечно), вместо ручной установки через File Editor. За 2 месяца проблем со сторонними пакетами так и не было.
Как трекать геопозицию? Установите Companion App на телефон. После добавьте нового пользователя через Configuration>People & Zones. Не забудьте указать приложение в поле Pick device to track
Зачем слева Developer Tools? Эта вкладка показывает все состояния для каждого Entity. Помогает при отладке, также пользуйтесь фильтрами
Есть state, есть Attributes? В чем соль? Для примера возьмем датчик температуры. State - это основное состояние датчика, в данном случае численное значение градусов. В атрибутах записывается второстепенная информация, вроде напряжения батарейки, единица измерения, и т.д.
Как я могу добавлять свои конфигурации? Стандарт в HA - Yaml-файлы. В них описано почти всё, кнопки которые мы жмем в WebUI, просто обертка над текстовыми файлами. Советую изучить формат и посмотреть на готовые куски кода
Advanced. Мне нужно в yaml-файле получить доступ к состоянию, как? Используйте синтаксис '{{ states(''sensor.bedroom_humidity'') }}'. На остальные случаи жизни смотрим тут
Умная гирлянда
Прочитав множество форумов, оказалось, что умная гирлянда c wifi или zigbee - это оверкил. Достаточно купить самую простую без наворотов(15€) и воткнуть в умную розетку.
Мой выбор пал на Tp-Link tapo за 10€. Настроить же можно за 15 минут(читай раздел лайфхак) поместив папку из Github'a в папку custom_components и прописав пару строк в configuration.yaml.
Лайфхаки:
- Очень странно, но интеграция заработала только когда я установил Пароль на tapo Cloud из 8(!) символов в любом регистре без спецсимволов. Типичный DIY.
- Розетка издает негромкий щелкающий звук при включении и отключении, сравнимо с обычным выключателем света. Можно привыкнуть, но я был рад, что она стоит на балконе
Автоматизация в формате Yaml
alias: Turn on light when I come home
description: ''
trigger:
- platform: zone
entity_id: person.viktor
zone: zone.home
event: enter
id: '1'
condition:
- condition: sun
after: sunset
action:
- service: script.outdoor_light_toggle
data:
customMinutes: 15
mode: restart
Скрипт - outdoor_light_toggle
alias: outdoor_light_toggle
sequence:
- service: switch.turn_on
target:
entity_id: switch.tapo0
- delay:
hours: 0
minutes: '{{ customMinutes }}'
seconds: 0
milliseconds: 0
- service: switch.turn_off
target:
entity_id: switch.tapo0
mode: single
icon: mdi:outdoor-lamp
Что тут происходит?
Автоматизация стартует в момент, когда я (entity_id:person.viktor) возвращаюсь (event:enter) домой (zone: zone.home). При этом должно соблюдаться условие, что закат уже наступил (condition: sun, after: sunset). После вызывается скрипт outdoor_light_toggle, который включает (service: switch.turn_on) розетку (target: entity_id: switch.tapo0), ждет n-минут, а после выключает розетку-гирляндую
- Yaml: изначально я настроил всё через WebUI. Для того, чтобы использовать этот Yaml, создайте новую автоматизацию и сохраните. Переключение между режимами спрятано за 3мя точками в правом верхнем углу
- Sequence: У всех скриптов есть последовательность задач, которые нужно выполнить. Они записываются в блок sequence
- Mode: определяет, что происходит со скриптом(1), если в момент выполнения запускается еще один(2). Значения могут быть следующими: Single - 1ый скрипт продолжает выполняться, 2ой будет проигнорирован; Restart - 1ый прерывается, и начинается выполнение 2ого; Queued - скрипты становяться в очередь, 2ой будет выполнен после 1ого; Parallel - паралельно работают два
- Аргументы: Чтобы сделать скрипт более абстрактным и включать лампочки на разное время, я ввел аргумент '{{ customMinutes }}'. Для того, чтобы передать значение, нужно использовать ключевое слово data при вызове action с указанием значения. Более подробно про tempating тут
Что дальше?
Понравилось? Мне - очень. Как раз был Black Friday и я купил тройку датчиков температуры + на батарею 2 термоголовки . Продолжаю развлекаться. Об этом в следующих постах :)
Есть есть вопросы - вы всегда можете задать их в Вастрик.Дом Дурачок чате
Спасибо за пост! Тоже перешла на HA после того, как закончились простые сценарии автоматизации. Тоже на малинке с SD картой.
Меня впечатляет насколько серьезный умный дом это кросс-доменная дисциплина:
чертовы контейнеры.А еще это кроличья нора и конца да края ей нет. Это очень увлекательное хобби!
Сценарий, ради которого все затевалось:
Когда включается телек, шторы автоматически опускаются и свет в гостиной принимает положение "смотрим кино". Когда телек выключается или ставится на паузу, свет чуть оживает.
P.S.: я не инженер, но за 10 лет карьеры менеджмента в ИТ понахваталась всякого. И мне весело. Хотя местами сложновато. Вон, даже на собесах стала рассказывать что потолок моих технических знаний это HA умный дом на малинке :) :) :)
Потратил кучу времени, поставил HA, натыкал датчиков температуры, CO2, поставил умные регуляторы на батарею, датчики протечки воды, RGB-ленту, итд и прикрутил все это дело к Apple HomeKit.
Очень нравилось все ровно до вчерашнего дня, когда все zigbee девайсы просто отвалились по непонятной причине 😡
В планах было управление освещением и умные краны на воду, но теперь сижу и задаюсь вопросом надо ли оно все мне :-)