Сервер Home Assistant: інструкція з розгортання у віртуальній машині під ОС Windows

Сервер Home Assistant: інструкція з розгортання у віртуальній машині під ОС Windows

Пропонуємо до вашої уваги стислу інструкцію як початково встановити сервер Home Assistant у віртуальній машині з доступом з локальної мережі. 

Час виконання інструкції: 15-30 хвилин.

Що нам знадобиться:

  • персональний комп’ютер (бажано настільний, але підійде і ноутбук); 
  • операційна система Windows 10 встановлена на ПК;
  • домашній безпровідний чи провідний роутер;
  • Wi-Fi / Ethernet підключення ПК до роутера локальної мережі;
  • підключення до мережі Інтернет;

Зміст:

Крок 1. Скачування програвача віртуальної машини

Крок 2. Скачування образу диску готової віртуальної машини Home Assistant

Крок 3. Створення віртуальної машини

Крок 4. Перший запуск віртуальної машини

Крок 5. Створюємо у Веб-інтерфейсі аккаунт адміністратора

Крок 6. Фіксуємо IP-адресу хоста сервера Home Assistant на роутері

Крок 7. Налаштування базових плагінів

Крок 8. Встановлення плагіну ESP Home (Опція)

Крок 9. Підключення будь-яких зовнішніх пристроїв через ендпойнт (HTTP / MQTT / Web Sockets)

Крок 10. Доступ до сервера з Інтернет

Кроки виконання інструкції:

Примітка. Інструкція з розгортання сервера від розробника, знаходиться тут (англ.):

Home assistant

Крок 1. Скачування програвача віртуальної машини

1.1 Скачати Oracle VM VirtualBox – програвач образу VM у форматі VDI.

Примітка: якщо з якихось причин вас не влаштовує VirtualBox (.vdi), також можливо встановити інші, аналогічні застосунки: KVM (.qcow2), Vmware Workstation (.vmdk), Hyper-V (.vhdx).

Крок 2. Скачування образу диску готової віртуальної машини Home Assistant

2.1 Скачати VDI-файл образу диску готової віртуальної машини HASS за посиланням:

останню версію для VirtualBox брати тут (рекомендовано):

https://www.home-assistant.io/installation/windows

або пряме посилання на конкретну версію (може застаріти):

https://github.com/home-assistant/operating-system/releases/download/5.13/hassos_ova-5.13.vdi.xz

2.2 Потрібно розпакувати скачаний файл образу диску.

Примітка. Зауважте, що потрібно мати 32 ГБ вільного місця на диску для даного файлу. – Адже у процесі експлуатації віртуального сервера, семе це файл буде наповнюватися вмістом у якості віртуального жорсткого диску сховища даних віртуальної машини.

Крок 3. Створення віртуальної машини

Виконати настанови на цій самій сторінці сторінці ( див. пункт 2):

А саме: 

3.1 Створити віртуальну машину типу типу Linux -> Other 64-bit;

Оригінал настанов за цим пунктом: https://www.home-assistant.io/installation/windows#create-the-virtual-machine

3.2 Виконати налаштування властивостей створеної щойно віртуальної машини:

  • Встановити об’єм пам’яті: 2 GB RAM; 
  • Встановити кількість ЦПУ: 2 CPU; 
  • Встановити розмір файла сховища: use 32GB VDI hdd file; 
  • Включити у налаштуваннях (Система -> Материнська плата) материнської плати: EFI enable; 
  • Включити у налаштуваннях Мережі прапорець: Ethernet bridged (проміжний адаптер) і обрати потрібний зі списку.

Оригінал настанов за цим пунктом: https://www.home-assistant.io/installation/windows#hypervisor-specific-configuration

Крок 4. Перший запуск віртуальної машини

4.1 Запускаємо віртуальну машину. 

4.2 Заходимо через браузер на ендпойнт віртуальної машини: http://homeassistant.local:8123
Цей ендпойнт є єдиною точкою входу у графічний інтерфейс для всіх – адміни і користувачі. Адміни можуть через браузер робити все – повне налаштування, без обмежень. Користувачі – тільки дивитися і керувати, без можливості зміни налаштувань.

Примітка. Зверніть увагу, що адреса  homeassistant.local формується завдяки протоколу mDNS – цей протокол дозволяє забезпечити засобами домашнього WiFi роутера, прив’язку імені хоста у локальній мережі з IP-адресою цього ж хоста, яку видає DHCP у локальній мережі.

Зайти на сервер можливо або так:
http://homeassistant.local:8123,
або так:
http://xxx.xxx.xxx.xxx:8123.
де xxx.xxx.xxx.xxx – IP адреса отримана хостом віртуальної машини від DHCP WiFi – роутера.

Якщо mDNS сервіс з якихось причин не працює – то вхід за IP адресою є єдиним варіантом.
Наприклад, служба mDNS не підтримується браузером в пристроях на базі ОС Android.

На хост homeassistant також можливо зайти через консоль (CLI) віртуальної машини. Логін: root,
Пароль: пустий.
Але це може бути потрібно лише в критичних ситуаціях з відновлення сервера.

Примітка. Фізичний комп’ютер і віртуальна машина спільно використовують один мережевий адаптер фізичного комп’ютера, але у той же час, якщо встановити опцію Ethernet bridget, то віртуальна машина отримує свою індивідуальну IP адресу, яка відрізнятиметься від IP адреси фізичного ПК. 

Заходити потрібно саме на IP-адресу віртуальної машини, або на mDNS hostname.local, як це було зазначено вище. Виходимо з стандартної ситуації, що будь-яку адресу в локальній мережі призначає хостам DHCP сервер домашнього WiFi-роутера.

Крок 5. Створюємо у Веб-інтерфейсі аккаунт адміністратора

5.1 Інструкції є тут: 

https://www.home-assistant.io/getting-started/onboarding/

Оскільки це прості, інтуїтивно-зрозумілі операції роботи з веб-інтерфейсом, їх опис ми у цій інструкції не наводимо.

5.2 Все – базове встановлення і налаштування завершене. 

Тепер у нас в локальній мережі є свій власний сервер HA, розгорнутий у віртуальній машині.

Звертаємо увагу і нагадуємо, що віртуальний мережевий адаптер, який прокинуто назовні з віртуальної машини через адаптер фізичного ПК, створює свій власний інстанс мережевого хоста зі своєю мак-адресою і отримує окрему IP-адресу від домашнього WiFi-маршрутизатора через його DHCP-сервер. Таким чином, фізичний комп’ютер, на якому розгорнуто віртуальну машину, фактично має вже дві IP адреси у домашній локальній мережі.

Крок 6. Фіксуємо IP-адресу хоста сервера Home Assistant на роутері

6.1 Потрібно зафіксувати (зробити IP адресу сервера постійною) IP адресу, яку отримує хост віртуальної машини від DHCP-сервера WiFi роутера у локальній мережі.

Це потрібно для того, щоб користувачі (і додатки на смартфонах) могли використовувати одну і ту ж IP-адресу для доступу до сервера. Інакше кажучи, у нас є можливість зафіксувати/зарезервувати адресу у налаштуваннях DHCP-сервера нашого домашнього WiFi-роутера.

Примітка. Як це зробити – дивіться у документації на свій роутер. Процедура потребує знання логіна і паролю від роутера і 5 хвилин часу. Яку саме IP-адресу потрібно зафіксувати – теж можливо знайти на роутері. Нас цікавить клієнт у мережі роутера з назвою хоста: homeassistant (за умови, якщо ви не змінювали цієї назви під час конфігурації сервера).

Як результат цієї операції: у браузері, або у додатку Home Assistant потрібно буде вказати адресу і порт для входу на сервер. Якщо зафіксувати IP-адресу на DHCP сервері, то адресі http://homeassistant.local:8123, завжди буде відповідати адреса http://ip…….:8123, так як ip ми зарезервували за цим хостом на постійно. 

Крок 7. Налаштування базових плагінів

7.1 Встановлюємо базові плагіни, потрібні для роботи з сервером у ролі адміністратора:

Через меню інтерфейсу Supervisor -> Add-on Store, встановлюємо:

  • File Editor;
  • Check Home Assistant configuration.

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

Add-On (тобто плагін) який розширює можливості ядра сервера. Наприклад, це може бути підтримка СУБД. Або нового протоколу, наприклад MQTT.

Інтеграція – це абстрактна сутність, яка через себе проявляє підключення зовнішніх інтеграцій, підтримку яких надає Ядро сервера з коробки, а також Плагіни, які ми встановлюємо додатково.

Примітка: плагіни і інтеграції, згадані тут, є офіційними і підтримуються розробником сервера.

Крок 8. Встановлення плагіну ESP Home (Опція)

8.1 Наступним кроком, нам цікаво розгорнути ESP Home, один з плагінів, які автоматично підтримує Home Assistant (Розробник нещодавно придбав проект ESP Home).

  • Для цього через меню інтерфейсу Supervisor -> Add-on Store, знаходимо ESP Home, читаємо супутню документацію і встановлюємо його.
  • Після цих дій ми отримуємо можливість компілювати прошивки ESP Home для контролерів ESP8266 та ESP32.
  • Коли такий контролер з’являється у локальній мережі, Home Assistant його автоматично виявляє і заносить у свої бази: інтеграції, пристрої, сутності, тригери, скрипти і так далі. На дашборді всі сутності пристрою теж з’являються автоматично (якщо адмін не змінював налаштування за замовчуванням).

Крок 9. Підключення будь-яких зовнішніх пристроїв через ендпойнт (HTTP / MQTT / Web Sockets)

9.1 Якщо нам потрібно підключити ESP8266 / ESP32 або будь-який інший пристрій в обхід стандартних методів інтеграції запропонованих Home Assistant, або потрібної нам інтеграції ще немає, ми можемо підключитися через:

  • протокол MQTT плагіна сервера Mosquito, 
  • протокол HTTP/s напряму,
  • протокол Web Sockets, 

або засобами ще одного плагіна – Node-RED, який є у “магазині” плаганів Home Assistant. Зручність встановлення Node-RED як плагіна полягає ще й у тому, що за такого розгортання надається наскрізний доступ до даних – Node-RED бачить дані та сутності Home Assistant і навпаки, Home Assistant має доступ до даних Node-RED.

Причому, для забезпечення інтеграції зовнішніх пристроїв вручну, нам з боку сервера доступний мережевий функціонал Network Discovery типу mDNS, SSDP/UPnP тощо. Це дуже зручно, адже на боці, скажімо прошивки NodeMCU з мовою Lua, чи іншого пристрою, ми також можемо реалізувати дані протоколи пошуку сервера в локальній мережі.

Але така інтеграція це вже окрема історія. Плагіни типу Mosquito MQTT чи Node-RED потребують наявності у Home Assistant бази даних. А тому, перед їх встановленням потрібно встановити, на вибір з наявних плагінів, наприклад, InfluxDB, який також може застосовуватися плагіном візуалізації даних Grafana за бажання адміністратора.

Ще раз підкреслимо, що перевагою механізмів інтеграції є те, що кожен встановлений плагін починає працювати не лише на свою задачу, а і розширює можливості всіх інших плагінів. 

Наприклад, як тільки встановлюється база даних InfluxDB, дані з ESP Home пристроїв автоматично стають доступними у Influxdb та стають доступними у Node-RED та Grafana. Що дуже і дуже зручно.

Інша справа – це інтеграція через HTTP – для того, щоб надіслати дані з ESP8266 / ESP32 (наприклад) з вулиці, взагалі нічого не потрібно налаштовувати в частині плагінів. 

Єдина річ, яку потрібно організувати, так це створити через інтерфейс адміністратора довготривалий токен доступу для кожного такого пристрою і можна через стандартні запити HTTP POST, HTTP GET з контролера – надсилати (контролер -> сервер) і отримувати (контролер <- сервер) дані відповідно. 

Також у Home Assistant реалізовано серверний варіант RESTful протоколу, коли сервер виступає ініціатором запиту та може звернутися на ендпойнт контролера і отримати всі необхідні йому дані про стан контролера та про значення наявних сенсорів на контролері, які він може повернути.

Читайте інші наші публікації, можливо ми з часом висвітлимо кожну згадану можливість.

Крок 10. Доступ до сервера з Інтернет

10.1 Ми зовсім не розглядали у тексті інструкції питання глобального доступу до розгорнутого на попередніх кроках локального сервера Home Assistant. Це окрема тема, яка потребує багато тексту. Тому зазначимо лише, що є як мінімум дві можливості: 

  1. одна безкоштовна, складна (сертифікати, SSL/TLS, DDNS) та небезпечна (немає захисту типу WAF від хакерів),
  2. інша проста, за 5 доларів на місяць і захищена. Ми перевірили – відмінно працюють обидві технології. Але у першій сервер можуть зламати через 2 години – ми не рекомендуємо виставляти сервер у зовнішній світ без належного захисту. У другій – все добре працює, а за захист сервера і даних користувача піклується американська компанія-партнер розробника Home Assistant.

Обравши і виконавши один з цих варіантів, ви зможете отримати доступ до вашого, розташованого у ЛОМ, у віртуальній машині Linux під ОС Windows сервера Home Assistant з:

  • будь-якого браузера, розташованого будь-де;
  • через додаток Home Assistant зі смартфона, розташованого будь-де.

Функціональність доступу з браузера і через додаток не відрізняються. В залежності від прав доступу, користувач / адмін може виконувати повне налаштування і керування сервером.

Спеціальним додатком Home Assistant також опікується компанія розробник, що дуже добре – користувач отримує повний пакет функціональності з одних рук.

На цьому все.

Сподіваємося, що ця стисла, але насичена інформацією інструкція, допомогла вам розгорнути перший сервер Home Assistant.