NEWS
Gartenbewässerung [gelöst]
-
Hallo zusammen,
ich teste nun seit 2 Tagen mit einem Script und bekomme es nicht ans laufen.
Ich habe 3 Wasserkreisläufe und möchte diese nacheinander einschalten. meine "Zeitvorgabe" entscheidet hierbei die länge der einzelnen Bewässerung.
Ich habe mein Problem "markiert mit #########Problem….." . Es funktioniert einfach nicht, dass meine Variable "Zeitvorgabe601000*X" ausgeführt wird.
Beispiel: setStateDelayed("hm-rpc.0.LEQ0876462.3.STATE", false,(Zeitvorgabe6010002));***
Aktuell geht nur die Pumpe an, sobald ich das "ausschalten" in dem Script aktiviere. Es scheint so, als würde er das "delay" nicht korrekt ausführen.
Müsste er das nicht so nehmen?
Frage: Wofür ist eigentlich "OnTime"? Ich dachte, damit kann ich die Dauer für den Zustand "EIN" steuern? Funktioniert aber auch alles nicht.
Kann mir jemand helfen?
//Timer ## Automatische Bewässerung schedule('*/5 * * * *', Zeitschaltung); // jede Minute function Zeitschaltung() { var temp = getState('hm-rpc.1.000ED709AED24D.1.ACTUAL_TEMPERATURE').val ; // Temperatur var timer = getState('javascript.0.Bewässerung.Garten_timer').val ; // Timer/Automatic ON/OFF var bewheute = getState('javascript.0.Bewässerung.Garten_bewheute').val ; // Bewässerung Heute var tag = compareTime('06:00', '06:05', 'between'); if((tag && timer===true && bwheute===true)) { setState("javascript.0.Bewässerung.Garten_AnAus", true); } else setState("javascript.0.Bewässerung.Garten_AnAus", false); } //################### //# Steuerung Bewässerung //################### on({id: "javascript.0.Bewässerung.Garten_AnAus", change: "ne", val: true}, function() { // Bewaesserung ein start(); }); on({id: "javascript.0.Bewässerung.Garten_AnAus", change: "ne", val: false}, function() { // Bewaesserung aus stop(); }); //################### //# START Bewässerung //################### function start() { var Zeitvorgabe = getState('javascript.0.Bewässerung.Garten_zeitvorgabe').val ; // Zeit auswählen //############################################################# // Bewässerung zunächst ausschalten beim erstmaligen Skriptstart // um im Falle eines Reboots den zuvor laufenden Bewässerungstimer auszuschalten (Not-Aus), // da er nach Reboot den zuvor gesetzten Ausschalttrigger nicht mehr ausführen kann setState("hm-rpc.1.000B9569A50B44.2.STATE", false); // Pumpe setState("hm-rpc.0.LEQ0876462.1.STATE", false); // Ventil (1) setState("hm-rpc.0.LEQ0876462.2.STATE", false); // Ventil (2) setState("hm-rpc.0.LEQ0876462.3.STATE", false); // Ventil (3) setState("hm-rpc.0.LEQ0876462.4.STATE", false); // Ventil (4) //############################################################# if (Zeitvorgabe === 0 || Zeitvorgabe === "") { Zeitvorgabe = 10; setState('javascript.0.Bewässerung.Gewächshaus_zeitvorgabe', Zeitvorgabe); // die Zahl vorgeben die Standard sein soll, wenn nichts ausgewählt wurde } //############################ //Berechnen der Ausschalttimer //############################ var ausschaltenalles=(Zeitvorgabe*60*1000*3+5000); //Alles AUS (Zeit + 5 Sekunden) var ausschaltenventil=(Zeitvorgabe*60*1000); var ausschaltenventil2=(Zeitvorgabe*60*1000*2); //Ventil 2 On_Time var ausschaltenventil3=(Zeitvorgabe*60*1000*3); //Ventil 1 On_Time setStateDelayed("javascript.0.Bewässerung.Garten_test", ausschaltenventil2,2000); setStateDelayed("hm-rpc.1.000B9569A50B44.2.STATE", true,500); // Pumpe ein setStateDelayed("hm-rpc.1.000B9569A50B44.2.ON_TIME", (Zeitvorgabe*60*3),500); // OnTime setzen Pumpe ## zur Sicherheit, falls Script abstürzt *3 (3 Ventile) #############################################################Problem //Kreis1 setStateDelayed("hm-rpc.0.LEQ0876462.3.STATE", true,1000); // Ventil (3) setStateDelayed("hm-rpc.0.LEQ0876462.3.ON_TIME", Zeitvorgabe*60,1000); // OnTime setzen Ventil (3) ## zur Sicherheit, falls Script abstürzt //Kreis2 setStateDelayed("hm-rpc.0.LEQ0876462.3.STATE", false,(Zeitvorgabe*60*1000*2)); setStateDelayed("hm-rpc.0.LEQ0876462.2.STATE", true,(Zeitvorgabe*60*1000*2)); // Ventil (2) setStateDelayed("hm-rpc.0.LEQ0876462.2.ON_TIME", Zeitvorgabe*60,ausschaltenventil2); // OnTime setzen Ventil (2) ## zur Sicherheit, falls Script abstürzt //KREIS3 setStateDelayed("hm-rpc.0.LEQ0876462.2.STATE", false,(Zeitvorgabe*60*1000*3)); setStateDelayed("hm-rpc.0.LEQ0876462.1.STATE", true,(Zeitvorgabe*60*1000*3)); // Ventil (1) setStateDelayed("hm-rpc.0.LEQ0876462.1.ON_TIME", Zeitvorgabe*60,ausschaltenventil3); // OnTime setzen Ventil (1) ## zur Sicherheit, falls Script abstürzt ######################################################################## var date = new Date(); date = formatDate(new Date(date), 'DD.MM. SS:mm'); setState("javascript.0.Bewässerung.Garten_last", date); setStateDelayed("javascript.0.Bewässerung.Garten_AnAus", false, ausschaltenalles); // nach x Min. ausschalten } //################### //# STOP Bewässerung //################### function stop() { // Ventile und Pumpen ausschalten setStateDelayed("hm-rpc.0.LEQ0876462.3.STATE", false,500); // Ventil (3) setStateDelayed("hm-rpc.0.LEQ0876462.2.STATE", false,700); // Ventil (2) setStateDelayed("hm-rpc.0.LEQ0876462.1.STATE", false,900); // Ventil (1) setStateDelayed("hm-rpc.1.000B9569A50B44.2.STATE", false,1000); // Grundwasserpumpe AUS setState("hm-rpc.1.000B9569A50B44.2.ON_TIME", 0); // OnTime setzen Ventil (4) ## zur Sicherheit, falls Script abstürzt setState("hm-rpc.0.LEQ0876462.1.ON_TIME", 0); // OnTime setzen Grundwasserpumpe ## zur Sicherheit, falls Script abstürzt setState("hm-rpc.0.LEQ0876462.2.ON_TIME", 0); setState("hm-rpc.0.LEQ0876462.3.ON_TIME", 0); }
-
Hallo snake 1024
du prüfts im script ob Zeit zw 6 Uhr und 6 Uhr 5 ist das heisst die Steuerung wird um 6 Uhr eingeschaltet und um 6 Uhr 5 wird Tag false und die Bewässerung wieder ausgeschaltet
Gruß Stephan
-
Hi,
genau, dies ist für die automatische Bewässerung und funktioniert einwandfrei.
Mir geht es um den Ablauf der Steuerung. Ich möchte das Kreislauf1 einschaltet, die Zeitvorgabe ausschaltet und dann Kreislauf 1 ausschaltet und Kreislauf2 einschaltet etc….
Dies funktioniert aktuell mit dem setstatedelay nicht korrekt.
-
Ich habe 3 Wasserkreisläufe und möchte diese nacheinander einschalten. meine "Zeitvorgabe" entscheidet hierbei die länge der einzelnen Bewässerung. `
Vorschlag: https://wiki.selfhtml.org/wiki/JavaScript/Window/setInterval zusammen mit einer (globalen) Zählvariablen. -
Ich bin jetzt nicht der große Programmierer, kannst du mir da mal ein Beispiel bauen?
So wie ich es versucht habe funktioniert es gar nicht oder wie`?
-
kannst du mir da mal ein Beispiel bauen? `
const idPumpe = 'hm-rpc.1.000B9569A50B44.2.STATE'; const idVent1 = 'hm-rpc.0.LEQ0876462.1.STATE'; const idVent2 = 'hm-rpc.0.LEQ0876462.2.STATE'; const idVent3 = 'hm-rpc.0.LEQ0876462.3.STATE'; const idTemp = 'hm-rpc.1.000ED709AED24D.1.ACTUAL_TEMPERATURE'; // Temperatur const idAuto = 'javascript.0.Bewässerung.Garten_timer'; // Timer/Automatic ON/OFF const idHeute = 'javascript.0.Bewässerung.Garten_bewheute'; // Bewässerung Heute const idDauer = 'javascript.0.Bewässerung.Garten_zeitvorgabe'; // in Minuten var timer = null; var cnt = 0; function Zeitschaltung() { var temp = getState(idTemp).val ; var auto = getState(idAuto).val ; var bewheute = getState(idHeute).val ; var dauer = getState(idDauer).val; if(auto && bewheute && dauer) { cnt = 0; setState(idVent1, true); setState(idPumpe, true); timer = setInterval(function() { cnt++; if(cnt == 1) { setState(idVent1, false); setState(idVent2, true); } if(cnt == 2) { setState(idVent2, false); setState(idVent3, true); } if(cnt >= 3) { setState(idPumpe, false); setState(idVent3, false); clearInterval(timer); } }, 60000 * dauer); } } schedule('0 6 * * *', Zeitschaltung); // täglich um 6:00 Uhr
-
@paul53:`Super, funktioniert einwandfrei. Vielen Dank!!
-
funktioniert einwandfrei. `
Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].