Okos otthon is fókuszban

Arduino kalandok

Arduino kalandok

Termosztát projekt - fűtési program

2018. december 13. - denx

Legutóbb odáig jutottam, hogy elmeséltem hogyan jutottam arra a következtetésre, hogy a Home Assistant lesz ami a ház 2 körös fűtési rendszerét okosan fogja majd vezérelni. Az építőkockákat felsorolva megemlítettem azt is, hogy maga a thermostat komponens lesz a lényeg, de ez még nem elég okos / kényelmes önmagában.

Kézi módszer

Ami a minimális elvárás részemről, hogy lehessen definiálni, hogy a hét melyik napján hogy legyen fűtés a lakásban. Ez azt jelenti, hogy a thermostat komponensnek állítgatni kell a target_temp értékét. Első körben az automation komponenshez nyúltam, aminek igazából mindene megvan ahhoz, hogy ezt implementálni lehessen vele: time trigger a kulcsszó. Nekem 2-2 programra van szükségem zónánként:

  • Földszint hétköznap: 6:00-21:00 legyen 21.5 °C, azon kívül 20.0 °C
  • Földszint hétvége: 7:00-21:30 legyen 21.5 °C, azon kívül 20.0 °C
  • Emelet hétköznap: 5:40-6:40: 22.5 °C, 6:40-15:40: 18 °C, 15:40-20:00: 22 °C, ezen kívül 21.0 °C
  • Emelet hétvége: 7:00-21:00: 22.0 °C, ezen kívül 21.0 °C

Nos, ezt le lehet programozni automation elemekkel, de gyakorlatilag minden egyes váltáshoz kell 1-1 újabb sor. Ha valamihez hozzá kell nyúlni, akkor először újra értelmezni kell hogy melyik sor mit is csinál, majd lehet kezdeni a módosítgatást.

Megjegyzés: Igazából amikor "sort" írok, akkor kb. 8-16 sort jelent egy komponens bejegyzésénél, szóval a dolog áttekinthetősége messze nem tökéletes. Egy példa:

automation:
 - id: foldszint_hetkoznap_napkzben
   alias: Földszint hétköznap napközben
   trigger:
     platform: time
     at: '06:00:00'
     weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
   action:
     - service: climate.set_temperature
       data:
         entity_id: climate.foldszint
         temperature: 21.5

Ha át akar az ember valamit állítani, akkor 2 tipikus eset van: "most legyen meleg/hideg", vagy "keddenként hamarabb/később legyen hideg/meleg". Az elsőre teljesen jó az alap eszköz, a HASS portálon ki tudja magának rakni az ember a komponenst, amivel könnyű átmenetileg felülírni az aktuális beállítást. Logikus módon a dolog addig marad életben, amíg el nem jön a következő változtatás ideje, ami ugye felülírja a kézi beállítást - de szerintem ez rendben is van így. Amikor a programba kell belenyúlni, na az már fájdalmasabb dolog...

Heaty / Schedy

Amikor kezdtem átérezni ennek a folyamatnak a bonyolultságát, elkezdtem keresgélni a neten. Találtam is pár gyári megoldást, de nem akartam súlyos 10-100 ezreket kiadni fenszi termosztátokra hogy aztán a használati statisztikáimat és a vezérlést is a Google/Amazon/ázsiaiak/bárki kezébe adjam. Nem könnyen de ráakadtam egy Heaty nevű open source projektre, ami kb pont azt csinálja, ami nekem kell. Elsőre kicsit fura volt, hogy ez egy olyan komponens, aminek szándékosan nincs semmilyen frontend oldala, (se gomb, se tekerő, de még egy rohadt visszajelző pötty sem) de aztán megértettem pár dolgot. Egyrészt a program gyakorlatilag rácsatlakozik a HASS rendszerére API hívásokon keresztül, és az ott definiált thermostat komponens-nek állítgatja a target_temp értékét (meg csinál még pár apróságot vele). Másrészt a végtelen hosszú kommentfolyamból egy ponton kiderült, hogy a program készítője vak. Mármint szó szerint látássérült. Ebből nem is csinál titkot, de ez is magyarázat arra, hogy miért nem fektet hangsúlyt a vizuális megjelenésre. (Minden elismerésem az illetőé, el nem tudom képzelni hogy hogyan lehet programozni anélkül, hogy a forráskódot egyben látná az ember. Maxi respect!)

Megjegyzés: A történethez hozzá tartozik, hogy mire megírom ezt a bejegyzést a Heaty nevű projekt már "deprecated" állapotban van, helyét pedig a Schedy nevű alkalmazás vette át. Jelenleg én még nem tértem át a Schedy-re, de tervben van. A két program célja ugyanaz, sok szempontból hasonlóak, így nagy valószínűséggel amit a Heaty-ről írok igaz lesz (kisebb változtatásokkal) a Schedy-re is.

A cucc telepítése nem egyszerű, de azért megugorható feladat. Az eredmény az, hogy kell legyen a linux alapú szerverünkön egy appdaemon nevű service, ami a Home Assistant service elindulása után kell magától induljon. Ehhez kell egy nagyon nyúlfarknyi konfig fájl, ami megmondja, hogy a HASS szerverünket hol lehet elérni és milyen adatokkal lehet rá bejelentkezni. (Itt nem user/password jellegű a bejelentkezés, hanem egy token kell hozzá, de a leírásban benne van, hogy pontosan hova kell kattintgatni.) Ezután kell még egy szó szerint 1 soros python fájl, meg a Heaty saját yml konfig fájlja.

Mit is nyerünk ezzel az egész külső program telepítéses körrel? 

  • A konfigurációnk rendkívül egyszerű és könnyen átlátható lesz
  • Kiküszöböli az alap generic_thermostat néhány butaságát a rendszer, így sokkal megbízhatóbb lesz.
  • Vannak extra szolgáltatások is, amiket én még nem használok. (Pl: ablaknyitásra máshogy működjön, stb.)

A saját fűtésprogramom leírása ennyiből áll:

Foldszint:
  thermostats:
    climate.foldszint:
      schedule:
        - { temp: 21.5, start: "06:00", end: "21:00", weekdays: 1-5 }
        - { temp: 21.5, start: "07:00", end: "21:30", weekdays: "6,7" }
        - { temp: 20.0 }
Emelet:
  thermostats:
    climate.emelet:
      schedule:
        - { temp: 22.5, start: "05:40", end: "06:40", weekdays: 1-5 }
        - { temp: 18.0, start: "06:40", end: "15:40", weekdays: 1-5 }
        - { temp: 22.0, start: "15:40", end: "20:00", weekdays: 1-5 }
        - { temp: 22.0, start: "07:00", end: "21:00", weekdays: "6,7" }
        - { temp: 21.0 }

És hogy milyen butaságokra is gondolok? Időnként (számomra megmagyarázhatatlan módon és körülmények között) előfordul, hogy a termosztát által vezérelt kimenet (switch) bekapcsol, vagy kikapcsol, amikor nem kellene neki. Még nem találtam rá épeszű magyarázatot, hogy ez miért is történik, de a lényeg, hogy a Heaty ezeket az állapotokat folyamatosan felügyeli és időről időre igazít a kimeneteken, ha azok rosszul állnának. (Talán percenként, de lehet 2-3 perc is, nem tudom pontosan.)

Konklúzsön

Ha eddig eljutottunk, akkor járunk kb. azon a szinten, mint a bolti több zónás cucc, de ez még csak a kezdet. A következő részekben leírom majd a további lehetőségeket, amik ebben a rendszerben rejlenek még...

A bejegyzés trackback címe:

https://ardu.blog.hu/api/trackback/id/tr2914473674

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása