Następny krok
Witam wszystkich, którzy czytają cykl publikacji „Mój inteligentny dom. Od początku krok po kroku do…”. W poprzednim opowiadaniu opisałem sprzęt niezbędny do rozpoczęcia realizacji.
Teraz, gdy wszystkie komponenty dotarły i są dostępne, przejdźmy do części oprogramowania. Potrzebujemy więc dowolnego komputera z systemem Windows (x86/x64), macOS, Linux x64 (64-bit) / x86 (32-bit), z możliwością współpracy z kartą SD i dostępem do Internetu.
Zacznijmy!
Lista oprogramowania
Lista składników oprogramowania do pobrania jest następująca:
Co ważne! Inne platformy sprzętowe będą wymagały innych wersji obrazów balenaEtcher i Home Assistant.
Nagrywanie obrazu
Gdy całe oprogramowanie jest dostępne, możemy rozpocząć nagrywanie obrazu na kartę SD. To znaczy trzy małe kroki.
Procedura w następujący sposób:
- Run balenaEtcher. Wybierz opcję „Flash from file”:
- Wybierz kartę SD, której użyjemy do uruchomienia systemu operacyjnego Home Assistant na platformie Raspberry Pi 4:
- Wybierz „Flash!” rozpocząć nagrywanie obrazu. Gdy balenaEtcher zakończy nagrywanie obrazu i sprawdzi wynik nagrania z oryginałem, otrzymamy potwierdzenie:
Uruchomienie Raspberry Pi
Tak więc karta SD z obrazem systemu operacyjnego Home Assistant jest gotowa! Poniższa sekwencja kroków jest następująca:
- Włóż nowo utworzony nośnik instalacyjny (kartę SD) do gniazda Raspberry Pi 4;
- Podłącz kabel Ethernet do sieci;
- Podłącz zasilanie;
- Za kilka minut będziemy mogli uzyskać dostęp do strony Home Assistant pod adresem http://X.X.X.X: 8123, gdzie X.X.X.X to adres, który Raspberry Pi otrzymał z serwera DHCP:
Pierwsze ustawienia
Tak więc system operacyjny Home Assistant jest zainstalowany, czas zacząć go konfigurować.
Na tym etapie sam interfejs sieciowy Home Assistant zaoferuje konfigurację podstawowych parametrów.
- Utwórz konto właściciela Home Assistant. To konto będzie administratorem i zawsze będzie mogło zmienić dowolne ustawienia. Wpisz imię i nazwisko, nazwę użytkownika, hasło:
- Określ nazwę i parametry lokalizacji domu, strefę czasową:
- Jeśli chcemy podzielić się z programistami informacjami o pracy Twojej kopii Home Assistant w zakresie analityki, integracji, statystyk czy danych diagnostycznych – wybierz niezbędne elementy:
- Fazę konfiguracji integracji można na razie odłożyć. W tym kierunku wrócimy później:
- Po zakończeniu otrzymujemy dostosowany interfejs sieciowy Home Assistant:
Gratulacje! I ten ważny etap został pomyślnie zakończony!
Wielojęzyczny interfejs użytkownika
Interfejs sieciowy Home Assistant obsługuje wielojęzyczność. Użytkownik może wybrać żądany język wyświetlania informacji w swoim profilu:
Środowisko testowe
Będziemy potrzebować strony testowej, aby przetestować zmiany, które zostaną wprowadzone w środowisku produkcyjnym Home Assistant. Nie ma potrzeby przydzielania do tego osobnego sprzętu, dlatego wykorzystamy do tego celu platformę wirtualizacyjną.
Jako architekt rozwiązań w chmurze mam własne środowisko testowe. Opiera się na VMware vSphere 5.xi 6.x. System operacyjny Home Assistant może z powodzeniem działać na tej platformie wirtualizacyjnej, choć z pewnymi funkcjami.
Ponieważ będziemy to robić okresowo, postanowiłem napisać mały skrypt w Powershell (PowerCli). Przeznaczony jest do automatyzacji procesu tworzenia środowiska testowego Home Assistant w postaci maszyny wirtualnej VMware vSphere 5.x, 6.x.
Skrypt składa się z 15 kroków:
- Definicja zmiennych;
- Pobierz pakiet HASS OS vmdk.xz;
- Wyodrębnij HASS OS vmdk, zmień nazwę z .tar, usuń .xz;
- Połączenie z infrastrukturą VMware;
- Ustawianie parametrów hurtowni danych;
- Tworzenie wirtualnej maszyny dla HASS OS;
- Kopiowanie HASS OS vmdk do folderu z plikami maszyn wirtualnych;
- Tworzenie specyfikacji konfiguracji maszyny wirtualnej HASS OS;
- Sprawdzenie obecności kontrolera IDE;
- Dodanie IDE dysku twardego do konfiguracji maszyny wirtualnej;
- Ustawienie parametru oprogramowania sprzętowego EFI maszyny wirtualnej;
- Rekonfiguracja maszyny wirtualnej HASS OS;
- Uruchomienie maszyny wirtualnej HASS OS;
- Uzyskiwanie adresów IP maszyny wirtualnej HASS OS;
- Otwórz przeglądarkę internetową i przejdź do strony internetowej Home Assistant.
Kod skryptu znajduje się poniżej:
<#
.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"
Ważne: Skrypt używa następujących komponentów:
- Moduł 7zip4powershell,
- Składnik VMware.VimAutomation.Core.
Co dalej?
W tym momencie wdrożyliśmy i wstępnie skonfigurowaliśmy Home Assistant.
Na tym etapie zrobimy pauzę, a w przyszłości porozmawiamy o:
- Aplikacje programowe: edytor konfiguracji tekstu, terminal;
- Aktualizacja składników Home Assistant do najnowszej wersji;
- Ustawienia panelu informacyjnego;
- Informacje o niektórych aktualizacjach sprzętowych Raspberry Pi 4;
- No i oczywiście o integrację z urządzeniami zewnętrznymi.
Ale o tym w następnym poście!
Przed spotkaniem,
Z poważaniem, AIRRA!