NEWS
[Frage] Wie den Counter unterbrechen
-
Hallo,
ich scheitere mal wieder und bräuchte eure Hilfe.
Ich möchte meinen Garten welcher in vier Zonen eingeteilt ist auf Knopfdruck jeweils X-Minuten bewässern. Wenn in Zone 1 die Zeit abgelaufen ist, wird automatisch nach Zone zwei gewechselt usw. nach Zone 4 wird der Durchlauf beendet. Die Restzeit wird in eine Variable geschrieben welche ich in Vis darstelle.
Bis hier hin funktioniert alles perfekt nun mein Problem. Ich möchte durch einen "Off-Button" das ganze stoppen und meinen Counter anhalten und auf 0 setzen.
Doch egal was ich mache er lässt sich zwar beeinflussen aber läuft einfach nach 0 wieder weiter.
Hier mal mein Script:
// ----------------------------------------------------------------------------- // allgemeine Variablen // ----------------------------------------------------------------------------- var logging = true; // Logging on/off var instanz = 'javascript.0'; instanz = instanz + '.'; // // var pfad0 = 'Automation.'; // Pfad innerhalb der Instanz - Status allgemien var pfad1 = 'Bewaesserung.'; var BwZeit = 20; // ----------------------------------------------------------------------------- // Objekte // ----------------------------------------------------------------------------- createState(pfad0 + 'Bewaesserungsautomatik', {def: 'false', type: 'boolean', name: 'Gießautomatik ein/aus'}); createState(pfad1 + 'Bewaesserungsautomatik_Schalter', {def: 'off', type: 'string', name: 'Schalter automatische Bewässerung start/stop'}); createState(pfad1 + 'Bewaesserung_countdown', {def: '0', type: 'number', name: 'Bewaesserung Counter'}); // ############################################################################ // # # // # Funktion zum automatischen Bewässern der 4 Gartenbereiche # // # # // ############################################################################ function bewaesserung_alle_bereiche(Ventil_Nr) { if(logging && Ventil_Nr != 5) log('Aktuell bewässerter Bereich:' + Ventil_Nr); if(getState("hm-rpc.0.OEQ0205754.1.STATE").val) setState("hm-rpc.0.OEQ0205754.1.STATE", false); // Ventil 1 if(getState("hm-rpc.0.OEQ0205754.2.STATE").val) setState("hm-rpc.0.OEQ0205754.2.STATE", false); // Ventil 2 if(getState("hm-rpc.0.OEQ0205754.3.STATE").val) setState("hm-rpc.0.OEQ0205754.3.STATE", false); // Ventil 3 if(getState("hm-rpc.0.OEQ0205754.4.STATE").val) setState("hm-rpc.0.OEQ0205754.4.STATE", false); // Ventil 4 if(!getState("hm-rpc.0.OEQ0205754.5.STATE").val) setState("hm-rpc.0.OEQ0205754.5.STATE", true); //Pumpe if(Ventil_Nr == 1){ if(!getState("hm-rpc.0.OEQ0205754.1.STATE").val) setState("hm-rpc.0.OEQ0205754.1.STATE", true); bewaesserung_counter(Ventil_Nr); } if(Ventil_Nr == 2){ if(!getState("hm-rpc.0.OEQ0205754.2.STATE").val) setState("hm-rpc.0.OEQ0205754.2.STATE", true); bewaesserung_counter(Ventil_Nr); } if(Ventil_Nr == 3){ if(!getState("hm-rpc.0.OEQ0205754.3.STATE").val) setState("hm-rpc.0.OEQ0205754.3.STATE", true); bewaesserung_counter(Ventil_Nr); } if(Ventil_Nr == 4){ if(!getState("hm-rpc.0.OEQ0205754.4.STATE").val) setState("hm-rpc.0.OEQ0205754.4.STATE", true); bewaesserung_counter(Ventil_Nr); } if(Ventil_Nr == 5){ if(getState("hm-rpc.0.OEQ0205754.5.STATE").val) setState("hm-rpc.0.OEQ0205754.5.STATE", false); //Pumpe log('Automatische Bewässerung fertig'); } } // ############################################################################ // # // # Counter der die Bewässerungszeit herunter zählt und sie in eine Variable schreibt // # // ############################################################################ function bewaesserung_counter(Ventil_Nr) { setTimeout(function () { var timer = getState(pfad1 + 'Bewaesserung_countdown').val || BwZeit; if (timer > 1) { setState(pfad1 + 'Bewaesserung_countdown', timer - 1); bewaesserung_counter(Ventil_Nr); log(timer); } else{ setState(pfad1 + 'Bewaesserung_countdown', 0); bewaesserung_alle_bereiche(Ventil_Nr + 1); } }, 1000); } // ############################################################################ // # // # Aufruf der Automatischen Bewässerung über Schedule // # // ############################################################################ on("javascript.0.Bewaesserung.Bewaesserungsautomatik_Schalter", function (dp) { if(dp.state.val == 'on'){ bewaesserung_alle_bereiche(1); log("Bewässerungsautomatik durch manu. Start"); } if(dp.state.val == 'off'){ //----------------------------------------------------------------------------------------------------- // // Hier müsste nun der Abbruch stehen jedoch bekomme ich es einfach nicht hin // //----------------------------------------------------------------------------------------------------- log("Bewässerungsautomatik durch manu. Stop"); } });Ich hoffe jemand kann mir mal einen "Schuppser" in die richtige Richtung geben
Peoples
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden