Настройка home assistant windows

Windows

Install Home Assistant Operating System

Follow this guide if you want to get started with Home Assistant easily or if you have little to no Linux experience

Download the appropriate image

Create the Virtual Machine

Load the appliance image into your virtual machine software. (Note: You are free to assign as much resources as you wish to the VM, please assign enough based on your add-on needs)

Minimum recommended assignments:

All these can be extended if your usage calls for more resources.

Hypervisor specific configuration

  1. Create a new virtual machine
  2. Select “Other Linux (64Bit)
  3. Select “Use an existing virtual hard disk file”, select the VDI file from above
  4. Edit the “Settings” of the VM and go “System” then Motherboard and Enable EFI
  5. Then “Network” “Adapter 1” Bridged and your adapter.
  1. Create a new virtual machine in virt-manager
  2. Select “Import existing disk image”, provide the path to the QCOW2 image above
  3. Choose “Generic Default” for the operating system
  4. Check the box for “Customize configuration before install”
  5. Select your bridge under “Network Selection”
  6. Under customization select “Overview” -> “Firmware” -> “UEFI x86_64: …”.****
  1. Create a new virtual machine
  2. Select “Custom”, make it compatible with the default of Workstation and ESX
  3. Choose “I will install the operating system later”, select “Linux” -> “Other Linux 5.x or later kernel 64-bit”
  4. Select “Use Bridged Networking”
  5. Select “Use an existing virtual disk” and select the VMDK file above,

After creation of VM go to “Settings” and “Options” then “Advanced” and select “Firmware type” to “UEFI”.

  1. Create a new virtual machine
  2. Select “Generation 2”
  3. Select “Connection -> “Your Virtual Switch that is bridged”
  4. Select “Use an existing virtual hard disk” and select the VHDX file from above

After creation go to “Settings” -> “Security” and deselect “Enable Secure Boot”.

Start up your Virtual Machine

  1. Start the Virtual Machine
  2. Observe the boot process of Home Assistant Operating System
  3. Once completed you will be able to reach Home Assistant on homeassistant.local:8123. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at homeassistant:8123 or http://X.X.X.X:8123 (replace X.X.X.X with your ’s IP address).

With the Home Assistant Operating System installed and accessible you can continue with onboarding.

Install Home Assistant Core

This guide assumes that you already have an operating system setup and have installed Python 3.8 (including the package python3-dev ) or newer.

Install dependencies

Before you start make sure your system is fully updated, all packages in this guide are installed with apt , if your OS does not have that, look for alternatives.

Install the dependencies:

Create an account

Add an account for Home Assistant Core called homeassistant . Since this account is only for running Home Assistant Core the extra arguments of -rm is added to create a system account and create a home directory.

Create the virtual environment

First we will create a directory for the installation of Home Assistant Core and change the owner to the homeassistant account.

Next up is to create and change to a virtual environment for Home Assistant Core. This will be done as the homeassistant account.

Once you have activated the virtual environment (notice the prompt change to (homeassistant) [email protected]:/srv/homeassistant $ ) you will need to run the following command to install a required Python package.

Once you have installed the required Python package it is now time to install Home Assistant Core!

Start Home Assistant Core for the first time. This will complete the installation for you, automatically creating the .homeassistant configuration directory in the /home/homeassistant directory, and installing any basic dependencies.

You can now reach your installation via the web interface on http://homeassistant.local:8123 .

When you run the hass command for the first time, it will download, install and cache the necessary libraries/dependencies. This procedure may take anywhere between 5 to 10 minutes. During that time, you may get “site cannot be reached” error when accessing the web interface. This will only happen for the first time, and subsequent restarts will be much faster.

Настройка Home Assistant: начало. File Editor. Настройка интерфейса

Все настройки внешнего вида, конфигураций и сценариев в Home Assistant можно выполнить как через web-интерфейс, так и вручную, прописывая все в конфигурационных файлах. Очень рекомендую пользоваться именно вторым способом.

Для написания всего и вся в Home Assistant используется язык YAML. Тут важно запомнить два момента:

Читайте также:  Аналоги clonezilla для linux

    1. При внесении правок в конфигурацию, написании сценариев и других действиях нужно обязательно соблюдать правила вложенности и правильно проставлять отступы. Более подробно я расскажу об этом далее, когда будем вносить правки в конфигурационный файл.
    2. После внесения необходимых изменений, Home Assistant нужно перезапускать для их применения (за исключением изменений интерфейса). Так вот, перед каждой перезагрузкой нужно обязательно выполнять проверку конфигурации. А для того, чтобы она была доступна, нужно включить расширенный режим:

      После его включения в настройках появится кнопка «Проверить конфигурацию». Соответственно сначала вносим необходимые изменения, проверяем в редакторе кода (который установим далее), что все ОК:

      Далее переходим по пути «Настройки» -> «Сервер»:

      И выполняем проверку. Если все хорошо, то нажимаем «Перезапустить» чуть ниже:

Установка 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. В него будем прописывать все настройки интерфейса. Ниже – пример моего файла, в который я добавил сенсоры из прошлого пункта и написал комментарии к большинству строчек. Найти имя нужного сенсора, его атрибуты и текущее состояние можно в панели разработчика во вкладке «Состояния»:

В итоге получился вот такой вот главный экран:

  1. Возможные типы карточек можно посмотреть в официальной документации (в правой колонке щелкаете по названиям ниже Cards). Там есть скриншоты и гифки, показывающие как они выглядят, а также список возможных параметров (на английском) и примеры кода.
  2. Доступные иконки можно найти щелкнув в редакторе кода на шестеренку и выбрав Material Icons в выпадающем списке. Далее, на открывшемся сайте в поле Search вводим что нужно найти (на английском), выбираем понравившуюся иконку и копируем ее имя. Обратите внимание, что все иконки прописываются так: icon: mdi:имя_иконки. После двоеточия, перед именем иконки пробела нет. И не забываем про mdi: перед именем.
  3. Обратите внимание на вложенность и пробелы в примере выше. Например, карточки, относящиеся к type: vertical-stack идут с выносом пробелами. Ниже идет горизонтальная группировка – type: horizontal-stack. Она вынесена от вертикальной (т к относится к ней) и все карточки, которые относятся к горизонтальной вынесены относительно нее. Если не соблюсти правила вложенности, то Home Assistant выдаст ошибку.
  4. Обязательные атрибуты, которые необходимо прописать карточке или сущности в официальной документации помечены словом REQUIRED . Опциональные – optional .
  5. После редактирования конфигурации не забывайте нажимать на иконку «Сохранить», появляющуюся в правом верхнем углу:

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

Установка Home Assistant на Windows

В данной статье будет пошагово описан процесс установки home assistant на ПК под управлением Windows 10.

Важно отметить, что операционная система Windows не является основной для HA, что проявляется в неполной работоспособности программного обеспечения, в связи с чем установку HA на Win10 рекомендуется производить только для ознакомления с возможностями ПО.

      1. Первым делом нам нужно установить Python. Идем на официальный сайт, выбираем последнюю версию, проматываем страницу вниз и выбираем нужный нам файл (например Windows x86-64 executable installer). Скачиваем и запускаем.
      2. При установке выбираем Customize installation -> на второй вкладке оставляем только pip -> на третьей выбираем Add Python to environment variables.
      3. После того, как Python установится запускаем командную строку: нажимаем Win и R, в появившемся поле вводим cmd и нажимаем Ок.
      4. Вводим в командной строке pip install homeassistant, нажимаем Enter и ждем пока все установится. В случае ошибок внимательно читаем и делаем что там будет написано. В моем случае не было Visual C++ 14.0. Для исправления – скачиваем Build Tools для Visual Studio с официального сайта, устанавливаем и перезагружаем ПК.
      5. Программа установлена и для запуска осталось ввести команду hass в командной строке. На данном этапе может появляться много ошибок, возможно придется прервать запуск (Ctrl+C) и запустить заново. Также брандмауэр может попросить разрешить доступ. Разрешаем. В самом конце запуска в консоли должна появиться строчка со следующим содержанием: INFO (MainThread) [homeassistant.core] Starting Home Assistant.
      6. Далее запускаем браузер и вводим localhost:8123. Если все сделано правильно, то откроется окно регистрации учетной записи. Если ничего не получилось, то попробуйте еще раз выполнить пятый пункт.
      7. Поздравляю, мы установили Home Assistant на ПК под управлением Windows 10.

С его первоначальной настройкой можно ознакомиться в статье: Настройка Home Assistant: начало. Решили перебраться на Raspberry Pi? Читайте инструкцию по установке по следующей ссылке.

Сказ о том, как я Home Assistant настраивал

Home Assistant — это популярная система умного дома, которая автоматизирует привычные бытовые процессы и работает на YAML файлах. В этой статье я расскажу, как настроить Home Assistant (далее HA), и что конкретно я использую в повседневной жизни. Это поможет вам избежать ошибок и быстрее продвинуться в изучении HA.

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

Основной единицей в HA является интеграция — логика, которая описывает взаимодействие с умным устройством или внешним сервисом. Большая часть полезной нагрузки HA ориентировано на связку: умное устройство + интеграция или внешнее API + интеграция.


Набор моих интеграций

Железо, участвующее в статье:

  • Микроконтроллер Esp8266, а также датчик температуры и влажности DHT11;
  • Лампа Xiaomi Desk Lamp;
  • Raspberry Pi 4B в 2GB версии, как сервер для HA (в дальнейшем буду ее называть малинкой);
  • Xiaomi Router 4A .

Сервисы, которые будем использовать:

  • OpenWeatherMap для получения погоды, температуры, влажности на улице и других метеопараметров;
  • Telegram для создания системы уведомлений;
  • Google drive для создания бекапов;
  • SpeedTest для замеров скорости;
  • А также OpenUV для замеров ультрафиолетового излучения и др.

Установка

Установка HA предельно проста:

  1. Записать образ HA на SD карточку (подробная инструкция с ссылками на скачивание для разных версий Raspberry Pi тут).
  2. Подключить питание и Ethernet к малинке
  3. Подождать несколько минут, пока система развернется в локальной сети на :8123 .

Также можно установить на уже имеющуюся систему с помощью Docker-compose:

А теперь разберем несколько сценариев использования.

Отслеживание устройств

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

  • с помощью роутера (у меня в наличии Xiaomi Router Mi4A),
  • с помощью GPS.

В системе доступно много производителей роутеров. Для старых и не перечисленных в списке моделей можно использовать nmap (более подробно тут).
Если установить на телефон официальное приложение, HA по умолчанию создаст интеграцию, и в системе появится дополнительное устройство, которое можно отследить.

С помощью Xiaomi Router Mi4A

  • Не требует никаких действий на устройстве, отслеживает всех в локальной сети.

  • Если устройство не подключено к домашней сети, то устройство пропадает в пустоту, и на картах мы его не увидим.
  • Иногда может сработать триггер выхода/входа из зоны, когда фактически девайс не покидает зону (можно попробовать решить расширением зоны).

С помощью GPS

  • Точность работы сравнима с GPS трекером в телефоне.
  • О телефоне можно узнать: процент заряда аккумулятора, заряжается устройство или нет, а также показатель состояния аккумулятора.

  • Можно контролировать устройства (пользователей) не только на вход домой, но и на вход в любую из кастомных зон.
    • Активно тратит заряд.
    • Требует подключение Интернета.
    • Для точного трекинга необходимо настроить SSL, чтобы телефон мог отправлять данные о местоположении из вне локальной сети.
    • Требует дополнительных прав доступа к GPS, возможна утечка данных третьей стороне в будущем.
    • На бюджетных телефонах, которые имеют свойство неожиданно менять местоположение GPS, возможны проблемы с выпадением из зоны.

    Создание системы отслеживания через роутер

    Трекинг через локальную сеть роутера требует настройки, в отличие от GPS отслеживания. Два вида трекинга можно комбинировать для повышения точности. Ниже можно заметить, что в моем случае отслеживание через роутер работает лучше, чем через GPS. Зеленая зона значит, что телефон внутри зоны, красная — вне зоны.


    Результаты работы отслеживания (сверху — роутер, снизу — GPS)

    Можно подключиться через плагин SSH в VS Code, но получить доступ к проводнику в данный момент мне было удобнее. Поэтому, добавим сетевое расположение.

    Нажмем обзор, найдем каталог config (мы в основном будем редактировать его) и выберем его как сетевую папку.

    Дальше мы можем перейти в созданную папку и открыть ее через редактор.

    После перезагрузки HA мы можем увидеть, что у нас появился новый глобальный объект device_tracker и наши устройства в нем.


    Трекинг устройств через роутер

    Освещение

    Теперь, когда мы умеем отслеживать пользователя, мы можем включать и выключать определенные лампочки с учетом информации о его местоположении.

    Для этого необходимо произвести действие по определенному событию. В этом нам помогут автоматизации.

    Теперь импортируем в наш основной файл весь каталог automation — так нам будет удобнее при написании следующих автоматизаций.

    Для того, чтобы получить адаптивное освещение в зависимости от времени суток, нужно настроить цветовую температуру. Это удобно сделать внутри блока switch. Тут важно понимать, что пока данный switch включен, изменить параметры температуры будет невозможно (через interval минус время_с_прошлого_обновления лампа примет старые параметры).

    Здесь вы найдете больше про динамическую цветовую температуру (flux в терминологии HA). А если вам интересна тема адаптивного освещения, на Хабре есть отличная статья по этому поводу.

    Для того, чтобы не разглашать всем секретные данные, создадим еще secrets.yaml . Туда мы сложим все данные, которые не должны попасть в публичный доступ. Для использования переменных из этого файла используем !secret.

    В итоге у нас имеется Telegram бот, готовый к отправке сообщений.

    Утренние (или нет) погодные оповещения

    Теперь, когда у нас есть настроенный сервис уведомлений и погодная интеграция, мы можем сделать утренние оповещения о погоде.

    Создаем новый файл автоматизации, и начинаем писать логику.

    Пишем переменную, которая будет отвечать за срабатывание оповещений только по будням. Если он true — то в выходные оповещений не будет.

    И подключаем в основном конфиг файле.

    Добавим blueprints

    Теперь небольшое лирическое отступление в виде рассказа о написании blueprints на примере уведомлений.

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

    Например, можно упростить создание уведомлений о начинающихся осадках.

    “for” — это время, в котором должен оставаться выбранный параметр, чтобы сработал триггер на превышение уровня осадков.

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

    Мы смогли вынести часть функциональности в отдельный файл. В подобных случаях, когда со временем появляется похожий код, можно выносить часть логики в отдельный файл.

    Для большей полезности можно изменить шаблон и поменять action на повышение яркости для света в доме или закрытие штор.

    Бэкапы

    В бэкап попадает весь каталог /config , а также все установленные расширения. С любого бекапа можно восстановить состояние системы на момент его создания.

    Можно настроить создание резервных копий в Google Drive:

    1. Скопировать ссылку https://github.com/sabeechen/hassio-google-drive-backup и зайти в HA (также можно прочитать подробную инструкцию в ReadMe репозитория по ссылке)
    2. Добавить ссылку как кастомный репозиторий в Supervisor’е через UI.

  • Открыть его (Open Web UI) и следовать инструкциям по аутентификации с Google Drive
  • После этих манипуляций мы получаем регулярное создание бекапов, важность которых сложно переоценить.


    NodeMCU

    Так как умного градусника у меня нет, а температуру измерять хочется, воспользуемся ESP8266.
    Сначала установим интеграцию ESPHome из официального списка интеграций.

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

    Подключимся к WiFi

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

    Теперь подключим data pin (обычно это средняя нога) термометра к D2 порту, дадим на него питание и землю. Потом создаём сам термометр (DHT11) и две переменные, которые будем отслеживать в HA.

    Дальше нужно скомпилировать прошивку и загрузить на контроллер. Если он подключен напрямую к Raspberry Pi, то мы увидим его на /dev/ttyUSB0 и сможем загрузить прошивку в первый раз. Все последующие обновления можно загружать по воздуху. А если в списке устройства не видно, то можно скачать прошивку и воспользоваться ESPHome-Flasher.

    Если все заработало, то в Developer Tools мы увидим созданные переменные.

    Немного оптимизации

    По умолчанию в HA используется SQLite, и сброс данных на диск происходит часто (каждую секунду). Это может привести в скором времени к выходу из строя SD карточки на малинке (если сервер стоит на ней). Чтобы продлить срок службы карточки, скажем HA, что нужно записывать на диск раз в commit_interval и исключить некоторые сущности, которые мы не хотим отслеживать на длинном временном промежутке (или вообще не хотим отслеживать).

    Если мы хотим использовать СУБД, отличную от SQLite, то можно сделать один из следующих пунктов на выбор:

    1. Установить соответствующий аддон для перехода на MariaDB.
    2. Использовать существующую реляционную базу данных на удаленной машине, если указать строку для подключения в параметр db_url .

    Отслеживание системных параметров

    Чтобы отслеживать остаток свободной памяти, загруженность процессора или скорость Интернет соединения, мы можем добавить мониторинг показателей системы.

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

    Также мы можем посмотреть Uptime сервера.


    Заключение

    • Простая установка и настройка, не требующая знания программирования.
    • Большое коммьюнити — вопросов на форуме много, ответов тоже хватает.
    • Огромное количество готовых интеграций со сторонними сервисами — скорее всего не придется писать свою интеграцию руками.

    • Достаточно сложно отлаживать систему. Если action можно запустить программно в обход триггера, то триггер тестировать уже сложнее.

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


    Главный экран

    Что дальше? Можно добавить HACS (сборник UI компонентов и даже целых интеграций от коммьюнити, пригодится при использовании Яндекс Станции) и установить несколько UI элементов. Можно интегрировать умную колонку или телевизор и включать их по определенному условию. Вариантов апгрейда бесконечное множество.

    Читайте также:  Kali linux metasploit windows
    Оцените статью