Avtor: dr. Simon Vavpotič
Vsestranska aplikacija za upravljanje doma omogoča veliko funkcionalnosti, za katere bi potrebovali dneve načrtovanja in programiranja. Omogoča ne le priklop številnih senzorjev, ampak tudi obdelavo in hrambo podatkov ter nadzor ter upravljanje doma prek spletnega oblaka.
Home Assistant je vseobsežna aplikacija za upravljanje doma, s katero lahko povežemo vse IoT in druge elektronske naprave. S pomočjo varnostnih kamer skrbi za varnost, z merjenjem porabe energije in vklapljanjem velikih porabnikov (npr. pralni stroj) v času cenejših tokovnih tarif lahko veliko prihrani. Hkrati lahko upravlja tudi senčila, klimatsko napravo in ogrevalne naprave. Denimo, v vročih poletnih mesecih lahko veliko energije prihrani z zastiranjem oken, ko smo zdoma, saj se tako več toplote odbije nazaj v ozračje in ne segreva našega doma, zato je potreba po uporabi klimatske naprave manjša. Po drugi strani, pozimi na primer zmanjša ogrevalno moč, ko smo zdoma, in ponovno zažene ogrevanje, ki se vračamo domov. Home Assistant lahko upošteva tudi proizvodnjo električne energije domače sončne elektrarne (če jo imamo) in temu primerno upravlja velike porabnike.
Ta vsebina je samo za naročnike
Komunikacijski pomočnik
Vsakodnevno upravljanje doma prek monitorja in tipkovnice še zdaleč ni tako prijetno in enostavno kot govorna komunikacija, ki jo omogoča Home Assistantov komunikacijski pomočnik, ki je implementiran v oblaku Home Assistant, pri čemer lahko uporablja lastne funkcije za sintezo in prepoznavanje govora, ali pa funkcije Google Translate ali Amazon Alexia. Na funkcije za prepoznavanje govora se moramo posebej naročiti, pri čemer jih lahko 1 mesec testiramo brezplačno. Sinteza govora prek Home Assistantovega oblaka je po drugi strani brezplačna, prav tako je brezplačen tudi komunikacijski pomočnik, s katerim lahko komuniciramo tudi tekstovno in tako preizkusimo prepoznavanje stavkov v angleščini. Denimo, »Smart home, turn on the heating!« (slov. »Pametni dom, vklopi ogrevanje«).
Po analizi stavke, komunikacijski agent preveri razpoložljive akcije in se odloči za eno izmed njih, ali pa sporoči, da navodila ni razumel. V mojem primeru, je prepoznal napravo, imenovano »Heating« in dejansko vklopil ogrevanje. Dodajmo še to, da lahko pri vsako napravi označimo, ali želimo dovoliti upravljaje prek komunikacijskega pomočnika. Če ga ne dovolimo, ali možnost krmiljenja ni na voljo, lahko na primer na zahtevo: »Turn on the lights in the kitchen.« (slov. »Vklopi luč v kuhinji«), dobimo tudi odgovor: »Sorry, I am not aware of any light in the Kitchen area.« (slov. »Oprosti, ne vem za luč v kuhinji«). Kot vidimo, komunikacijskega agenta tokrat nismo poklicali po imenu, pa je vseeno razumel, da ga nekaj sprašujemo, saj je bil edini.
Kadar potrebujemo upravljanje doma v različnih jezikih, lahko ustvarimo več komunikacijskih pomočnikov, od katerih vsakega tudi poimenujemo. Denimo: »Pametni dom, vključi ogrevanje.« Tako Home Assistant v vsakem trenutku ve, katerega agenta želimo uporabiti. Edina težava je, da smo pri rabi slovenščine precej omenjeni. Home Assistant uporablja funkcije podjetja Nabu Casa Inc., na katere se moramo naročiti. Naj povem še to, da sem pri preizkusu komunikacijskega pomočnika uporabil ESP32 LilyGO-PoE modul, v katerem sem definiral tudi stikala za vklop ogrevalnih in klimatskih naprav.
Namestitev
Home Assistant je aplikacija, ki vse naprave v pametnem domu povezuje v celoto in jih lahko tudi samodejno upravlja. Lahko ga namestimo skoraj v vsak računalnik s skoraj katerimkoli operacijskim sistemom. Ker je odprtokoden, lahko njegovo izvorno kodo prevedemo tudi za računalniške osnovne in operacijske sisteme, da katere njegovi graditelji niso pripravili izvedljivih datotek. Še lažje pa je, če ga namestimo kot virtualni računalnik, ali neposredno kot sliko operacijskega sistema. Vse omenjeno lahko naredimo na PC, Macu ali Raspberry Piju. Še posebej zanimiva je možnost namestitve Home Assistanta kot aplikacije v virtualizacijskem okolju Docker, o čemer lahko preberete v 3. nadaljevanju serije Programiraje ESP32 modulov v Tasmota razvojem okolju. Zanimiva pa je tudi nekoliko bolj zahtevna neposredna namestitev v obstoječi operacijski sistem, saj tako prihranimo računalniške resurse. O gradnji Tasmota IoT naprave na osnovi LilyGO-PoE razvojne plošče in njeni vključitvi v Home Assistant aplikacijo lahko preberete v SE335. SE336 in SE337. Tokrat bo v središču naše pozornosti aplikacija Home Assistant. Raspberry Pi Compute Module 5 Development Kit je kot nalašč za poganjanje Home Assistanta, saj je ne le dovolj zmogljiv, ampak je v majhnem kovinskem ohišju tudi dobro zaščiten pred udarci in poškodbami. Namestitev PC z operacijskim sistemom Debian 12 poteka na enak način, medtem ko je namestitev v Windows dozdevno najenostavnejša, saj lahko večino dela opravimo le s klikanjem z miško.
Tokrat sem se lotil neposredne namestitve v operacijski sistem Raspberry Pi OS, za katero je potrebnih najmanj sistemskih sredstev in najmanj obremenjuje računalnik. Po drugi strani, pa zahteva veliko več skrbniškega dela. Raspberry Pi OS Bookworm ima že nameščen programski jezik Python 3, vendar njegova različica ni ustrezna. Za namestitev Home Assistanta potrebujemo zadnjo produkcijsko različico Python 3.13.1, ki pa jo je bilo mogoče prevesti v izvorno kodo za Raspberry Pi 5 le iz izvorne kode (aruljohn.com/blog/python-raspberrypi), kar sem tudi storil. Ostalo je sorazmerno enostavno, saj moramo le slediti navodilom za namestitev Home Assistant Core na spletnem portalu home-assistant.io rubriko Linux. Če odpremo navodila pod rubriko Raspberry Pi, lahko preberemo le o namestitvi slike operacijskega sistema s Home Assistantom.
Skoraj enak postopek lahko uporabimo tudi za namestitev Home Assistanta na novejše klasične PCje s procesorji x64 in ARM64.
Zagon
Home Assistant je po izvedbi korakov namestitve sicer v delujočem stanju in ga lahko upravljamo prek spletnega brskalnika (npr. Google Chrome) na naslovu: http://localhost:8123. Če ugasnemo računalnik, moramo Home Assistant ponovno zagnati. Korake zagona pod uporabniškim imenom homeassistant lahko strnemo v naslednjo skripto:
!/bin/bash
sudo -u homeassistant -H bash -c „
cd „/srv/homeassistant“
python3 -m venv .
source bin/activate
hass
„
ki jo posnamemo v datoteko z imenom runhass.sh, kateri z ukazom chmod 777 runhass.sh dodelimo pravice izvajanja.
Uporabniški vmesnik
Med prvim zagonom Home Assistanta je povezava v internet skoraj obvezna, saj aplikacija prenese zemljevid okolice glede na to, katero lokacijo (oz. lokacijo svojega doma) izberemo. Nato izberemo uporabniško ime in geslo skrbnika. Kasneje lahko domačo lokacijo tudi popravimo ali spremenimo, všečno pa je, ker lahko vse naredimo v grafiki. Home Assistant lahko povežemo s pametnim telefonom in mu obenem omogočimo spremljanje naše lokacije, kar lahko s pridom uporabimo za avtomatizacijo določenih funkcionalnosti, denimo samodejni vklop ogrevanja, ko se vračamo iz službe. Med vnaprej nameščenimi funkcionalnostmi so tudi javno dostopne meritve vremenskih parametrov v okolici našega doma in vremenske napovedi, ki jih lahko uporabimo pri avtomatizaciji upravljanja našega doma. Home Assistant tudi sicer daje velik poudarek možnostim avtomatizacije, proženju nadzornih akcij, ko so zanje izpolnjeni določenih pogoji. Denimo, samodejno spuščanje zastorov, ko je vroč poletni dan in smo v službi, ali pa zagon klimatske naprave, kakšno uro preden se vrnemo domov. S tem lahko prihranimo veliko energije, obenem pa uživamo v večjem udobju.
Povezava nove naprave prek MQTT
Malo bolj se moramo v tem primeru potruditi zgolj z namestitvijo Mosquitto MQTT posrednika, ki ga moramo namestiti samostojno iz ukaznega okna, saj opcija za namestitev v grafičnem vmesniku Home Assistanta ni na voljo. Namestitev izvedemo z naslednjim zaporedjem ukazov: »sudo apt update«, »sudo apt upgrade«, »sudo apt install -y mosquitto mosquitto-clients« in »sudo systemctl enable mosquitto.service«. Uspeh namestitve nato preverimo z ukazom mosquitto -v, ki je sicer namenjen ročnemu zaganjanju MQTT posrednika, a obenem izpiše tudi vse podatke o namestitvi. A brez strahu! Pravilno je, če med izpisom podatkov opazimo tudi dve napaki, češ da Mosquitto ne more vzpostaviti strežbe, ker so vrata 1883 že zasedena. Jasno! Mosqutto je že zagnan kot storitev, zato je ta vrata že izkoristil.
Zdaj se lotimo še konfiguracije! Za uporabo storitve MQTT brez uporabniškega imena in gesla in brez varnega kodiranje TLS v lokalnem omrežju zadošča, da z ukazom »sudo mousepad /etc/mosquitto/mosquitto.conf« na konec nastavitvene datoteke mosquitto.conf dodamo naslednji vrstici: »listener 1883« in »allow_anonymous true«. Nato ponovno zaženemo MQTT posrednika z ukazom: »sudo systemctl restart mosquitto«.
Povezava IoT naprave s Home Assistantom
Iz namizna Home Assistanta odpremo v meni Settings, nato pa kliknemo na postavko Devices & Services in na vrhu okna izberemo zavihek Integrations. Nato v spodjem levem kotu kliknemo gumb »ADD INTEGRATON«, s čemer odpremo menijsko okno s pregledom vseh mogočih po abecednem vrstne, redu urejenih vmesnikov za integracijo Home Assistanta z zunanjimi storitvami. V našem primeru izberemo MQTT in nato v naslednjem oknu še enkrat (čisto pri vrhu) ponovno MQTT, nakar se prikaže okno za vnos osnovnih podatkov za povezavo z MQTT posrednikom, kjer je pomemben predvsem vnos DNS imena ali IP naslov MQTT posrednika. V našem primeru je to kar zunanji IP naslov Docker gostiteljskega strežnika, na katerem poganjamo Docker s Home Assistant kontejnerjem. Naslednji korak je namestitev Tasmota storitve. Ponovno kliknemo gumb »ADD INTEGRATON«, vendar tokrat poiščemo Tasmota. Ker je mogoča ena sama povezava, tako kot pri MQTT posredniku, po namestitvi Tasmota storitev sama poišče kompatibilna Tasmota naprave z vključeno MQTT storitvijo in jih samodejno integrira v Home Assistant okolje.
Če namesto zavihka Integrations izberemo zavihek Devices in v njem v pregledu naprav kliknemo na Tasmota razvojno ploščo LilyGO-PoE, se odpre pregled njenih ročnih nastavitev in vrednosti s tipal, katerega osveževanje je sorazmerno hitro. Med krmilnimi nastavitvami sta seveda tudi relejska izhoda, ki ju lahko enostavno ročno upravljamo prek stikala v grafičnem vmesniku. Pod njima so tudi podatki o trenutno izmerjenih temperaturi in zračnem pritisku (senzor), pri dnu pa so diagnostični podatki.
Če se povezava med IoT napravo in Home Assistantom poruši ali napravo izklopimo, njene krmilne nastavitve v Home Asistantu posivijo, namesto trenutnih vrednosti senzorjev in diagnostičnih podatkov pa se vsakokrat izpise Unavailable oz. nerazpoložjivo. Po ponovni vzpostavitvi dostopnosti ali delovanja IoT naprave, se njeni podatki osvežijo na dejanske vrednosti že po nekaj sekundah, ponovno pa je mogoče tudi ročno upravljanje.
Zaščita prek hekerji
Čeprav sta Home Assistant in Tasmota odlični razvojno-aplikacijski okolji, s katerima si lahko pri vzpostavljanju programske in strojne infrastrukture pametnega doma prihranimo obilico dela in hitro pridemo do učinkovitih rešitev, imata lahko ob nerodni izvedbi tudi veliko ranljivosti. Tasmotine smo omenili že v preteklih nadaljevanjih. Zato ponovno opozorimo na možnost uporab TLS varnega kodiranja podatkov MQTT sporočil, ki pa mora biti zagotovljeno tudi na strani MQTT posrednika. Izdelava in namestitev elektronskih certifikatov ter vzpostavitev sprotnega varnostnega kodiranja podatkov presega obseg te serije člankov. Podrobne opise in razlage lahko poiščete v internetu, če v Googlov ali drug spletni iskalnik vpišete iskalni gesli »Tasmota« in/ali »Home Assistant«. Glede zaščite pred hekerji še to! Home Assistanta ne moremo vzpostaviti brez internet ne povezave, lahko pa deluje tudi brez nje. Zato ni bojazni, da bi ob prekinitvi internetne povezave ostali brez upravljanja doma, je pa res, da v tem primeru nikakor ni dobro v domačem omrežju česarkoli spreminjati, dokler povezave ponovno ne vzpostavimo, saj lahko v nasprotnem onemogočimo delovanje. Obenem vselej velja, da je domače omrežje vselej dobro zaščititi tudi s požarnim zidom…
Prihodnjič
Vzpostavili in preizkusili smo osnovno delovanje Home Assitanata, pri čemer smo iz pomagali tudi s pametnim krmilnikom Tasmota. Prihodnjič se lotimo podrobnejšega načrtovanja upravljanja doma. Pametni dom bomo razdelili na območja in vanj namestili različne pametne naprave. Zanimalo na bo tudi, kako lahko Home Assistant upravljamo prek pametnih naprav.