Sari la conținutul principal

Sistemul de referință din Sovata

Casa în care testăm tot ce vindem. Rulează de ani de zile, iar când se strică ceva, îl reparăm și scriem despre el.

senzori dintr-o singură integrare fotovoltaică
~230senzori dintr-o singură integrare fotovoltaică
producători integrați într-o singură interfață
7+producători integrați într-o singură interfață
apeluri către cloud în controlul climatizării
0apeluri către cloud în controlul climatizării

Punctul de plecare

O casă obișnuită din Sovata, cu instalație fotovoltaică și baterie, două aparate de aer condiționat, rețea proprie, camere și un server de stocare. Nimic exotic — exact tipul de gospodărie pentru care construim.

Problema era la fel de obișnuită: fiecare lucru avea aplicația lui. Invertorul într-una, climatizarea în alta, camerele într-a treia, rețeaua într-a patra. Nimic nu știa de nimic, așa că nimic nu putea fi automatizat în funcție de altceva.

Ce am urmărit

O singură interfață pentru tot, care rulează în casă. Fără abonament, fără dependență de un furnizor, fără date trimise afară.

Și un criteriu greu: fiecare integrare trebuie să funcționeze fără internet. Dacă un echipament nu se lasă comandat decât prin serverul producătorului, ori îi găsim o cale locală, ori îi schimbăm modulul.

Arhitectura

Home Assistant rulează ca mașină virtuală pe un host Proxmox din casă. Lângă el, în containere separate, stau serviciile de rețea. Separarea nu e cochetărie: o actualizare de Home Assistant nu poate lăsa rețeaua fără controller, iar un instantaneu Proxmox dă înapoi o actualizare greșită în câteva minute.

Invertorul fotovoltaic se citește pe Modbus, direct. De acolo vin în jur de 230 de entități: producție instantanee pe fiecare șir, starea de încărcare a bateriei, import și export separat, modul EMS, temperaturi. Un singur echipament, dar cel mai bogat în date din toată casa — și baza pentru orice automatizare energetică.

Aparatele de aer condiționat se comandă în rețeaua locală, pe portul lor propriu, fără serverul producătorului. Contul din fabrică e folosit o singură dată, ca să extragem cheia de dispozitiv; după aceea legătura cu exteriorul nu mai e necesară.

Controllerul de rețea intră ca sursă de prezență: dispozitivele cunoscute din rețea spun sistemului cine e acasă, fără să fie nevoie de o aplicație de urmărire pe telefon.

O depanare reală: aparatul de aer condiționat care distribuia adrese

La un moment dat, echipamente din casă au început să primească adrese de rețea greșite. Nu toate, nu mereu, și nu în același fel — genul de defecțiune care se pune ușor pe seama „rețelei” și rămâne neexplicată ani de zile.

Sursa s-a dovedit a fi modulul Wi-Fi din fabrică al unuia dintre aparatele de aer condiționat. Rula un server DHCP propriu și distribuia adrese din afara intervalului configurat pe router, cu valabilitate de două ore.

Partea care face defecțiunea greu de prins: modulul falsifica identificatorul de server, punând în el adresa routerului. Protecția din controllerul de rețea, care exact asta ar trebui să blocheze, decide pe baza acelui identificator — deci vedea un server legitim. Am lăsat-o pornită, fiindcă împotriva unui server care nu falsifică tot ajută, dar aici nu a avut ce face.

Măsurarea s-a făcut cu o interogare DHCP trimisă de pe host, cu o adresă hardware generată aleator. Două oferte în răspuns înseamnă că sursa e încă activă; una singură, de la router, înseamnă că e rezolvată. Adresa hardware aleatoare contează: cu valoarea implicită a instrumentului, măsurarea poate da un fals negativ. Sursa propriu-zisă se identifică ascultând traficul DHCP pe interfața de rețea.

Resetul din fabrică nu a rezolvat nimic — și asta am măsurat-o, nu am presupus-o. După reset complet și reînregistrare, serverul rula mai departe; doar contorul intern al intervalului s-a mutat, deci împărțea alte adrese, cu aceeași valabilitate și cu același identificator falsificat.

Amândouă aparatele aveau aceeași versiune de firmware, dar numai unul se purta așa. Prefixele de producător ale adreselor hardware difereau, ceea ce arată revizii de hardware diferite. Unitatea interioară nu are interfață de rețea, deci serverul nu putea rula decât în modulul Wi-Fi însuși.

Soluția are două părți. Pe termen scurt, echipamentele importante au primit adrese fixe: un dispozitiv cu adresă fixă nu întreabă niciodată DHCP, deci falsificarea nu îl atinge. Pe termen lung, modulul din fabrică se înlocuiește cu unul deschis, pe ESPHome, fără cloud — care rezolvă și problema de rețea, și dependența de contul producătorului, cu aceeași piesă.

Ce nu am făcut: să blocăm echipamentul în controllerul de rețea. Blocarea s-ar fi aplicat pe punctul de acces și ar fi tăiat și portul de comandă locală — aparatul ar fi devenit „indisponibil” în sistem, fără niciun mesaj de eroare care să explice de ce. Simptomul ar fi dispărut și în locul lui ar fi apărut unul mai greu de diagnosticat.

Rezultatul

Un singur tablou de bord pentru fotovoltaice, climatizare, rețea și camere. Automatizări care se sprijină una pe alta: bateria se încarcă din surplus, boilerul pornește când producția e mare, iar aerul condiționat nu răcește camere goale.

Și — cel mai important pentru ce vindem — totul funcționează cu cablul de internet scos. Se pierde accesul de la distanță și notificările; restul merge înainte.

Ce am învățat

Modulul din fabrică e cea mai slabă piesă dintr-un echipament bun. Aparatele de aer condiționat funcționează impecabil; problema a fost în cardul Wi-Fi de zece euro din ele. De atunci, la orice echipament verificăm întâi ce face modulul de rețea, nu ce promite fișa tehnică.

Măsoară, nu presupune. Resetul din fabrică „ar fi trebuit” să rezolve problema. Nu a rezolvat-o, și doar măsurătoarea de după a arătat asta. Presupunerea ne-ar fi costat săptămâni.

Adresa fixă e o unealtă de apărare, nu doar de ordine. Un echipament care nu întreabă niciodată nu poate primi un răspuns greșit.

Și motivul pentru care scriem asta: dacă un sistem nu e documentat, defecțiunea de anul trecut se depanează din nou de la zero. Aici nu se întâmplă, fiindcă totul e scris — de asta primești și tu documentația la predare.