Avtor: dr. Simon Vavpotič
V drugem nadaljevanju smo priključili tipko, releja in vremenski BMP280 senzor. Uporabili smo tudi ožičeno Ethernet komunikacijo in programirali v jeziku Berry. Tokrat se lotimo povezave Tasmote s Home Assistant aplikacijo za upravljanje doma.
Daljše testiranje Tasmota modulov pokaže, da ti po pravilni konfiguraciji delujejo zanesljivo in stabilno, ne glede na to, ali komunicirajo prek ožičenega ali brezžičnega omrežja, ali preko obeh. To velja tudi za z njimi povezane senzorje, denimo BMP280 za merjenje temperature in zračnega tlaka. Ker v preteklem nadaljevanju nismo omenili, povejmo da BMP280 vrača absolutno vrednost tlaka, ki ni kompenzirana glede na morsko gladino. Če hočemo enake vrednosti, kot jih poročajo vremenoslovci, formulo za preračun najdemo na spletnih straneh arso.gov.si. Lahko pa namesto tega poiščete SE304 in SE305.
Ta vsebina je samo za naročnike
Kakorkoli, Tasmota IoT modul moramo zdaj povezati z aplikacijo za upravljanje doma, ki pa je še nimamo in jo moramo namestiti. Home Assistant je v tem pogledu naravnost odlična rešitev, zato ga bomo v nadaljevanju namestili in preizkusili.
Tasmota in Home Assistant
Zakaj bi sami razvijali programsko opremo za upravljanje pametnega doma, ko pa lahko uporabimo kar katero do aplikacij, ki jih zastonj prenesemo s spleta. Vendar teh ne smemo enačiti s Trasmoto, ki omogoča hitro in poenostavljeno izdelavo IoT naprav po meri uporabnika.
Home Assistant, ki je samo ena od najbolj priljubljenih tovrstnih aplikacij, omogoča zbiranje in obdelave podatkov iz vseh domačih pametnih naprav, kakor tudi njihov grafični prikaz, ki ga lahko prilagodimo svojim željam in potrebam.
Nasprotno, ima Tasmota vgrajen le osnovi grafični vmesnik, s katerim izvedemo prilagoditve in nastavitve razvojne ploščice, ki so potrebne za njeno delovanje kot merilne in krmilne naprave. Obenem podpira tudi različne komunikacije z nadzorno aplikacijo. S Home Assistantom lahko Transmota IoT napravo povežemo s pomočjo MQTT posrednika. Slednjega lahko naročimo v sklopu plačljivih storitev, denimo Amazion Web Services (AWS), ali pa ga namestimo in vzdržujemo sami.
Slednje ima dve prednosti: nismo odvisni od interneta, hkrati pa največ dela z namestitvijo MQTT posredniške strežniške aplikacije, medtem ko skoraj ne rabi vzdrževanja, razen takrat, ko spreminjamo delovanje omrežja.
Namestitev Home Assistanta
Čeprav bi moda mislili, da je Home Assistant samo še ena aplikacije za upravljanje doma, ki jo lahko prenesemo s spleta in namestimo v računalnik z operacijski sistem Windows, še zdaleč ni samo to. Ker je izdelana kot slika aplikacije za Docker virtualizacijsko okolje jo lahko namestimo v vse računalnike in operacijske sisteme, v katere lahko namestimo Docker.
Za manjše računalnike je na voljo tudi kot slika podatkovnega pogona, katero z ustreznim programskim orodjem prenesemo na primer na SD kartico, ki jo nato preprosto vstavimo v računalnik in zaženemo.
Tako se nam ni potrebno ukvarjati z namestitvijo Dockerja, ampak preprosto počakamo nekaj minut, da se novi Home Assistant strežnik zažene, nakar vnesemo želeno uporabniško ime in geslo, na osnovi katerih Home Assistant nadzornik (supervisor) izdela novega skrbnika. Manjka samo še MQTT posrednik, ki ga lahko namestimo prek grafičnega vmesnika kot dodatek (angl. add-on).
Tvorci aplikacije Home Assistant priporočajo Mosqitto MQTT strežnik, ki ga je enostavno skonfigurirati, še enostavneje pa povezati z napravo Tasmota. MQTT posrednik lahko pustimo odklenjen in dostopen vsem lokalnim aplikacijam, ali pa dostop zaklenemo s poljubnim uporabniškim imenom in geslom, ki ga moramo vnesti tako v Home Assistant kot v Tasmota IoT naprave. Priporočam testiranje brez gesla, za pri redni uporabi pa je dostop zaradi varnosti bolje zaklenit z geslom in tudi kodirano SSL povezavo (https).
Dodajmo še, da mora biti računalnik med izvedbo osnovnih nastavitev prek njegove spletne strani (na lokalnem HTTP naslovu: http://homeassistant.local:8123 ali <IP naslov navideznega računalnika v Docker virtualizaciji npr. 172.17.0.3:8123), ki obsegajo: način delovanja omrežne povezave (IP v4 ali IP v6), IP naslov in privzeti prehod ter med samodejnim prenosom Docker slik in zagonom storitve supervisor in drugih storitev za podporo delovanju Home Assistant, ves čas priključen v internet.
Nekoliko enostavneje pa je, če Home Assistant nameščamo v računalnik, na katerega smo poprej samostojno namestili virtualizacijsko okolje Docker, po možnosti z grafičnim vmesnikom Portainer.io (kar si lahko nazorno ogledate tudi v videu: https://youtu.be/4603ZRIURuU na YouTube). Portainer.io maksimalno poenostavi prenos aplikacije, ki jo samodejno potegne s spleta, namesti in zažene v manj kot minuti. 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 Tasmota IoT naprave s Home Assistantom
V preteklih nadaljevanjih v SE335 in SE336 ste lahko prebrali o vzpostavitvi osnovnega delovanja LilyGO-PoE razvojne plošče na osnovi ESP32 modula z dodanim BMP280 senzorjem, s katerim sproti meri temperaturo in zračni pritisk. Naučili smo se tudi uporabiti Ethernet povezavo namesto Wi-Fi povezave, vendar sta Wi-Fi brezžična in Ethernet ožičeni povezavi pri vzpostavljanju komunikacije med Home Assistantom in Tasmota IoT napravo povsem enakovredni.
MQTT nastavitve odpremo iz osnovnega menija takole: »Configuration/Configure MQTT«. Zadošča vnos IP naslova ali imena gostiteljskega MQTT posredniškega strežnika, nakar nastavitve shranimo s pritiskom na tipko Save.
Dokončanje nastavitev v Home Assistantu
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 tipko »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. Izberemo MQTT in nato v naslednjem okni š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 tipko »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 kompatibilne Tasmota naprave z vključeno MQTT storitvijo in jih samodejno integrira v Home Assistant okolje.
Kako deluje?
Če je Tasmota uporabniku prijazno razvojno-aplikacijsko okolje za gradnjo IoT naprav za pametni dom, je Home Assistant krovna aplikacija, ki jih povezuje v celoto in jih lahko tudi samodejno upravlja. Tasmota IoT napravo na osnovi LilyGO-PoE razvojne plošče smo v preteklem nadaljevanju (SE336) nastavili tako, da lahko prek dveh GPIO priključkov krmilimo releja, katerih nastavitve in možnost upravljanja se prek sporočilnega protokola MQTT prenesejo tudi v Home Assistant.
Č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 internetne 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 primeru onemogočimo delovanje.
Obenem vselej velja, da je domače omrežje vselej dobro zaščititi tudi s požarnim zidom…