WLAN-Steckdose mit Temperaturfühler

Für die Warmwasservervorgung ist eine Umwälzpumpe installiert. Damit diese nicht permanent in Betrieb ist, war eine Zeitschaltuhr installiert. Weil ich aber nur sporadisch Warmwasser entnehmen will, ist ein zeitgesteuerter Betrieb nicht sinnvoll. Daher habe ich das Schaltmodul mit Temperaturfühler entwickelt. Hier wird die Temperatur am Warmwasservorlauf gemessen. Wenn jetzt Warmwasser entnommen wird, erwärmt sich die Messstelle relativ schnell und die Umwälzpumpe wird für 2 Minuten eingeschaltet. Damit ist sichergestellt, das die Rohrleitung mit Warmwasser gefüllt ist. Wenn ich also Warmwasser benötige, öffne ich kurz den Hahn und nach ca. 1 Minute ist auch das warme Wasser vor Ort. Die zweite Möglichkeit habe ich durch das WLAN, da kann ich per App diesen Vorgang direkt anstoßen.

Bei dieser Variante verwende ich zur Stromversorgung ein fertiges Modul ( 230VAC –> 3.3V ) aus China. Weil kein Relais für 3.3V zur Verfügung stand, ist ein Boostkonverter auf 5V verwendet worden. Als Software ist hier TASMOTA installiert. Diese ist frei anpassbar an verschiedene Hardware und per Script lassen viele Mess-, Steuer- und Regelungsaufgaben lösen.

Code für Script:

Heizung Zirkulationspumpe:

rule3 1			<-- Rule3 aktiv
var2 100   		<-- Startwert, damit beim Einschalten Pumpe aus bleibt
BlinkCount 0		<-- Blinken, bis wieder ausgeschaltet
BlinkTime 2		<-- 0.4s periodendauer
Teleperiod 10 		<-- auf min. Wert
RuleTimer1 14		<-- mehr wie Teleperiod
mem4 0.3		<-- Temperaturdifferenz pro Messzyklus Configuration: backlog SwitchMode1 3; SetOption26 1; SetOption0 0; poweronstate 0; rule3 1; rule3 4, var2 100; Teleperiod 10; RuleTimer1 14; mem4 0.3 RULE: rule3 on Switch1#State do event tg1=%mem1% endon on event#tg1=0 do backlog mem 1; power2 1 endon --> on event#tg1=1 do backlog mem 0; power2 0 endon 
--> on tele-DS18S20#temperature do backlog ruletimer1 14; var3 %var2%; var2 %value%; event Zirk_test=%value%; add2 %mem4% endon 
--> on event#Zirk_test>%var3% do power1 %mem1% endon on rules#timer=1 do power2 3 endon on power#state1=1 do ruletimer2 120 endon 
--> on rules#timer=2 do power1 0 endon

on Switch1#State do event tg1=%mem1% endon		<-- bei Tastendruck event toggeln_mem1
on event#tg1=0 do backlog mem 1; power2 1 endon		<-- wenn mem1 = 0 -> mem1 = 1 , blaue LED an
on event#tg1=1 do backlog mem 0; power2 0 endon		<-- wenn mem1 = 1 -> mem1 = 0 , blaue LED aus
on tele-DS18S20#temperature do backlog			<-- teleperiod -> %value% = Temperaturwert
ruletimer1 14;						<-- Timer1 starten (für Erkennung Sensorfehler)
var3 %var2%;						<-- alten Wert sichern 
var2 %value%;   					<-- aktuellen Wert merken
event Zirk_test=%value%;				<-- event ausführen mit aktuellem Temperaturwert
add2 %mem4%	    					<-- Offset dazu endon on event Zirk_test>%var3%				<-- wenn wert > var3(vorheriger wert + %mem4%)
do power1 %mem1% endon					<-- relais ein , falls blaue LED an ist
on rule#timer=1 do power2 3 endon			<-- wenn timeout Sensor -> blaue LED blinken
on power#state1=1 do ruletimer2 120 endon		<-- wenn Relais ein -> timer2 starten (120s)
on rules#timer=2 do power1 0 endon			<-- wenn timer2 -> Relais aus
on event#Zirk_test>%var3% do power1 %mem1% endon   	<-- wenn aktuelle Temperatur mindestens %mem4% mehr wie vor 10 Sekunden, dann Pumpe an

Code-Sprache: PHP (php)

Schreibe einen Kommentar