Наступний крок
Привіт усім, хто читає серію публікацій “Мій розумний дім. Від початку, крок за кроком до…”. У попередньому сюжеті я описав необхідне обладнання для початку впровадження.
Тепер, коли всі компоненти надійшли і доступні, перейдемо до частини програмного забезпечення. Тож, нам потрібен будь-який комп’ютер з ОС Windows (x86 / x64), macOS, Linux x64 (64-розрядна) / x86 (32-розрядна), із можливістю роботи з адаптером SD-карти та доступом до Інтернету.
Давайте розпочнемо!
Список програмного забезпечення
Список завантаження компонентів програмного забезпечення такий:
Важливо! Для інших апаратних платформ будуть потрібні інші версії образів balenaEtcher та Home Assistant.
Запис образу
Коли все програмне забезпечення буде доступне, можемо розпочати запис образу на SD карту. Це, три маленькі кроки.
Процедура така:
- Запускаємо balenaEtcher. Вибираємо опцію “Flash from file”:
- Виберемо SD карту, яку ми будемо використовувати для запуску операційної системи Home Assistant на платформі Raspberry Pi 4:
- Виберемо ” Flash!” щоб почати запис образу. Коли balenaEtcher завершить запис образу та перевірить результат запису з оригіналом, ми отримаємо підтвердження:
Запуск Raspberry Pi
Отже, SD-карта із образом ОС Home Assistant готова! Наступна послідовність кроків така:
- Вставимо новостворений інсталяційний носій (SD -карту) у слот Raspberry Pi 4;
- Підключаємо кабель Ethernet до мережі;
- Підключаємо блок живлення;
- За кілька хвилин ми зможемо отримати доступ до сторінки Home Assistant за адресою http: //X.X.X.X: 8123, де X.X.X.X – це адреса, яку Raspberry Pi отримала від сервера DHCP:
Перші налаштування
Отже, операційна система Home Assistant встановлена, пора почати її налаштування.
На цьому етапі веб інтерфейс Home Assistant сам запропонує налаштувати основні параметри.
- Створюємо обліковий запис власника Home Assistant. Цей обліковий запис буде адміністратором і завжди зможе змінити будь-які налаштування. Вводимо ім’я, ім’я користувача, пароль:
- Вказуємо назву та параметри розташування будинку, часового поясу:
- Якщо Ми хочемо поділитися з розробниками інформацією про роботу своєї копії Home Assistant з точки зору аналітики, інтеграції, статистики або діагностичних даних – виберіть необхідні пункти:
- Фазу налаштування інтеграції наразі можна відкласти. Ми повернемося до цього напрямку пізніше:
- Закінчивши, ми отримаємо налаштований веб-інтерфейс Home Assistant:
Вітаємо! І цей важливий етап успішно завершено!
Багатомовний інтерфейс користувача
Веб інтерфейс Home Assistant підтримує багатомовність. Користувач може вибрати необхідну мову відображення інформації в своєму профайлі:
Тестове середовище
Нам знадобиться тестовий майданчик, щоб перевірити зміни, які будуть внесені у виробниче середовище Home Assistant. Для цього немає необхідності виділяти окреме обладнання, тому ми будемо використовувати для цього платформу віртуалізації.
Як архітектор хмарних рішень, у мене є власне тестове демо середовище. Воно працює на основі VMware vSphere 5.x та 6.x. Операційну систему Home Assistant можна успішно запускати на цій платформі віртуалізації, хоча і з деякими особливостями.
Оскільки ми будемо періодично робити такі дії, я вирішив написати невеликий сценарій у Powershell (PowerCli). Він призначений для автоматизації процесу створення тестового середовища Home Assistant у вигляді віртуальної машини VMware vSphere 5.x, 6.x.
Сценарій складається з 15 кроків:
- Визначення змінних;
- Завантаження пакету HASS OS vmdk.xz;
- Видобуття HASS OS vmdk, переіменування з .tar, видалення .xz;
- Підключення до інфрастуктури VMware;
- Встановлення параметрів Сховища Даних;
- Створення віртуальної машини для HASS OS;
- Копіювання HASS OS vmdk до папки із файлами віртуальної машини;
- Створення Специфікації Конфігурації віртуальної машини HASS OS;
- Перевірка наявності контроллера IDE;
- Додавання IDE жорсткого диску до конфігурації віртуальної машини;
- Встановлення параметру віртуальної машини EFI firmware;
- Переконфігурація віртуальної машини HASS OS;
- Старт віртуальної машини HASS OS;
- Отримання Ip Адреси віртуальної машини HASS OS;
- Відкриття веб броузера і перехід на домашню веб сторінку Home Assistant.
Код сценарію нижче:
<#
.SYNOPSIS
Automate create Home Assistant test Virtual Machine in VMware vSphere.
.DESCRIPTION
This script is designed to automate the process of creating
a test environment Home Assistant in the VMware virtual machine.
.NOTES
File Name : HassVmwareTestEnv.ps1
Author : AIRRA (roman@airra.net)
Prerequisite : PowerShell V2 over Vista and upper,
7zip4powershell module,
VMware.VimAutomation.Core snap-in.
Copyright 2021 - AIRRA
.LINK
Script posted over:
http://blogs.airra.net
#>
# Step 1: Define variables
$HassVMDKUrl = "https://github.com/home-assistant/operating-system/releases/download/5.8/hassos_ova-5.8.vmdk.xz" # Home Assitant git download Release Path
$HassVMDKDownloadPath = $env:TEMP # Path to download Folder
$HassVMDKArchiveName = "hassos_ova-5.8" # Home Assitant VMDK Archive Name
$VIServer = "_" # Address of VMware Vcenter Server
$VIServerUser = "_" # User with admin permissions
$VIServerUserPassword = "_" # Password
$VIHost = "_" # Address of of VMware Esxi
$VIDatastoreName = "_" # Datasore Name
$VINetwork = "_" # Network Name
$HassVMName = "hassio.test" # Virtual Machine Name
$HassVMDKSourcePath = $env:TEMP
$HassVMDKSourceFile = "hassos.vmdk"
$HassVMDK = $HassVMDKSourcePath + "\" + $HassVMDKSourceFile
$PathDisk = "[" + $VIDatastoreName + "] " + $HassVMName + "/" + $HassVMDKSourceFile
# Step 2: Download HASS OS vmdk.xz.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri $HassVMDKUrl -OutFile ($HassVMDKDownloadPath + "/" + $HassVMDKArchiveName + ".vmdk.xz")
# Step 3: Extract HASS OS vmdk, rename from .tar, delete .xz.
Expand-7Zip -ArchiveFileName ($HassVMDKDownloadPath + "/" + $HassVMDKArchiveName + ".vmdk.xz") -TargetPath $HassVMDKDownloadPath
Remove-Item -Path ($HassVMDKDownloadPath + "/" + $HassVMDKArchiveName + ".vmdk.xz")
Get-Item -Path ($HassVMDKDownloadPath + "/" + $HassVMDKArchiveName + ".vmdk.tar") | Rename-Item -NewName $HassVMDKSourceFile
# Step 4: Connect to VMware Infrastucture.
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls,[System.Net.SecurityProtocolType]::Tls11,[System.Net.SecurityProtocolType]::Tls12
Connect-VIServer -Server $VIServer -User $VIServerUser -Password $VIServerUserPassword
# Step 5: Set Datastore properties.
$Datastore = Get-Datastore $VIDatastoreName
New-PSDrive -Location $Datastore -Name vids -PSProvider VimDatastore -Root ""
Set-Location vids:
# Step 6: Create HASS OS Virtual Machine.
New-VM -Name $HassVMName -VMHost $VIHost -Datastore $VIDatastoreName -MemoryMB 1024 -NumCPU 1 -DiskMB 1 -NetworkName $VINetwork -GuestID debian6_64Guest
Get-HardDisk -VM $HassVMName -Name 'Hard disk 1' | Remove-HardDisk -Confirm:$false -DeletePermanently:$true
# Step 7: Copy HASS OS vmdk to Virtual Machine Datastore Folder.
Copy-DatastoreItem -Item $HassVMDK -Destination vids:$HassVMName
# Step 8: Create Configuration Specification HASS OS Virtual Machine.
$vm = Get-VM -Name $HassVMName
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
# Step 9: Check if there is an IDE COntroller present.
$ideCtrl = $vm.ExtensionData.Config.Hardware.Device | where {$_.GetType().Name -eq "VirtualIDEController"} | select -First 1
if(!$ideCtrl){
$ctrl = New-Object VMware.Vim.VirtualDeviceConfigSpec
$ctrl.Operation = "add"
$ctrl.Device = New-Object VMware.Vim.VirtualIDEController
$ideKey = -1
$ctrl.Device.ControllerKey = $ideKey
$spec.deviceChange += $ctrl
}
else{
$ideKey = $ideCtrl.Key
}
# Step 10: Add IDE harddisk to VM configuration.
$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
$dev.Operation = "add"
$dev.Device = New-Object VMware.Vim.VirtualDisk
$dev.Device.backing = New-Object VMware.Vim.VirtualDiskFlatVer2BackingInfo
$dev.Device.backing.DiskMode = "persistent"
$dev.Device.Backing.FileName = $PathDisk
$dev.Device.ControllerKey = $ideKey
$dev.Device.UnitNumber = -1
$spec.deviceChange += $dev
# Step 11: Set VM EFI firmware.
$spec.Firmware = [VMware.Vim.GuestOsDescriptorFirmwareType]::efi
# Step 12: Reconfigure HASS OS Virtual Machine.
$vm.ExtensionData.ReconfigVM($spec)
# Step 13: Start HASS OS Virtual Machine.
Start-VM -VM $HassVMName
# Step 14: Get Ip Address HASS OS Virtual Machine.
$Ip = (Get-VM -Name $HassVMName).Guest.IpAddress | ?{$_ -notmatch ':'}
Do {
Start-Sleep -s 10
}
While ($Ip -eq "" -or $Ip -eq $null)
# Step 15: Open Web Browser and go to Home Assistant Start Web page.
Invoke-Expression "cmd.exe /C start http://$Ip[1]:8123"
Важливо: Сценарій використовує такі компоненти:
- Модуль 7zip4powershell,
- Компонент VMware.VimAutomation.Core.
Що далі?
Отже, на даний момент ми розгорнули та початково налаштували Home Assistant.
На цьому етапі ми зробимо паузу, і в майбутньому ми розповімо про:
- Програмні додатки: редактор текстових конфігурацій, термінал;
- Оновлення компонентів Home Assistant до останньої версії;
- Налаштування інформаційної панелі;
- Про деякі оновлення обладнання Raspberry Pi 4;
- І звичайно про інтеграцію із зовнішніми пристроями.
Але про це в наступній публікації!
До зустрічі,
З повагою, AIRRA!