Hirdetés

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.

Frissítés

Itt a nyár, kicsit megkésve, de egy alap szivattyúvédelmet is kapott, ami X db watch loop után bekapcsolja a szivattyút. Ezzel már kb. a beprogramozható mennyiséget el is értem, így a megjegyzéseken kicsit rövidítettem. Lehetne még finomítani a programon, vagy átrakni Home Assistantba a vezérlést, de így nyugodtabb vagyok, hogy nálam az okosotthon az ilyen hibrid rendszer, sok okos relének, kapcsolónak -ahogy ennek az ESP-nek is- megvan a saját programja, ami akkor is működik, ha a HA valamiért nem. Lehet, h túlaggódom. Másrészt mindig visszatér az egyik kolléga idézete, hogy olyan megoldások kellenek, amik nélkülünk is üzemképesek. Ha elütne a villamos vagy ilyesmi.

Devices-be a 2. dummy-hoz adtam még egy protect értéket, az üres loop-ok számolására pedig a 4. dummy kapott egy plusz dummy sort. A frissített rules:

on System#Boot do
GPIO,2,1 //led ki
event,setup
endon

on setup do
TaskValueSet 1,1,31 //min víz
TaskValueSet 1,2,89 //túlfűt
TaskValueSet 2,1,330 //kering sec
TaskValueSet 2,2,500 //kering szünet
TaskValueSet 2,3,30 //termosztát figyel
TaskValueSet 2,4,1200 //pump véd
Let,2,2 //alap watch
Let,3,0 //protect
TimerSet,2,8 //Start
endon

on Rules#Timer=1 do //pause
Publish %sysname%/status, '{"Heating":"off","Pause":"on","Watch":"off"}'
oled,7,1,Status: Pause
gpio,15,0
TaskValueSet 4,1,0
Let,1,[deftime#keringp]
Let,2,2
TimerSet,3,1
endon

on Rules#Timer=2 do //watch
if [owt#temperature1]>[deftemp#tempmax]
event,heatover
elseif [termo#state]=1
event,heaton
else
event,heatoff
endif
endon

On Rules#Timer=3 do //timer
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
if [owt#temperature1]<[deftemp#tempmax]
TimerSet,1,3
else
TimerSet,2,1
endif
endon

on heaton do
if [owt#temperature1]>[deftemp#tempmin]
Publish %sysname%/status, '{"Heating":"on","Pause":"off","Watch":"off"}'
oled,7,1,Status: Heating!
gpio,15,1
TaskValueSet 4,1,1
Let,1,[deftime#kering]
Let,2,1
Let,3,0
TimerSet,3,1
else
event,heatoff
endif
endon

on heatover do
oled,7,1,Status: OVERHEAT
gpio,15,1
TaskValueSet 4,1,1
Let,1,600
Let,2,2
Let,3,0
TimerSet,3,1
endon

on heatoff do
Publish %sysname%/status, '{"Heating":"off","Pause":"off","Watch":"on"}'
oled,7,1,Status: Watch
gpio,15,0
TaskValueSet 4,1,0
Let,3,[VAR#3]+1
TaskValueSet 4,3,[VAR#3]
if [var#3]=[deftime#protect]
Event,heatshort
else
TimerSet,2,[deftime#watch]
endif
endon

on heatshort do
Publish %sysname%/status, '{"Heating":"on","Pause":"off","Watch":"off"}'
oled,7,1,Status: Heating!
gpio,15,1
TaskValueSet 4,1,1
Let,1,[deftime#kering]
Let,2,2
Let,3,0
TimerSet,3,1
endon

A beillesztée után kell még a tools-ban egy event setup parancsot kiadni, így restart nélkül máris élnek az új szabályok.
Jó lett volna villantani egy hatalmas uptime-ot, de a hétvégi villanyszerelésnek ez (is) áldozatul esett :)

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

Hirdetés

Előzmények