NEWS
Gartenbewässerung nach Feuchtigkeitsmessung
-
Hallo Zusammen,
ich nutze in ioBroker eine Verbindung zu openHab um dort das Garden-Binding abzufragen.
Zu einer fest definierten Uhrzeit soll den smarte Feuchtigkeitssensor überprüft werden. Sobald der einen bestimmten Wert unterschreitet soll das smarte Water Control sein Ventil öffnen und eine bestimmte Zeit Wasser laufen lassen und danach wieder schließen.
Soweit so gut.
chedule("55 15 * * *", function () { if (getState("openhab.0.items.gardena_sensor__humidity_humidity").val < 95) { for (var count = 0; count < 5; count++) { setState("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, true); setStateDelayed("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, false, 300000, false); } } }); //
Da ich einen manuellen gardena 6fachVerteiler hab (und 5 Kreisläufe dort angeschlossen) soll das Ventil 5x geöffnet werden und nach eine festgelegten Zeit wieder geschlossen. Dann gewartet, damit der Druckabfall im Kreislauf den 6-fach Verteiler umspringen lässt auf den nächsten Kreislauf.
Die definierte Uhrzeit scheint zu klappen
das Abfragen des Sensors wohl auch...im Besipeil 95% (müsste noch testen ob bei 5% das Teil immer aus bleibt)
Aber nachdem ersten Kreislauf ist Ende.....
Es wird immer nur 1x ein Kreislauf bewässert und nicht alle 5...
Wo ist da mein Denkfehler?Danke
Grüße
Dreamsleeper -
@Dreamsleeper sagte:
Wo ist da mein Denkfehler?
Du benötigst setInterval() und clearInterval() zusammen mit count, um nach einer bestimmten Zeit das nächste Ventil zu öffnen.
-
OK. Danke. Da ich ein Noob bin was Skripten angeht...
Den Intervall? in die wiederhole Sccleife?"var Intervall; schedule("55 15 * * *", function () { if (getState("openhab.0.items.gardena_sensor__humidity_humidity").val < 95) { Intervall = setInterval(function () { for (var count = 0; count < 5; count++) { setState("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, true); setStateDelayed("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, false, 300000, false); } (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); }, 1500000); } });
-
@Dreamsleeper sagte:
Intervall? in die wiederhole Sccleife?"
Nein, wie die Bezeichnung "Intervall" schon sagt, wiederholt es selbst. Es muss nur zum Ende (Zähler >= 5) gestoppt werden. In jedem Intervall den Zähler um 1 erhöhen.
var Intervall; var count; schedule("55 15 * * *", function () { if (getState("openhab.0.items.gardena_sensor__humidity_humidity").val < 95) { setState("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, true); setStateDelayed("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, false, 290000, false); count = 1; Intervall = setInterval(function () { setState("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, true); setStateDelayed("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, false, 290000, false); count++; if(count >= 5) clearInterval(Intervall); }, 300000); // alle 5 Minuten } });
-
@paul53
Vielen Dank! Ich habs mal angepasst auf 1755 laufen lassen. das funzt... alle Kreisläufe laufen 5min.
Ich werd mal schauen, dass ich jetzt noch die Zeit auf 20-30min anpasse.Das heisst ich muss
setStateDelayed("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, false, 290000, false);
erhöhen und dann
}, 300000); // alle 5 Minuten
auch? oder?
Damit hab ich die linke Seite meines Gartens abgedeckt...
jetzt werde ich noch die rechte Seite meines Gartens (da ist die gardena smarte Steckdose dran und 3 Kreisläufe) analog anpassen. -
@Dreamsleeper sagte in Gartenbewässerung nach Feuchtigkeitsmessung:
erhöhen und dann
}, 300000); // alle 5 Minutenauch? oder?
Ja.
-
So, ich habs jetzt mal so angepasst: (kaum verändert^^)
Water Control
var Intervall; var count; schedule("25 06 * * *", function () { if (getState("openhab.0.items.gardena_sensor__humidity_humidity").val < 95) { setState("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, true); setStateDelayed("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, false, 1200000, false); count = 1; Intervall = setInterval(function () { setState("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, true); setStateDelayed("openhab.0.items.gardena_watering_computer__outlet_valve_open"/*Ventil geöffnet*/, false, 1200000, false); count++; if(count >= 5) clearInterval(Intervall); }, 1300000); // alle 5 Minuten } });
und Smarte Gardena Steckdose (mit Tauchpumpe angeschlossen)
var Intervall; var count; schedule("18 18 * * *", function () { if (getState("openhab.0.items.gardena_sensor__humidity_humidity").val < 95) { setState("opopenhab.0.items.gardena_power__power_power_timer"/*Ventil geöffnet*/, true); setStateDelayed("openhab.0.items.gardena_power__power_power_timer"/*Ventil geöffnet*/, false, 1200000, false); count = 1; Intervall = setInterval(function () { setState("openhab.0.items.gardena_power__power_power_timer"/*Ventil geöffnet*/, true); setStateDelayed("openhab.0.items.gardena_power__power_power_timer"/*Ventil geöffnet*/, false, 1200000, false); count++; if(count >= 3) clearInterval(Intervall); }, 1300000); // alle 5 Minuten } });
Ich muss das zwar erst noch alles verstehen, aber hoffe das läuft.....
und ja die Feuchtigkeit setz ich auf 40% sobald das Timing passt
-
@Dreamsleeper
Wenn man setStateDelayed() für die Pause zwischen Ventil schließen und wieder öffnen verwendet, muss die Zyklusdauer nur an einer Stelle berücksichtigt werden.const idVentil = "openhab.0.items.gardena_power__power_power_timer"/*Ventil geöffnet*/; var Intervall; var count; schedule("18 18 * * *", function () { if (getState("openhab.0.items.gardena_sensor__humidity_humidity").val < 95) { setState(idVentil, true); count = 1; Intervall = setInterval(function () { setState(idVentil, false); count++; if(count >= 3) clearInterval(Intervall); else setStateDelayed(idVentil, true, 10000); // verzögert wieder öffnen }, 1200000); // alle 20 Minuten } });
-
Danke...
die smarte Steckdose will noch nicht.... der Befehl ist falsch..... muss ich nochmal ran.
Das andere bau ich ein.Also Water Control läuft.... die smarte gardena Steckdose will nicht laufen....
EDIT 3:
MitsetState("openhab.0.items.gardena_power__power_power_timer"/*Ventil geöffnet*/, 120000); setStateDelayed("openhab.0.items.gardena_power__power_power_timer"/*Ventil geöffnet*/, false, 0, false);
dem ersten setState läuft die Steckdose.... ob die mit dem zweiten ausgeht oder von alleine kein Plan... ich mach grad Try & Error