Keringető szivattyú vezérlése: még okosabb fűtés

A 2022-ben megvalósított keringető vezérlés utóélete, tuningja és némi áttekintés a jelenlegi állapotról. Részletesebb infókért (szükséges kütyük, bekötés, stb.) érdemes a korábbi bejegyzést elolvasni.


Régi kazán, okos vezérlés by Pixlr AI

A rendszer lényege maradt, különböző bemenetek alapján egy kis ESP8266 mikrovezérlő dönt a keringetés bekapcsolásáról, időtartamáról. A paraméterek webes felületen változtathatók, de így két év után már nem is emlékszem, mikor kellett változtatni.

A hardverről bővebben: ez rövid lesz, minden maradt. :D A szivattyút SSR relé kapcsolja, nem tud beégni. Az áramszünetek ritkák, de előfordulnak. Tervben van egy akkus ápgréd, 12 VDC ólom akku, erre kell egy kis inverter a szivattyú masszív 35-45 W terhelésére, meg egy jó minőségű step-down konverter az ESP-t táplálni. Opcionálisan AC hálózat figyelése, de megfelelő akku méretnél ez hanyagolható. Prio listán egészen hátul van, így ennél alaposabban még nem foglalkoztam ezzel a fejlesztéssel.

Szoftver: na itt nagy csodák történtek... De előbb pár szóban még az ESPeasy keretrendszerről. Valamikor 2022 szeptember környékén volt telepítve, azóta OTA frissítem, amikor eszembe jut...
Most közel egy évet kellett áthidalni, ez legalább 5 kihagyott firmware-t jelent. Mivel van backup, meg másik Wemos, így a release notes olvasása nélkül ráeresztettem az újat...
Minden frissült és működik, jött rengeteg új funkció a programba. Le a kalappal az ESPEasy készítői előtt :R

Rules, ami "hajcsa": az utolsó nagyobb frissítés a szivattyúvédelem hozzáadása volt. Az adatokat MQTT-n küldte a Home Assistant okosotthon rendszerbe, az csak feldolgozta az adatokat, más beleszólása nem volt. Ezen is akartam változtatni, de a rules korlátai is elgondolkodtattak, hogy mit kellene a Home Assistantra bízni, anélkül, hogy a fűtés autonómiája csökkenjen.
Több feladat is volt, lássuk sorban:

1. Szellőztetés:
Az ESPeasy MQTT parancsokat is tud fogadni. A command topikot egy "dummy device MQTT import" olvassa, számokat csak, de több nem is kell. Egyelőre egy bejegyzés van a négy lehetségesből használatban: Szellőztetés. Ha a lakást szellőztetjük, akkor azt jelzi a fűtésnek és ilyenkor nem indítja el a keringetést. Erről gombnyomásra a kijelzőn is megjelenik egy üzenet.

Fontos volt, hogy az MQTT bróker vagy az okosotthon kiesése ne okozzon fennakadást. A command nélkül a változó értéke 0, vagyis ha valami nem működik, akkor a meglévő többi paraméter alapján dönti el a Wemos D1 mini, hogy kell-e keringetést kapcsolni.

Igen, ha már Okosotthon, akkor vehettem volna egy okos termosztátot, vagy lehetne virtuális termosztát. Ez egyszerűen nem adna jelet fűtésre, ha az ablakok nyiva vannak. Jogos. Keresgéltem, de a feltételeimnek megfelelő termosztátok (zigbee, vezeték nélküli) vagy rondák, vagy drágák, vagy nem jókat írnak róluk. Másik érvem, hogy így sokféle utasítást tudok az ESP-nek küldeni, ez egy jó gyakorlás volt a továbbiakra. Fali kijelző folyamatban (kicsit fúrni kellene egy dobozig a falban, de karácsonykor ezt nem merem :B ), szerintem ott lesz majd egy szép termosztát a tablet kijelzőn, kész.

2. Túlfűtés védelem:
Már a kezdeti verzióban is volt védelem arra az esetre, ha "megszaladna" a kazán és túl meleg lenne a víz a pufferben. Nem fordult még elő, vannak más biztonsági berendezések is, de ettől még ezt fontosnak tartom. Néhány sorral hosszabb program, ami megelőzhet/késleltethet nagyobb problémákat.

Az okos termosztátfejek felszerelésével előállhat olyan helyzet, hogy a keringetéssel hűteném a rendszert, de ezek a radiátorok kiesnek (kb. a radik fele). Ez nem segíti, hogy gyorsan a biztonságos tartományba hűtsem a rendszert. Megoldás: erről is küld infót az okosotthonnak, ami ilyenkor kinyit minden vezérelhető radiátorszelepet. Ez gyorsítja a hűtést és kvázi mellékhatásként megfőz minket -de nem robban fel. ;)

3. Szabályok (rules) mérete:
2000 karakter, ennyibe kell elférni. Nem egyszerű. Első lépés volt a szabályok offline szerkesztése, majd a kommentek nélküli feltöltése. Ezzel lett több verzióm, amikhez vissza tudok térni, ha valami esetleg nem sikerül. Következő lépés volt a beszédes nevek rövidítése, pl. heating_on helyett hon, temp_min helyett tmin és így tovább.
Kommentekben jeleztem, hogy hol lehet még spórolni karakterekkel. Egyelőre erre nincs szükség, de ha valaki hasonló limitbe fut, akkor érdemes a neveken elgondolkodni, minél rövidebbre venni.

Végül az MQTT-n küldött adatokat is megváltoztattam, a korábban a Home Assistantban használt bináris szenzorok (keringetés, szünet, figyelés, túlfűtés) egy szenzorba lettek összevonva. Erre két este ráment, mert mindennel próbálkoztam, csak szenzorral nem. Valamiért úgy gondoltam, hogy a szenzorok csak számot tartalmazhatnak, de szerencsére nem így van. Az új szenzor "Fűtés állapot" értékét kell csak átküldeni a rules-ból, jelentősen csökkentve a méretet és az okosotthonban azt is látom így, hogy mikor mire változott az állapot. Ideális esetben ESPEasy dummy device-ba írnám az értéket, amit adott időközönként elküld MQTT-n. Sajnos string-et ezek nem tudnak tárolni (ez nagyon hiányzik, sok éve várjuk már ezt az opciót), a HA tudná kezelni így is, de azt követni körülményesebbnek tűnt. Az alkalmazott megoldás hátránya, hogy a publish másodpercenként többször is fut, a küldések gyakoriságát csak az MQTT controllerben beállított minimum send interval értékkel lehet redukálni.

Jöjjön a lényeg, a jelenlegi rules (kommentekkel a // után):

on System#Boot do
 GPIO,2,1    //led ki
 event,setup  //alap értékek feltöltése
endon

on setup do // ez a rész mehetne system#boot-ba is, ha nagyon szoros a hely
 TaskValueSet 1,1,34  //min vízhőfok
 TaskValueSet 1,2,89  //over, biztonsági hőfok, amin el kezd keringetni
 TaskValueSet 2,1,350 //keringetési idő sec
 TaskValueSet 2,2,500  //keringetési idő szünet
 TaskValueSet 2,3,30  //termosztát figyelése
 TaskValueSet 2,4,1200  //szivattyú védelem, ennyi kör után
 Let,2,2    //alap watch induláskor
 Let,3,0   //protect-szivattyú védelem számláló nullázás
 TimerSet,2,8  //Start 
endon

on Rules#Timer=1 do  //keringetés szünetel
Publish %sysname%/status, 'Szünet' //hmmm... a topik nevét is lehetne rövidebbre venni
 oled,7,3, Pause
 gpio,15,0
 TaskValueSet 4,1,0
 Let,1,[dtime#keringp]
 Let,2,2
 TimerSet,3,1
endon

on Rules#Timer=2 do  //watchdog, figyel mindent is
 if [owt#temp1]>[dtemp#tmax]
 event,hover
 elseif [termo#state]=1
 event,hon
 else
 event,hoff
endif //ezekre figyelni kell, ha kimarad, vagy a ciklus közepére is kerül egy, akkor bánat van
endon

On  Rules#Timer=3 do  //időzítő loop, helyet spórol
 if [VAR#1]<2
 Let,1,0
 TimerSet,3,0
 TimerSet,[VAR#2],1
 else
 Let,1,[VAR#1]-2
 TaskValueSet 4,2,[VAR#1]
 TimerSet,3,2
 endif
endon

on termo#state=0 do  //termosztát lekapcsoloásakor
 if [owt#temp1]<[dtemp#tmax]
 TimerSet,1,3
 else
 TimerSet,2,1
 endif
endon

on hon do  //keringetés bekapcs
 if [owt#temp1]>[dtemp#tmin] and [ha#ha]=0  //feltétel: min hő felett, ablakok zárva
 Publish %sysname%/status, 'Keringetés'  //egyszerűsített MQTT üzenet
 oled,7,3,Heating!
 gpio,15,1
 TaskValueSet 4,1,1
 TaskValueSet 4,3,0
 Let,1,([dtime#kering]-([owt#temp1]*2))
 Let,2,1
 Let,3,0
 TimerSet,3,1
 else
 event,hoff
 endif
endon

on hover do  //túlfűtve a puffer
 Publish %sysname%/status, 'Túlfűtés'
 oled,7,3,OVERHEAT
 gpio,15,1
 TaskValueSet 4,1,1
 Let,1,600
 Let,2,2
 Let,3,0
 TimerSet,3,1
endon

on hoff do  //keringetés vége
 gpio,15,0
 TaskValueSet 4,1,0
 Let,3,[VAR#3]+1
 TaskValueSet 4,3,[VAR#3]
 if [var#3]=[dtime#protect]   //szivattyúvédelmet számolja
 Publish %sysname%/status, 'Keringetés'
 oled,7,3,Protect
 gpio,15,1
 TaskValueSet 4,3,0
 TaskValueSet 4,1,1
 Let,1,60
 Let,2,2
 Let,3,0
 Timerset 3,1
 elseif [ha#ha]=1  //ha a HA jelezte a nyitott ablakokat
 Publish %sysname%/status, 'Ablakok'
 oled,7,3,Ablakok
 TimerSet,2,[dtime#watch]
 else
 Publish %sysname%/status, 'Watch'  //figyelős loop
 oled,7,3,Watch
 TimerSet,2,[dtime#watch]
 endif
endon

Home Assistant szenzor (configuration.yaml -ban kell elhelyezni):
mqtt:
  sensor:
    - name: "Fűtés státusz"
      state_topic: "ESP_Pump_2/status"
      unique_id: futes-status

Ha semmi infót nem adunk a szenzorhoz (milyen típus, miben és mit mér), akkor lesz egy ilyen "mindenes" szenzor, amiben tetszőleges adatot tudunk fogadni MQTT-ből.

ESP beállítások, MQTT controler:

A mikrokontrollerre csatlakoztatott valós és "dummy" eszközök:

Home Assistant fűtés dashboard ide tartozó részlete:

Összességében még komfortosabb (ez főleg a sok okos TRV érdeme) és még "spórolósabb" lett a fűtés. További tervek az akkus táplálás, az itthoni jelenlét pontosabb követése (okosotthon intézi, extra utasítást küld MQTT-n csak, így ez nem az ESP-t terheli).

ESP32-re fejlesztés is felmerült, de igazán elvan a kis Wemos 20-35% CPU loaddal, ram csak akkor telik meg, ha elnézek valamit a rules-ban (egy extra endif került bele kopipészt miatt, hát nem volt boldog. Free ram és utána egy nagy negatív szám volt a jutalmam...). Van pár elektromos fűtőbetétem, ami illeszkedik a pufferhez. Ezekkel az őszi és tavaszi időszakban a megtermelt áramból lehetne fűteni.

Köszönöm, hogy benéztél! :R

  • frescho

    addikt

    válasz ViZion #6 üzenetére

    Lebuktam :)

    Kondenzációsnál sokat számít, ha tudod csökkenteni a hőfokot. Szigetelés előtt méretezték a hőleadó felületeket (radiátor+padló), ezért most 0 fok körüli kinti hőmérsékletnél is bőven elég a 48 fokos elmenő a kazántól. Gyakorlatilag most folyamatosan kondenzációsként tud üzemelni a gép, mert még ezt is lehet szabályozni a kinti hőmérséklettel párhuzamosan. A másik nyereség, hogy így nem fogjuk megsütni a padlót, mert annak a hőmérséklete is 40C alatt van folyamatosan.

    Graphics: Ott más baj van, nem a szellőzéssel, hanem a hőhidakkal van gond. Rendben meg van csinálva a koszorú/tető sarok szigetelése? Tipikus, hogy kívül nem viszik fel eléggé, vagy felül a szigetelést nem viszik fel a fal tetejére.

    https://frescho.hu

  • Graphics

    Jómunkásember

    Na nekiesek, igaz nálunk csak a meglévő Computherm 2db termosztátot kéne valahogy felokosítani és optimalizálni a fűtést, puffer nincs...

    Van egy Ariston 24kW-os kazán, padlófűtés 5 ágon és radiátor 5 ágon... Hőcserélő nincs... Ezt bánom, mert sokat szívtunk vele.. Alapvetően kevés a fűtésszámlánk, de szerintem még bőven faragható lenne.

    Szigetelés van, de valami nem jó a légcserével, mert a sarkok egy része hajlamos bezőőődűni, de ez már más téma.

    [ Szerkesztve ]

    Bármilyen témában szívesen segítek, SSD, Robotporszívó, Xiaomi, Poco mobilok ,de 2025-ben már csak és kizárólag privátban leszek elérhető. :)

  • ViZion

    félisten

    LOGOUT blog

    válasz pojakcs #7 üzenetére

    Kb. ennyi volt a régi rendszer, termosztát kapcsolt, azzal sorba egy cső termosztát, ami a víz hőfokot nézte. Ha nem spórolnék és a túllövéseket megkedveltem volna, akkor nem építek... :D
    "Analógba" -ahogy freshco is írta- érdemes legalább a visszatérőt is bevenni a kapcsolásba, biztos van pid több bemenettel, delta számítással. Várjá', az sem analóg :U

    Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html

  • pojakcs

    senior tag

    Le a kalappal , hogy ennyi munkát fektet valaki egy viszonylag egyszerű probléma megoldásába. Az én analóg agyam, anno egyszerűbb megoldást dobott. https://www.emag.hu/stc-1000-termosztat-220v-06614/pd/DX8VJWBBM/ Egy STC kapcsolja a szivattyút, ha meleg a víz. Az meg akkor meleg, ha befűtöttem. Biztonsági tartalék, még egy STC a fiókban.

    Üdv: Csaba

  • ViZion

    félisten

    LOGOUT blog

    válasz frescho #5 üzenetére

    Köszönöm :R
    ...az előzményt nem olvastad, lebuktál ;]
    A túllövések miatt lett az egész, mert a mezei termosztát ezt nem tudja megoldani. Próbáltam matekolni, de elvetettem, túlgondoltam... egyszerűen a víz megfordulási idő a keringetés, majd vár a rendszer (itt nézi a hőfokot is) és utána újra keringet, ha kell. Ezen még annyit lehetne finomítani, ha a trv-k zárva vannak, akkor a keringetési idő lehet kevesebb, de ez így is 5 perc körül van csak.
    A spórolás és a komfort is jobb, vegyes kazánnál ha 60-80 fokos vízzel túltolja a fűtést az egészen kellemetlen és egy szezon alatt nem is ócó.

    Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html

  • frescho

    addikt

    Szép! Jó látni, ha valaki értelmes dologra fordítja a tudását és/vagy más területen is képzi kicsit magát.

    Egy apró tipp: Több adatból még jobban lehet optimalizálni, kb. 10%-ot sikerült spórolni az elmenő/visszajövő hőmérsékletek mérésével és a vezérlés állítgatásával. Például kiszámolható, hogy szabályozási rendszernek mekkora a tehetetlensége. Ezután már időben le lehet kapcsolni a rendzsert, hogy a túllövéseket elkerüljük. Vagy lehet játszani a gáz/elektromos fűtésű bojlerrel, hogy éjszakai árammal reggelre legyen teljesen felfűtve, késő éjszaka meg eshet a hőmérséklet, úgysem használja senki. A gáz meg csak rásegít napközben.

    https://frescho.hu

  • ViZion

    félisten

    LOGOUT blog

    válasz Postas99 #3 üzenetére

    :R Köszi, hogy benéztél.
    Ez az olyan hobbistáknak való, akik nem akarják/tudják megírni Arduino ide-ben kvázi 0-ról a kódot. Itt vannak összeállítások, attól függően, h kb. mit szeretnél. WebUI-n csak hozzáadod a HW-t, rulesben megírod, h mit csináljon és kész. Sokkal kevesebb a hibalehetőség így és tényleg elérhető bárkinek -igaz angol tudás nem árt hozzá.

    Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html

  • Postas99

    senior tag

    Úr istam!!

    Ez nagyon király!! Még sosem hallottam erről az ESPEasy rendszerről.
    Teljesen vakon vagyok. Nagyon köszönöm az írásodat. Le a kalappal!! :R :R :R

  • ViZion

    félisten

    LOGOUT blog

    válasz gabyka #1 üzenetére

    Köszönöm :R
    ööö... ez hagyományos kazán, 3 hétig nem tart a puffer, pedig szeretném :D
    Távolról rá tudok nézni a hőfokokra, ha nagyon akarom, akkor tudok fűtést indítani/megállítani is távolról. De az a cél, h az ESP döntsön.

    Ohh, értem, ha az ESP meghal? Akkor semmi, ha meghalnak, akkor annyi. Mivel elég sok dolog fut rajta, így olyan nincs, h bekattan és fűt. Volt, aminek csak egy pinje halt meg, volt, ami teljes kuka lett, nem bootol, nem tudtam resetelni, stb. De a ca. 20 db-ból ennyi a veszteség, asszem a halottat is én nyírtam ki, mintha kapott volna 5 V-t a 3.3 helyett :o A pin halál részben voltam én, egy szenzor vezeték együtt futott a 230 V kanóccal... egy ideig. Ilyesmikre jobban figyelek, a puffer oldalára került, távol minden mástól, viszonylag nyugis helyre, jó dobozba, opto leválasztással a termosztát és az SSR felé, egy jobbfajta telefon táppal.

    Bízom a kis bigyóban, 2022 ősz óta üzemel, nyáron is! Nyáron csak számolja a ciklusokat, küldi az adatokat és néha megjáratja a keringetőt.

    Amúgy kb. fél óra lehet a csere, abból 15 perc megkeresni, h hol van még modulom, ami nincs beforrasztva valamibe. Okosotthon egy régebbi PC-n Proxmox alatt virtuális gépen, vannak mentések (PVE-ről is). Ha alaplap vagy proci meghal, az probléma, más amúgy van tartalék is szerintem.

    Nálam amolyan hibrid rendszer van, bojlert pl. Shelly vezérli, az működik a szerver nélkül is (távoli elérést is meghagytam), ahogy a kapcsolók, TRV-k meg más bármik is. A szerver kiesése az "okosságot" venné ki a rendszerből, vagyis az egymásra hatások szűnnének meg (és a karácsonyi dekor világítás nem kapcsolna fel pl.), de nem állna meg az élet.

    Hold on, trying to give a fuck... Nope, not Happening • Powered by Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy ¤¤¤ Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/vizion/index.html

  • gabyka

    aktív tag

    Elegáns, precíz megoldás, gratula hozzá. :R

    Elméleti kérdés: mi történik, ha a mikrovezérlő átmegy -10 fokban "megrohadtamhaddmenjenfullbaminden" üzemmódba és Te pl. 5000km távolságban vagy 3 hétig? Van B terv?
    Én is gondolkodtam okosotthonos megoldásokban. Oké, én értem mi honnan hová, miért és mikor megy., hisz én alkotom/ttam a rendszert. De ha elüt a villamos holnap reggel, akkor a műszaki analfabéta család megfagy vagy a lámpát nem tudja felkapcsolni ha megrohad valami vezérlés?
    Voltam anno egy családiházban, az alagsorban egy rackszekrényben volt minden kapcsolónak, konnektornak, lámpának és bizbasznak a vezérlése. Kérdeztem a tulajt, mi lesz, ha megkotlik a plc...nézett bután... :U aztán már én is Rá.
    Nyilván, nem lesz baj...ez a poszt sem erről szól. :R Nekem is okostermosztát vezérel, de van otthon okosasszony hozzá, tudja mit/kit kell vegzálni, ha fázik (olyankor nagyon morcos, hisz nőből van) és nélkülem nem tudja megoldani a mindennapi betevő meleget (hú de magas labda...) :)

Még van hozzászólás! Tovább