Хоум ассистент с чего начать
Home assistant, с чего начать?
• 26-08-2020 •
Быстрые ссылки на Aliexpress
С недавних пор, решил отказаться от majordomo в сторону home assistant. Я уже давно был в курсе об этой системе, как и о многих других. На мое решение повлиял опрос в телеграме в одном из каналов данной тематике. Канал не был посвящен home assistant, а умным домам в целом.
Как мы видим, из данного опроса, 47% проголосовало за home assistant.
Что меня не устраивало в Majordomo?
В целом majordomo работал стабильно и выполнял свои функции, один из больших плюсов для меня, я достаточно хорошо знаю PHP и мне было просто писать скрипты для автоматизации. Да и в целом мне показалось, на majordomo начать работать достаточно просто. Но все же, выше указанные факторы меня напрягали.
Что стоит учитывать при переходе на Home assistant
Более сложный старт чем в majordomo.
Если вы собираетесь использовать home assistant на raspberry PI 4 с microSD карте. То вам придется каждые пол года заменять карту на новую, так как из-за большого потока данных, больше она не проработает.
К счастью, с недавних пор, raspberry PI 4, может стартовать с жесткого диска и к счастью новые версии home assistant тоже запускаются на жестоких дисках на rpi4.
В целом на HA очень часто выпускают обновления и работать на нем становиться все проще и проще. К примеру на данный момент, большинство автоматизаций, можно реализовать с помощью графического интерфейса, не все, но большинство.
С чего начать? Установка home assistant
Что вам понадобится:
Сразу скажу, что home assistant делится на 2 части:
Home assistant core — Это стандартный функционал, который подойдет для гиков, которые не хотят использовать стороние плагины и приложения.
Home assistant (hassio) — Это стандартный функционал + возможность устанавливать и использовать сторонние плагины и приложения, которые можно устанавливать через графический интерфейс, что облегчает работу в разы. (Рекомендую именно этот вариант!)
В начале статьи есть прямые ссылки на aliexpress!
В официальном гайде нету инструкции по установки приложения на жесткий диск, это связано с тем, что этот метод на данный момент проходит бета тестирование. Хотя на тот момент, когда вы это читаете, уже может и есть.
В первую очередь, вам понадобиться перевести малинку в режим старта с жесткого диска.
Для этого нужно подключиться по SSH и ввести пару команд.
Дальше нужно скачать и распаковать на диск последнюю версию home assistant
На данный момент я использую 5.0 beta, ранние версии не поддерживают загрузку с жесткого диска.
Ссылка на список релизов, где можно скачать.
После того, как скачали, нужно распаковать на жесткий диск, я это делаю с помощью программы balenaEtcher. Это бесплатное и максимально простое приложение, специально для этих дел.
Подключаем жесткий диск к компьютеру с помощью USB, запускаем balenaEtcher и делаем распаковку.
Дальше, достаем microSD с малинки, подсоединяем жесткий диск по usb, подсоединяем кабель с интернетом и включаем питание.
Если все прошло успешно, то малинка получит IP адрес (Который вы сможете обнаружить в своем роутере). И в течении 5 минут будет скачивать все необходимое для работы с home assistant
Как настроить WI-FI на RPI4
Если почитать официальную инструкцию по установке, то там написано что лучше использовать Ethernet кабель. И больше ничего не написано.
В моем случае, я хотел разместить RPi4 в центре дома, но совсем не хотелось подводить туда кабель для интернета, по этому для меня очень важно было использовать wi-fi. Тем более, что он там есть.
Один из первых способов, которые можно найти в гугле, это установить плагин SSH & Web Terminal Addon подключиться по ssh и настроить wi-fi. Но к сожалению, этот плагин у меня не запускался и судя по комментариям, такая проблема у многих, по этому я не буду его рекомендовать.
Другой способ, который сработал, это подключить малинку к монитору, перезапустить ее, и перед тем как загрузиться home assistant настроить wi-fi.
Для этого нужно ввести стандартный rpi логин, пароль:
Первое знакомство с Home Assistant
Home Assistant – популярное приложение с открытым исходным кодом для организации умного дома. Первый опыт автора в работе с Home Assistant основывается на попытке интеграции в него ‘умной рисоварки‘. Автор постарается описать основные компоненты и возможности данного приложения, с которыми ему привелось пошагово познакомиться. Статья является в чем-то обзором, в чем-то руководством для желающих начать свое знакомство с Home Assistant.
Тем, у кого мало свободного времени, советую пропустить присказку – первую главу – и перейти сразу ко второй. Вам нужно знать только, что работать мы будем с умной китайской рисоваркой от Xiaomi.
Умная рисоварка
Рисоварка, очевидно, — это устройство для приготовления риса. Вики демонстрирует нам керамические рисовые пароварки из Британского музея, датирующиеся 1250 г. до н.э. В 1945 году корпорация Mitsubishi стала первой в Японии компанией, производящей домашнюю электрическую рисоварку. Наша модель — Rice Cooker от Xiaomi – может готовить не только рис. “Это великолепное устройство для приготовления не только риса, но других типов блюд. Оно может готовить и супы, и пирожные, и многое другое” — говорится в рекламе. Но самое главное — это наличие wi-fi модуля, ПО с возможностями автоматизации и 200+ программно установленных рецептов. “Путь к умному дому через желудок – это правильно”, подумал автор, и решился.
Xiaomi Rice Cooker, как и подобает цифровому устройству, внешне очень привлекательна, радует округлостью форм и общим минимализмом. Для её настройки и использования производитель предлагает приложение Mi Home. После регистрации Mi account, программа легко отыскивает новое устройство, и вы регистрируете его в вашей локальной сети. Интерфейс приложения не самый плохой, предоставляет базовые средства для автоматизации, может принимать уведомления от устройств. Однако, есть существенные недостатки. Не всех может порадовать отправление информации разработчику о каждом клике пользователя. И неприятное выражение находит часто упоминаемый нынче национальный калорит. Вместо 200+ рецептов на иностранные языки переведено и доступно всего лишь четыре. Остальное – исключительно для китайского народа. Когда ваша ‘умная’ рисоварка не способна выполнять все обещаные кулинарные обязанности, тут, согласитесь, становится грустно. Побродя некоторое время по интернетам, погрустневший автор наткнулся на следующий интересный проект (вечных благ автору). Который оказался посвящен разработке модуля для некоего Home Assistant.
Home Assistant
Сперва, немного общей информации. Как нам говорят на домашней странице HA, ”Это ПО с открытым кодом для автоматизации умного дома, ориентирующееся на локальное управление и конфиденциальность. Развиваемый трудом открытого сообщества энтузиастов, он отлично подходит для работы на Raspberry Pi или локальном сервере.” Проекту более пяти лет, он использует python и лицензию Apache 2.0. Версия релиза на момент написания этих строк – 0.99.3.
Для управления устройствами HA использует отдельные модули (integrations, или components). Создать такой довольно просто. На сайте можно найти каталог основных (одобренных и поддерживаемых сообществом) модулей. Среди общего их количества (1485 штук) попадаются совершенно разнообразные, в каталоге значятся имена amazon, google, xiaomi, и даже один раз yandex.
Попробуем установить HA в виртуальное окружение на линукс десктопе. Нам понадобится python3 и менеджер пакетов pip.
После этого на http://localhost:8123 станет доступнен графичекий интерфейс HA. При первом входе потребуется создать аккаунт пользователя. Веб-интерфейс HA довольно объемен. Пара важных элементов, о которых стоит упомянуть в самом начале, это закладка Configuration → General, где вы легко можете перезагрузить файлы конфигурации или сам сервер. А также страница Info в списке Developers tools, где можно посмотреть логи ошибок.
Все необходимые пользователю данные HA хранит, в случае линукс, в папке настроек “
/.homeassistant”. Файлы настройки записаны в формате YAML, и основной из них – это “configuration.yaml”. Он объединяет данные модулей, автоматизаций, etc. Возможность импорта позволяет разбить настройки на отдельные логически организованные файлы. Модули же хранятся в подпапках “components” (встроенные) и “custom_components”.
Этих знаний для установки нового модуля нам должно быть достаточно. Копируем с репозитория папку “xiaomi_cooker” в нашу “
/.homeassistant/custom_components”. Согласно описанию, добавляем настройки модуля в файл “configuration.yaml”:
Готово. После перезагрузки HA в разделе General → Integrations веб-интерфейса появится запись о новом модуле.
Любой модуль представляет собой некоторый набор объектов (entities) и сервисов (services, по сути — функции). Объекты хранят различные принимаемые от устройств данные. Например, sensor.xiaomi_cooker_temperature – температуру рисоварки, sun.sun – положение солнца. Данные объекта выражаются одним основным значением — статусом (state), и произвольным набором дополнительных аттрибутов (attributes). Сервисы используются для передачи команд и значений устройствам. Например, xiaomi_cooker.start – команда начала работы рисоварки, или homeassistant.check_config – инициализация поиска ошибок в файлах настроек HA. В списке Developer Tools веб-интерфейса находится раздел Services, где можно просмотреть доступный вам список сервисов и поиграться с их вызовами. Рядом есть раздел States, где, соответственно, можно просмотреть и поизменять значения объектов. Нужно заметить, что изменения значений объектов в разделе States имеют односторонний характер. Т.е. если, например, поменять здесь состояние объекта lights.state с off на on, на истинном состоянии устройства это не отразится, и при следующем же обновлении данных от устройства значение объекта будет перезаписано в реальное.
Automation
Нужно заметить, что пока еще не все доступные автоматизации (например, приведенную выше) можно сконфигурировать без редактирования yaml-кода, через графический интерфейс, но разработчики говорят об активной работе над устранением этого недостатка.
Templating
entity_id мы оставили пустым, поскольку уже добавили автоматизацию, которая будет самостоятельно вызывать обновление данных объекта.
Python Scripts
/.homeassistant/python_scripts”, станут доступны в качестве сервисов с именами “python_scripts. ”. Их код выполняется в заранее заданном окружении, где переменные data и hass дают нам доступ к аргументам вызова сервиса, а также объектам и сервисам HA. В качестве примера приведем код файла “charge_set.py” для сервиса “python_scripts.charge_set”. Его функцией будет установка заряда нашей батарейки:
Creating integration
После этого сообщим о новом модуле файлу настроек “configuration.yaml”, добавив в него строчку с названием модуля: “overmind:”. Задача решена.
Lovelace UI
Так называется используемый HA фронтенд. Этот графический интерфейс, через который обычному пользователю предлагается управлять умным домом, является заглавной страницей веб-интерфейса HA. Интерфейс LUI формируется из карточек (сards) разнообразых типов, которые могут отражать значения объектов, служить для вызова функций и прочих задач. Карточки можно распределять по страницам (view), по аналогии с браузерными закладками. Настройка удобно организована через тот же графический интерфейс, но доступна и посредством yaml-кода, для чего там же присутствует встроенный текстовый редактор. Рекомендую заглянуть на страницу https://demo.home-assistant.io/, где приведено несколько различных примеров настройки LUI, и где их легко можно посмотреть, пощелкать и поизменять.
Пример настройки графического интерфейса
Говоря о недостатках интерфейса, к сожалению, разработчики сами признаются, что проект пытается усидеть одновременно на стульях десктопа и смартфона. LUI, по умолчанию, любит самостоятельно определять расположение и размеры карточек, что иногда может превращать нормально выглядящую на мониторе страницу в полную кашу на экране смартфона, и наоборот. Присутствуют некоторые простые инструменты для упорядочения интерфейса, но и они, по моему опыту, не всегда эффективны.
Думаю, не имеет большого смысла описывать создание интерфейса посредством графических инструментов, поэтому я приведу несколько примеров в виде использованного мной yaml-кода. Создав для нашей рисоварки отдельную страницу (view), мы постараемся заполнить её самыми необходимыми элементами так, чтобы это не вызывало отторжения при пользовании с экрана смартфона.
Тут же опробуем те самые простые инструменты упорядочения интерфеса, это – horizontal-stack и vertical-stack. Сперва, создадим vertical-stack из карточек типов entity-button и sensor. Первая будет служить для запуска нашей рисоварки, вторая – для отображения значения температуры:
Home Assistant включает в себя архив иконок Material Design Icons, которые, через соответствующие имена (например, mdi:selection), можно использовать в элементах настроек. Скрипт (в данном случае, не python-, а yaml-), который мы использовали для вызова сервиса, это еще один удобный инструмент HA.
Теперь объединим приведенный выше vertical-stack с карточкой портрета нашей в теперь уже horizontal-stack. Все будет так же просто:
/.homeassistant/www’ становятся доступными по ссылке http://localhost/local/filename.
Следующим шагом мы немного поработаем над созданной нами кнопкой вызова сервиса. Для нас было бы удобно, если бы она работала как тумблер, т.е. на включение/выключение, а не так, как это сделано сейчас. Этого можно добиться через использование карточки типа conditional, отображение которой на экране можно регулировать через задание определенных условий. Ниже приведен код для карточки, которая является кнопкой выключения рисоварки и видна только при условии, если рисоварка находится в процессе приготовления блюда:
Переписав подобным образом ранее созданный код кнопки влючения, и объединив его с этим, мы получим одну кнопку, работающую одновременно на включение и выключение.
Дополним наш интерефейс еще одной карточкой — с отображением времени до окончания приготовления (аналогично карточке температуры), и еще одной – с деталями приготовляемого рецепта (custom:recipe-card). В итоге получим что-то такое:
Custom Cards
Для использования новой карточки нужно будет добавить в начале файла настроек LUI следующий код:
и среди списка карточек:
Notifications
Необходимой частью умного дома является отправка сообщений пользователю. В HA такие сообщения называются notifications (уведомления) и существует два базовых типа уведомлений. Первый – это внутренние уведомления (persistent notifications). Для их отправки используется встроенный сервис «persistent_notification.create». Список таких сообщений доступен через иконку колокольчика в графическом интерфейсе, они используют markdown разметку и по сути довольно просты.
Другим, более интересным, инструментом является встроенный модуль notify, который через установку дополнительных модулей позволяет передавать сообщения, используя сторонние платформы. В качестве примера рассмотрим модуль для telegram.
Для использования модуля нам, прежде всего, будет необходимо создать бота в самом telegram. При настройке нам понадобится chat_id нашего пользователя и API token бота. Как получить эти данные – детально рассказано по ссылке выше, будем считать, что они у нас готовы. Переходя непосредственно к установке модуля, сперва, как мы уже делали, скопируем его исходники в папку components, а затем добавим его настройки в файл “configuration.yaml”:
плюс настройки модуля notify:
Модуль telegram позволяет нам отправлять сообщения, картинки, или видео. В качестве примера, создадим автоматизацию для отправки сообщения с картинкой, уведомляющее нас об окончании приготовления блюда.
Послесловие
Welcome to the release notes of yet another wonderful release! No, we’re not going for 1.0, we’re doing 0.100! We feel like we’re not ready yet with our goals for 1.0, but we’re making progress every day. For a sneak peak of what we’re thinking about, check our blog Simple mode in Home Assistant 1.0.
Home Assistant, статья 1 (установка)
UPD 28.06.2019
На данный момент я ушел с этого пути и использую установку HA в Docker. Мой готовый образ для Raspberry PI3b/3b можно найти тут. Мой актуальный конфиг HA тут.
Сегодня начнем небольшой (а может быть и большой) курс статей по знакомству с Home Assistant. Это еще одна система управления умным домом, свежая, гибкая кроссплатформенная. Для простоты дальнейшего повествования буду называть его HA. Есть 4 пути заиметь сию систему на своем устройстве. Речь дальне пойдет про малинку, но забегая вперед, могу сказать, что установить его можно практически на любое устройство с Unix-like системой. Итак у нас есть 4 варианта из которых я на данный момент буду говорить об одном.
1. Развертывание готового образа Hass.io на флешку
2. Установка в виртуальное окружение питона
3. Установка в Docker
4. Развертывание Raspbian с установленным HA на флешку
Я для себя выбрал второй вариант как более простой, понятный, а так же дающий более подробные знания о том что мы делаем.
Для начала нам нужна малинка с установленной Raspbian. Подойдет любая, даже та которая сейчас используется. Статьи по её установке можно найти например тут и тут. Подключаемся к малинке по ssh и обновляем систему до актуального состояния:
После того как процесс удачно завершится, необходимо установить дополнительные пакеты, необходимые для дальнейшей работы:
Далее добавляем нового пользователя для запуска и работы с HA, с его домашней директорией, где будут храниться конфиги:
Этой же командой мы добавили нового пользователя в группы dialout и gpio для управления интерфейсами самой малины. Далее создадим директорию для установки HA и назначим хозяина директории:
После этого создадим виртуальную машину от нашего нового пользователя homeassistant:
Первоначальные приготовления на этом закончены. можно ставить HA. Проделываем это следующей командой:
После ввода команды ждем от 5 до 25 минут в зависимости от скорости вашей флешки, пока все это добро установится. Теперь запускаем наш HA первый раз для создания первоначальных каталогов и конфигов:
Ждем еще минут 10 минимум, пока скачаются необходимые файлы, после этого останавливаем HA комбинацией ctrl c. Выходим из под шелла пользователя homeassistant командой exit. После необходимо создать сервис, который будет запускать HA при перезагрузки малинки. Создадим для этого файл сервиса:
Вставляем в него следующий текст и сохраняем файл:
Далее надо активировать наш сервис в системе и запустить его:
Если вы все сделали правильно, через небольшой промежуток времени вы сможете увидеть свой свежеустановленный в браузере. Для этого необходимо перейти по ссылке http://ip.малинки:8123 и откроется что-то похожее на это:
Как видите это долго, но совсем не сложно! В дальнейшем для обновления HA необходимо подключиться к малине по ssh и выполнить следующие три команды:
На этом мы заканчиваем первоначальную установку и настройку и увидимся с вами в следующих статьях!
Настройка Home Assistant: начало. File Editor. Настройка интерфейса
Все настройки внешнего вида, конфигураций и сценариев в Home Assistant можно выполнить как через web-интерфейс, так и вручную, прописывая все в конфигурационных файлах. Очень рекомендую пользоваться именно вторым способом.
Для написания всего и вся в Home Assistant используется язык YAML. Тут важно запомнить два момента:
Установка File Editor
Для редактирования файлов конфигурации скачиваем и устанавливаем File Editor из Add-on Store:
Выбираем его, нажимаем Install, ожидаем завершения установки, после чего запускаем нажатием на кнопку Start и включаем Show in sidebar (выносит иконку запуска редактора в сайдбар слева).
После установки можно переходить к первоначальной настройке. Основной файл, в котором описаны все настройки – Configuration.yaml. Так что запускаем File Editor и открываем данный файл (скорее всего он откроется по умолчанию).
Configuration.yaml
Для создания файлов и папок, а также перехода между ними, нажимаем Browse Filesystem в File Editor:
Я создал папку myconfig (имя может быть любое) и уже в ней буду создавать все файлы конфигурации. Удаляем все стандартные файлы (groups.yaml, scenes.yaml, automations.yaml, scripts.yaml) из корневой папки и создаем новую папку и уже в ней файлы groups.yaml, scenes.yaml и папки sensor и automation.
Далее открываем файл configuration.yaml и добавляем туда строчки, как показано в примере ниже (выделил красным). Первый блок открывает возможность конфигурировать интерфейс через конфигурационный файл, второй – указывает пути до новых файлов и папок (myconfig меняем на название Вашей папки).
Добавление сенсоров
Первое, что можно сделать – вывести различную информация о состоянии сервера на главный экран. Для этого переходим в папку sensor и создаем там файл sysmonitor.yaml (название может быть любым). В нем – прописываем нужные нам сенсоры, список которых можно взять тут. Прописываем со всеми пробелами, как в примере ниже:
Настройка интерфейса
Создаем файл с именем ui-lovelace.yaml в папке, где и configuration.yaml. В него будем прописывать все настройки интерфейса. Ниже – пример моего файла, в который я добавил сенсоры из прошлого пункта и написал комментарии к большинству строчек. Найти имя нужного сенсора, его атрибуты и текущее состояние можно в панели разработчика во вкладке «Состояния»:
В итоге получился вот такой вот главный экран:
Установка и первичная настройка Home Assistant на контроллеры JetHome
Способы установки Home Assistant на контроллеры JetHome
Производитель указал у себя в документации три способа установки Home Assistant.
Давайте рассмотрим каждый способ в отдельности.
Установка Home Assistant в виртуальное окружение python
Первый вариант установки производиться в домашнюю директорию пользователя, или в другой каталог операционной системы.
К преимуществам этого метода можно отнести экономию как дискового пространства, так и оперативной памяти. Также достоинством данного метода является то, что его можно использовать даже на самых младших моделях JetHub, с 512Мб оперативной памяти и 8Гб eMMC.
Основным недостатком, в данном случае, является отсутствие Supervisor, и соответственно, невозможность установки аддонов HA через Web-интерфейс. Однако, для знатоков линукса это не является проблемой, т.к. основные популярные аддоны, такие как zigbe2mqtt и mosquitto можно установить в операционную систему.
Сам процесс установки описывать в этой статье не буду. Но могу сказать, что получаемый в итоге результат стоит потраченного времени. Пишите в комментариях, если вам интересен процесс установки со всеми необходимыми аддонами, я обязательно расскажу в следующих статьях.
Установка HomeAssistant Supervised
Второй вариант рассчитан как раз для тех, кому нужен Supervisor. Установка производится через командную строку на операционную систему, которая установлена от производителя. Метод установки заключается в копировании команд и вставке их в терминал SSH контроллера.
Давайте рассмотрим этот метод установки более подробно на контроллере с заводским ПО.