Mój inteligentny dom. Od początku krok po kroku do… Część 2. Wdrożenie w oparciu o Asystenta Domowego. Pierwsze kroki. Oprogramowanie. Podstawowe ustawienia.

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:

Nazwa komponentu oprogramowania Nazwa pliku Rozmiar Łącze
1. Etcher for Windows (x86|x64) (Installer), v.1.5.121 balenaEtcher-Setup-1.5.121.exe 140 MB
2. Home Assistant image for Raspberry Pi 4 64-bit, v.5.8 hassos_rpi4-5.8.img.xz 230 MB

Co ważne! Inne platformy sprzętowe będą wymagały innych wersji obrazów balenaEtcher i Home Assistant.

Rysunek 1: Wybierz wymagane oprogramowanie balenaEtcher na stronie pobierania.
Rysunek 2: Wybierz wymagane oprogramowanie Home Assistant na stronie pobierania.

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:

  1. Run balenaEtcher. Wybierz opcję „Flash from file”:
Rysunek 3: Krok pierwszy: Wybierz opcję „Flash from file” w balenaEtcher:
  1. Wybierz kartę SD, której użyjemy do uruchomienia systemu operacyjnego Home Assistant na platformie Raspberry Pi 4:
Rysunek 4: Drugi krok: Wybierz kartę SD w balenaEtcher.
  1. Wybierz „Flash!” rozpocząć nagrywanie obrazu. Gdy balenaEtcher zakończy nagrywanie obrazu i sprawdzi wynik nagrania z oryginałem, otrzymamy potwierdzenie:
Rysunek 5: Aplikacja BalenaEtcher: Zapis obrazu zakończony!

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:
Rysunek 6: W ciągu kilku minut od uruchomienia Raspberry Pi, będziemy mieli dostęp do Home Assistant OS, a następnie dokonamy pierwszych ustawień.

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.

  1. 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:
Rysunek 7: Tworzenie konta właściciela Home Assistant. Wpisz nazwę, nazwę użytkownika, hasło.
  1. Określ nazwę i parametry lokalizacji domu, strefę czasową:
Rysunek 8: Ustaw swoją lokalizację, strefę czasową i system jednostek.
  1. 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:
Rysunek 9: W razie potrzeby ustaw parametry wymiany informacji z programistami.
  1. Fazę konfiguracji integracji można na razie odłożyć. W tym kierunku wrócimy później:
Rysunek 10: Lista integracji znalezionych przez kreatora konfiguracji Home Assistant.
  1. Po zakończeniu otrzymujemy dostosowany interfejs sieciowy Home Assistant:
Rysunek 11: Strona główna 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:

Rysunek 12: Wybierz przyjazny dla użytkownika język interfejsu Home Assistant w swoim profilu użytkownika.

Ś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:

  1. Definicja zmiennych;
  2. Pobierz pakiet HASS OS vmdk.xz;
  3. Wyodrębnij HASS OS vmdk, zmień nazwę z .tar, usuń .xz;
  4. Połączenie z infrastrukturą VMware;
  5. Ustawianie parametrów hurtowni danych;
  6. Tworzenie wirtualnej maszyny dla HASS OS;
  7. Kopiowanie HASS OS vmdk do folderu z plikami maszyn wirtualnych;
  8. Tworzenie specyfikacji konfiguracji maszyny wirtualnej HASS OS;
  9. Sprawdzenie obecności kontrolera IDE;
  10. Dodanie IDE dysku twardego do konfiguracji maszyny wirtualnej;
  11. Ustawienie parametru oprogramowania sprzętowego EFI maszyny wirtualnej;
  12. Rekonfiguracja maszyny wirtualnej HASS OS;
  13. Uruchomienie maszyny wirtualnej HASS OS;
  14. Uzyskiwanie adresów IP maszyny wirtualnej HASS OS;
  15. 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!

Ten wpis został opublikowany w kategorii Inteligentny Dom, Technologia i oznaczony tagami , , , , , , , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.