Meine Bewässerung habe ich auch mit dem Sonoff 4ch Pro umgesetzt. Allerdings habe ich ihn mit EspEasy geflasht.
Als Vorteil Empfinde ich die nicht auf bestimmte Devices zugeschnittene Oberfläche. Man hat immer das Gleiche und hate viele Details vor Augen.
Die Mqtt Verbindung arbeitet ähnlich zu Tasmota, so sehe ich das auch alles in Openhab.
So hab ich die Devices angelegt. Dazu habe ich Rules hinterlegt, mit denen sich über die Buttons die Relais schalten lassen. Der erste Block ist entstanden, nachdem mir meine Kinder nach dem Aufräumen des Kellers und einem damit verbundenen Stromausfall des ESP mitteilten, das sie im Garten nass geworden sind. Der erste Block sorgt dafür, das die Relais beim Einschalten ausgeschaltet werden.
Code: Alles auswählen
on System#Boot do
gpio,12,0
gpio,5,0
gpio,4,0
gpio,15,0
endon
on But_1#But do
if [Relay_1#stat]=1
gpio,12,0
else
gpio,12,1
endif
endon
on But_2#But do
if [Relay_2#stat]=1
gpio,5,0
else
gpio,5,1
endif
endon
on But_3#But do
if [Relay_3#stat]=1
gpio,4,0
else
gpio,4,1
endif
endon
on But_4#But do
if [Relay_4#stat]=1
gpio,15,0
else
gpio,15,1
endif
endon
Mir war aber nicht wohl dabei, dass die Verbindung zum Openhab für die Beendigung das Bewässerns bestehen muss. So hab ich einen Event (Rule) auf dem Esp hinterlegt:
Code: Alles auswählen
On startwater30 do
gpio,12,1 //start watering (open valve)
timerSet,1,1800 //timer 1 set for 30 minutes
endon
On stopwatering do
timerSet,1,0 //timer 1 set to halt, used to stop watering before the timer ends!
gpio,12,0 //stop watering (close valve)
endon
On Rules#Timer=1 do
gpio,12,0 //stop watering (close valve)
endOn
On startwatersec do
gpio,12,1 //start watering (open valve)
timerSet,1,%eventvalue%
endOn
Der erste Codeblock ist noch aus den ersten Versuchen der zweite Block ist für ein manuelles Beenden des Bewässerns inkl. Reset des Timers. Der dritte Block ist zum Beenden der Bewässerung über den Timer. Und der letzte ist der Spannende: Die Timerzeit wird als Variable über folgenden http request an den ESP übergeben:
Code: Alles auswählen
http://IP_DES_ESP/control?cmd=event,startwatersec=1800
1800 ist also %eventvalue% und startet den Timer somit für 30 Minuten. Damit aber noch nicht genug: Über eine Regel in Openhab habe ich mir einen Faktor hinterlegt, der eine auf der Oberfläche ausgewählte Literzahl (240 Sek für einen Liter/m² bruscht die Bewässerung des 120m² grossen Vorgartens) direkt in Sekunden umrechnet. Eine weitere Regel überprüft um 04:30, ob der Schalter für die Bewässerung eingeschltet ist und startet ggf. die Bewässerung für die in Sekunden angeforderte Literzahl und setzt danach die Bewässerungsanforderung wieder auf off. So kann ich mir den Zustand des Gartens und die Wettervorhersage ansehen und die Bewässerung "programmieren".
Code: Alles auswählen
//Bewässerung Vorgarten um 04:30 für entsprechenden Zeitraum starten
rule "Bew_Vorg_auto"
when
Time cron "0 30 4 * * ?" // immer 4. Stunde 30. Minute
then
if (SC_Bew_Vorg_ON.state == ON) {
sendHttpGetRequest("http://IP_DES_ESP/control?cmd=event,startwatersec=" + Bew_Vorg_Dauer.state)
SC_Bew_Vorg_ON.sendCommand(OFF)
}
end
//Bewässerung Vorgarten umrechnen und Zeit in Sekunden updaten
rule "Bew_Vorg_Dauer"
when
Item SC_Bew_Vorg_Lit changed
then
Bew_Vorg_Dauer.postUpdate((SC_Bew_Vorg_Lit.state as DecimalType) * 240)
end
Sollte es also zu einem Kommunikationsausfall kommen, arbeitet der Sonoff 4ch pro die Bewässerung selbstständig ab. Kommt es zu einem Stromausfall wird der Sonoff abgeschossen, aber auch die Stromversorgung der Ventile, die damit schliessen. So schlafe ich dann doch etwas ruhiger. Die Lösung habe ich hier gepostet um vielleicht dem einen oder anderen, vielleicht auch in Teilen eine Anregung mitzugeben.
Mein nächstetes Projekt sollte eine Automatisierung sein, dafür musste ich aber erst meine Wetterstation KS300 umbauen, um die Datenerfassung verlässlicher zu machen. Darüber schreibe ich in einem eigenen Beitrag und werde den dann hier verlinken. Die Regenmenge der letzten 48 Std. wird derzeit schon erfasst, so dass ich über Regenwarscheinlichkeit, Regenmenge der letzten zwei Tage und aktuellem Regenstatus eine Regel zur Bewässerung basteln kann, die automatisch die Bewässerungszeit ermittelt und an der ESP übergibt. Den String mit der Variable habe ich leider nicht mit Mqtt umsetzen können - da kenne ich mich noch zu wenig aus. Aber die Rückmeldung über die Ventile kommt nach dem Absetzten des http Requests über Mqtt zurück. das klappt sehr gut und hat mir an dieser Stelle erstmal genügt, aber vielleicht hat da ja jemand einen Vorschlag.
Anregungen und Fragen jederzeit gern.
VG Fossi