Svi članci

Kako Home Assistant učiniti pouzdanijim: izbacite sklopnu logiku iz servera

Home Assistant postaje pouzdaniji kad osnovna sklopna logika ide izravno između uređaja: ESPHome, Zigbee binding, Z-Wave. HA ostaje mozak kuće.

Kako Home Assistant učiniti pouzdanijim: izbacite sklopnu logiku iz servera

Kako Home Assistant učiniti pouzdanijim?

Kratki odgovor, odmah na početku: tako da Home Assistant tretirate kao mozak, a ne kao leđnu moždinu. Osnovna sklopna logika (pritisnem tipku, svjetlo se upali) seli se u uređaje ili se povlači izravno između njih: kao ESPHome automatizacija na mikrokontroleru, kao Zigbee binding od tipke prema svjetiljci, kao Z-Wave asocijacija. Home Assistant zadržava sve što stvarno traži mozak: kontekst, scene, statistiku, nadzornu ploču. A kad server upravo instalira update, restarta se ili je jednostavno mrtav, svjetlo u tušu svejedno radi.

To je cijela teza ovog teksta. Ostalo je obrazloženje, dvije konkretne upute i poštena tablica što koji put može.

Zašto me tema ne pušta: Home Assistant odavno nije hobi-projekt, nego infrastruktura. Više od 654.000 aktivnih instalacija dobrovoljno se javlja u statistiku projekta, a to je samo dio koji je pristao na opt-in; stvarna brojka je znatno viša. No infrastruktura se ne mjeri po nadzornoj ploči. Mjeri se po prekidaču za svjetlo. Prekidač iz 1975. ima dostupnost u koju svaki softverski stack može samo zuriti. Tko ugrađuje pametnu tehniku, natječe se s tim očekivanjem, htio to ili ne.

Usko grlo između tipke i svjetiljke

Prođite u usporenoj snimci što se događa u tipičnoj instalaciji kad netko pritisne Zigbee tipku. Tipka šalje radiom prema koordinatorskom sticku. Stick predaje okvir Zigbee2MQTT-u. Zigbee2MQTT objavljuje na MQTT broker. Home Assistant je pretplaćen, automatizacija okine, pozove light.turn_on, i naredba ide istim putem natrag: broker, Zigbee2MQTT, stick, radio, svjetiljka.

Ovisno kako brojite, to je sedam stanica za „upali svjetlo”. Svaka od njih je proces koji mora raditi. Svaka dobiva update-e. Nekoliko ih dijeli istu SD karticu, isti disk, isto malo računalo u hodniku. Padne li jedna stanica, ne gubite komfornu funkciju. Gubite prekidač. Kako izgleda takav ispad kad stigne u najgorem trenutku, opisao sam u priči o Z2M kaskadi jednog četvrtka poslijepodne — otada svaka automatizacija koju gradim prolazi kroz pitanje: što se dogodi kad ovaj lanac pukne?

Da bude jasno: ništa od ovoga nije prigovor Home Assistantu. Stack je začuđujuće stabilan i većina tih sedam stanica radi mjesecima bez trzaja. Ali stabilnost nije isto što i neovisnost. Update ostaje update, restart ostaje restart, i oboje spada u pošten pogon. Pitanje nije hoće li server nakratko nestati. Pitanje je što u tom trenutku još radi.

Mozak i leđna moždina

Ljudsko tijelo taj je problem riješilo elegantno. Dotaknete li vruću ploču štednjaka, refleksni luk povuče ruku prije nego što signal uopće stigne do mozga. Odlučuje leđna moždina. Mozak sazna trenutak kasnije i smije se baviti zanimljivim dijelom: psovati, analizirati uzrok, idući put biti oprezniji.

Točno takvu podjelu posla želim u kući, jer ona čini Home Assistant pouzdanijim, a ništa mu ne oduzima. Refleksi (tipka pali svjetlo, prekidač vozi roletu) pripadaju najnižem sloju koji još radi: mikrokontroleru, radijskom protokolu, po potrebi rednoj stezaljci. Mozak radi kontekst: noću samo 20 posto svjetline, rolete dolje kad sunce udari sa zapada, grijanje isključeno kad nikoga nema. Padne li mozak, kuća gubi inteligenciju, ali ne i osnovnu funkciju.

Moj test je jednostavan: ugasite server i prošećite kućom. Sve što sad više ne radi, a po mišljenju ukućana „mora uvijek raditi”, leži na krivom sloju.

Zidni prekidač izravno spojen sa svjetiljkom, server sveden na blijedu točkastu liniju sa strane

Metoda 1: ESPHome — automatizacija stanuje na čipu

Prvi i najtemeljitiji put. Tko gradi uređaje s ESPHomeom, bira gdje logika živi: kao automatizacija u Home Assistantu ili kao automatizacija u YAML-u samog uređaja. Za osnovne funkcije odgovor je jednoznačan. Zidna tipka fizički spojena na GPIO kontrolera dobije on_press koji izravno prebacuje lokalni relej ili lokalno svjetlo. Bez mreže, bez pitanja centrali.

ESPHome dokumentacija ovdje je osvježavajuće izravna. Na pitanje rade li automatizacije bez mrežne veze odgovara doslovno: „YES! All automations you define in ESPHome are executed on the microcontroller itself and will continue to work even if the Wi-Fi network is down”. To nije nuspojava. To je cilj dizajna.

Najljepše od svega: Home Assistant ne gubi ništa. Stanje releja i dalje se javlja čim se veza vrati, nadzorna ploča ispravno prikazuje svjetlo, a svaka HA automatizacija smije šaltati povrh toga — navečer prigušiti, ugasiti kad svi odu, što god kontekst traži. Ali tipka na zidu radi i onda kad Wi-Fi, broker i server svi zajedno šute. Ja u međuvremenu svaki ESPHome aktuator spajam tako da mu je primarno upravljanje lokalno, a sve što dolazi izvana tretiram kao dodatak.

Metoda 2: Zigbee binding pušta tipku da razgovara izravno sa svjetiljkom

Drugi put ne traži lemilicu. Zigbee ima izravno upravljanje uređaj-uređaj ugrađeno u protokol; funkcija se zove binding. Zigbee2MQTT dokumentacija opisuje to točno tako: uređaji upravljaju jedni drugima, „without the intervention of Zigbee2MQTT”. Tipka svoju naredbu ne šalje koordinatoru na obradu. Šalje je kroz mesh izravno vezanoj svjetiljci. Server se restarta? Zigbee2MQTT usred update-a? Svjetiljku za to nije briga.

U praksi se rijetko veže na jednu svjetiljku, nego na Zigbee grupu: tipka u kupaonici na grupu „kupaonica”, i sva tri spota reagiraju istovremeno, jednom grupnom naredbom umjesto tri pojedinačne. Što, usput, rasterećuje radijsku mrežu. ZHA korisnici ne moraju biti ljubomorni; binding tamo ide jednako, preko stranice uređaja.

Dvije poštene ograde. Prvo, ne podržava svaki uređaj binding — to ovisi o proizvođačevoj Zigbee implementaciji; IKEA oprema tradicionalno je poslušna, druge marke vezane promjene stanja javljaju natrag samo djelomično. Drugo, tipke na bateriju duboko spavaju: kod postavljanja bindinga treba ih probuditi, inače postupak tiho propadne. Oboje piše u povezanoj dokumentaciji, oboje se rješava za deset minuta.

Što još ide izravno

Z-Wave zna isto i zove to asocijacijom. Uređaju se u jednu od asocijacijskih grupa upiše cilj i on otada svoj Basic_Set šalje izravno, čak i kad je kontroler isključen ili pokvaren. Pod Home Assistantom to se postavlja preko stranice uređaja u Z-Wave JS-u, u pravilu od grupe 2 nadalje. Naredbe su namjerno jednostavne: upali, ugasi, priguši, i to je to. Za reflekse je to točno dovoljno.

Tko u kući ima Hue Bridge, njegov vlastiti pribor može koristiti kao dodatni sloj: Hue dimmer uparen izravno s bridgeom pali svoje svjetiljke i onda kad Home Assistant ne odgovara. Strogo gledano, to je manja centrala umjesto nikakve, ali je druga i neovisna — i update-a ima znatno rjeđe.

Shelly releji nose princip sve do podžbukne kutije. Fizički zidni prekidač električki visi na sklopnom ulazu releja i šalta lokalno na uređaju, s Wi-Fijem ili bez njega. Zanimljiv je obrnuti slučaj: popularni „detached mode”, u kojem ulaz samo šalje evente, a šaltanje preuzima server, ponovno ugrađuje upravo onu ovisnost o kojoj ovaj tekst govori. Ponekad komfor to vrijedi. Samo neka to bude svjesna odluka, a ne navika.

A Matter? Standard bindinge izričito predviđa; uređaji bi trebali upravljati jedni drugima bez kontrolera u sredini. Home Assistant je dodao prve binding funkcije u svoj Matter add-on, još rudimentarne, a podrška na uređajima je tanka. Pratiti, još ne graditi na tome. KNX ekipa smije se na ovom mjestu blago nasmiješiti: kod njih logika u uređajima desetljećima je standard, a sabirnica uopće ne poznaje središnji server koji bi mogao pasti.

Slojevi u usporedbi

PutŠalta kad HA padne?Treba li funkcionalnu mrežu?Snaga logike
ESPHome automatizacija na čipu❌ (ni Wi-Fi)srednja: uvjeti na uređaju
Zigbee binding (uređaj/grupa)Zigbee mesh, bez serveraniska: on/off/prigušenje/boja
Z-Wave asocijacijaZ-Wave radio, bez kontroleraniska: osnovne naredbe
Shelly sklopni ulaz (spregnut)niska: šaltanje
Hue pribor na bridgeuHue Bridge + Zigbeeniska do srednja
Automatizacija u Home Assistantucijeli stackvisoka: sve, s punim kontekstom

Zadnji red nije najgori. On postoji za nešto drugo. I upravo je to poanta: ne radi se o svrgavanju Home Assistanta, nego o tome da svaki komad logike legne na sloj koji mu stvarno treba. „Upali svjetlo” ne treba Python interpreter.

Što onda ostaje mozgu?

Sve zanimljivo. Scene koje koordiniraju više sustava. Prisutnost, rasporedi, cijene energije, vrijeme. Obavijesti, statistika, nadzorna ploča kao prozor u kuću. Tko reflekse izmjesti, ne degradira Home Assistant, nego ga čini pouzdanijim i slobodnijim istovremeno: server sad smije raditi ono što samo on može, i nitko ne zadržava dah tijekom update-a. Ista je to ideja zbog koje su lokalne instalacije otpornije od ovisnosti o cloudu, samo primijenjena sloj niže — na vlastiti server umjesto na tuđi.

Za sve koji Home Assistant profesionalno postavljaju kod klijenata, ovo je više od higijene. Instalacija čije osnovne funkcije ne osjete update-e i restarte ne proizvodi pozive u 21 sat. Održavanje se može voditi u čistom, vremenski ograničenom prozoru, Core ažurirati, add-one restartati, a klijent jednostavno ništa ne primijeti. S nekoliko vlastitih uređaja to provjeravate rukom. Kod dvadeset klijentskih instalacija želite stanje i update-e svih sustava vidjeti na jednom mjestu, inače kontrola pojede vrijeme koje je arhitektura upravo uštedjela.

Za kraj, natrag pod tuš gdje je ovaj tekst počeo. Core update se vrti, server se diže, nadzorna ploča je nakratko siva. A svjetlo? Svjetlo se pali. Jer između tipke i svjetiljke više nitko ne sjedi u sredini s pametnijim poslom.

DO
Denny Ovčar
Founder · ha-fleet-manager.com
Odgovori
Podijeli