Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] Wie den Counter unterbrechen

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    [Frage] Wie den Counter unterbrechen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Peoples
      Peoples last edited by

      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

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        @peoples:

        Ich möchte durch einen "Off-Button" das ganze stoppen und meinen Counter anhalten und auf 0 setzen. `
        Das erste Skript (Zeitvorwahl) in http://forum.iobroker.net/viewtopic.php?f=21&t=5067&start=20#p77980 zeigt, wie es geht.

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        628
        Online

        32.0k
        Users

        80.5k
        Topics

        1.3m
        Posts

        2
        2
        482
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo