Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gartenbewässerung [gelöst]

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Gartenbewässerung [gelöst]

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

      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);  
      }
      
      1 Reply Last reply Reply Quote 0
      • S
        stephan61 last edited by

        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

        1 Reply Last reply Reply Quote 0
        • S
          Snake1024 last edited by

          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.

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

            @Snake1024:

            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.

            1 Reply Last reply Reply Quote 0
            • S
              Snake1024 last edited by

              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`?

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

                @Snake1024:

                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 
                
                
                1 Reply Last reply Reply Quote 0
                • S
                  Snake1024 last edited by

                  @paul53: `

                  Super, funktioniert einwandfrei. Vielen Dank!!

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

                    @Snake1024:

                    funktioniert einwandfrei. `
                    Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    833
                    Online

                    31.8k
                    Users

                    79.9k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    856
                    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