2024. április 26., péntek

Gyorskeresés

Útvonal

Cikkek » Modding rovat

Keringető szivattyú vezérlése ESP8266-tal

Feladat: termosztát jelét és a vízhőfokot figyelni, majd a kapott adatok alapján a keringetőt vezérelni.

[ ÚJ TESZT ]

Rules

Akkor maga a program, ami összefogja és működteti a korábban leírtakat:

on System#Boot do
GPIO,2,1 //board led ki
event,setup //alap beállítások betöltése
endon

on setup do
TaskValueSet 1,1,31 //minimum vízhőfok
TaskValueSet 1,2,90 //túlfűtés
TaskValueSet 2,1,330 //keringető idő 240-600
TaskValueSet 2,2,500 //keringetés szünet
TaskValueSet 2,3,30 //termosztát figyelés
TimerSet,2,8 //Start loop
Let,2,2 //alap a watch loop
endon

on Rules#Timer=1 do //pause, fűtés után szünet, akkor is, ha a termosztát még BE állásban van
oled,7,1,Status: Pause //kijelző kiíratás
gpio,15,0 //SSR kikapcs
TaskValueSet 4,1,0 //szivattyú státusz frissítés a dummy változóban
Let,1,[deftime#keringp] //változó 1 értéke a pause időtartama lesz
Let,2,2 //lejárat után a timer 2-vel folytassa
TimerSet,3,1 //visszaszámlálót indít
endon

on Rules#Timer=2 do //watch loop
if [owt#temperature1]>[deftemp#tempmax] //ha a puffer hő magasabb, mint a dummy változóban a max temp, akkor heatover event indul
event,heatover
elseif [termo#state]=1 //ha a temosztát bekapcsolt, heat on event indul
event,heaton
else
event,heatoff //ha a fentiek közül semmi, akkor a heat off event jön
endif
endon

On Rules#Timer=3 do //timer loop, ez a visszaszámlálás, majd innen küldi tovább ha lejárt
if [VAR#1]<2 //LET változó értékét kéri le, ha 2-nél kevesebb, akkor...
Let,1,0 //...akkor az értéke 0 lesz
TimerSet,3,0 //valamint az időzítő loopot is megállítja
TimerSet,[VAR#2],1 //a LET-ben másodikként tárolt változónak megfelelő időzítőt indítja
else
Let,1,[VAR#1]-2 //ha az időzítő nem járt le, akkor 2 sec-el csökkenti
TaskValueSet 4,2,[VAR#1] //hátralévő időt dummy-ba írja (kijelzőn leolvasható így)
TimerSet,3,2 //2 sec és újraindul ez a loop
endif
endon

on termo#state=0 do //ha a termosztát lekapcsol, akkor...
if [owt#temperature1]<[deftemp#tempmax] //ha a puffer max hő alatt van
TimerSet,1,3 //egyes időzítővel folytat
else
TimerSet,2,1 //ha más, akkor 2-es időzítőre vált, azaz túl forró puffernél a termosztát nem kapcsolja le a keringetést, ez egy kis extra biztonság.
endif
endon

on heaton do //fűtés
if [owt#temperature1]>[deftemp#tempmin] //ha a puffer hő a minimum felett van
oled,7,1,Status: Heating! //kijelzőre ír
gpio,15,1 //SSR be
TaskValueSet 4,1,1 //dummyba menti a szivattyú státuszt
Let,1,[deftime#kering] //változó 1 értéke a keringetési idő lesz
Let,2,1 //változó 2-be mentjük, hogy a lejárt keringetés után a timer 1-be induljon
TimerSet,3,1 //1 sec és indul a visszaszámláló
else
event,heatoff //ha a fentiek nem, akkor heat off event
endif
endon

on heatover do //túl meleg a pufferben a víz, keringetést bekapcsolja 10 percre
oled,7,1,Status: OVERHEAT! //OLED kiíratás
gpio,15,1 //ez a pin kapcsolja be az SSR relét
TaskValueSet 4,1,1 //szivattyú állapotjelzőt BE állásra váltja
Let,1,600 //LET első változó értékét 600-ra állítja
Let,2,2 //LET második változó értékét 2-re állítja
TimerSet,3,1 //timer 3 indul
endon

on heatoff do //heat off esetén
oled,7,1,Status: Watch //kijelző kiíratás, figyelés, watchdog
gpio,15,0 //SSR kikapcs
TaskValueSet 4,1,0 //szivattyú státusz a dummyba írva
TimerSet,2,[deftime#watch] //timer 2 indul a megadott watchdog idő letelte után
endon

Röviden a mi-micsoda:
on System#Boot do az "on akármi do" egy action, itt bootoláskor történjen ez...
Az alap értékeket a boot helyett külön a setup részbe írtam, így ha változtatni szeretnék, akkor átírom rules-ban, mentem, majd a tools-ban egy event,setup parancsra ezeket frissíti a dummy változókban és elindul a watchdog.

TaskValueSet 1,1,29 : devices-nél az első device első értékét állítja 29-re
TimerSet 2,8: a kettes időzítő értékét 8 sec-re állítja. 8 sec után az on Rules#Timer=2 do kerül végrehajtásra. Tulajdonképpen elindít egy watchdog-ot, ami figyeli a hőfokot, termosztátot.
Igyekeztem mindent kommentelni, ezekre IRL nincs szükség, de így követhetőbb, hogy mi mit csinál.

Huh, hirtelen ennyi. Rules-ből is rengeteg változat volt, volt thingspeak, most Home Assistant integrálás, megannyi kisebb-nagyobb alakítás. Volt több időzítős, nem visszaszámolós, stb...
Ez a verzió egyelőre a legjobb, a többszörös időzítések egy visszaszámlálóba írva, az alap értékeket az elején dummy-ba mentve nem kell az egész rules-t áttúrni, ha változtatni akarok. November óta üzemel, december közepén volt a teljes HW átszabás, ünnepek alatt készült el ez a rules verzió.

Rekord uptime kb. 33nap, a restart oka a vihar miatti áramkimaradás.
Előnye, hogy független, akkor is teszi a dolgát, amikor nincs net, vagy helyi WiFi. Az integrációval szeretném kicsit jobban vezérelni, de meghagyva a függetlenségét is. Kicsit későn jutott eszembe, hogy ide is kirakjam, biztosan maradtak hiányosságok, jelezzétek és pótlom.

Köszönöm, hogy benéztél.

A cikk még nem ért véget, kérlek, lapozz!

Előzmények

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.