Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Gartenbewässerung 5min ein; 10min Pause; 4 mal wiederholen.

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    928

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Gartenbewässerung 5min ein; 10min Pause; 4 mal wiederholen.

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
12 Beiträge 3 Kommentatoren 1.8k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    ple
    schrieb am zuletzt editiert von
    #3

    Besten Dank erst mal.

    var interval = null;
    var count;
    
    on({id: "javascript.0.MyStates.Gartenbewässerung"/*Gartenbewässerung aktiv*/, val: true}, function () {
       log("Trigger ausgelöst");
       count = 5;
       interval = setInterval(function() {
           setState('hm-rpc.0.MEQ1671056.1.STATE"/*Garten_Steckdose:1.STATE*/', true);
           log("einschalten");
           setTimeOut( function() {
               log("ausschalten");
                setState('hm-rpc.0.MEQ1671056.1.STATE"/*Garten_Steckdose:1.STATE*/', false);
                count--;
                if(count === 0) clearInterval(interval);      
            }, 1 * 3600000);
        }, 1 * 3600000);
    });   
    

    bei dem Code komme nur bis log(ausgelöst)

    bis zum setState kommt er erst garnicht. Hast du vielleicht noch eine Idee??

    Gruß

    Intel Nuc + Proxmox

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #4

      Hallo ple,

      ich folgende unkonventionelle Lösung. Sie läuft (habs getestet).

      ! ```
      `var aktor_array = ['true','false','false','true','false','false','true','false','false'];
      var aufloesung = 5; // 5Sekunden // wenn Minuten dann noch * 60 oder gleich 300 eintragen
      var idAktor = "AKTOR_ID.STATE"; // Das Ventil, das das Wassser rauslässt
      var idTrigger= "javascript.0.MyStates.Gartenbewässerung"/Gartenbewässerung aktiv/;
      ! // ab hier nix mehr ändern
      on({id:idTrigger, change: 'ne'}, function (obj) {
      ! var i=0;
      if (obj.state.val) { // wenn trigger true
      // repeat with the interval of 5 seconds
      interval = setInterval(function(){
      //setState(idAktor, aktor_array[i]; // Aktor ein/ausschalten
      log(aktor_array[i]);
      i++;
      }, aufloesung * 1000);
      ! // Stoppen
      setTimeout(function() {
      clearInterval(interval);
      }, aktor_array.length * aufloesung * 1000);

      } else { // wenn trigger false
          clearInterval(interval);
      }
      

      });`

      ! Du trägst einen Aktor ein, der das Wassser steuert (ist noch auskommentiert).
      ! Du brauchst einen Trigger (eine ID, einen Taster oder ein Boolean-Objekt, das du vorher mit createStates() angelegt hast).
      ! Die Basis ist ein Array. Deine Zeiten waren 5min an und 10min aus. Ich habe das aufgeteilt in 5min an, 5min aus, nochmal 5min aus. Daraus ergibt sich bei einer Auflösung von 5min eine Abfolge von ein und aus, die ich im Array mit true und false abgebildet habe.
      ! Zum Test läuft das ganze jetzt im Sekundenzeitraum statt Minutenzeitraum. Du kannst es leicht auf Minuten umstellen.
      ! Zum Stoppen braucht e clearInterval. Entweder, wenn der Triger auf false geht oder wenn das Array abgearbeitet ist (hier, wenn die vorher errechnete Dauer zur Abarbeitung des Arrays verstrichen ist (setTimeout und Array-Länge mal Auflösung).
      ! Probier es einfach mal aus. :P
      ! Gruß
      ! Pix[/i][/i]

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #5

        @ple:

        bei dem Code komme nur bis log(ausgelöst) `
        Ach ja, setInterval verzögert sofort. Dann besser so:

        var interval = null;
        var count;
        
        function pulse() {
           setState('hm-rpc.0.MEQ1671056.1.STATE"/*Garten_Steckdose:1.STATE*/', true);
           log("einschalten");
           setTimeOut( function() {
                log("ausschalten");
                setState('hm-rpc.0.MEQ1671056.1.STATE"/*Garten_Steckdose:1.STATE*/', false);
                count--;
                if(count === 0) clearInterval(interval);     
            }, 1 * 3600000);
        }
        
        on({id: "javascript.0.MyStates.Gartenbewässerung"/*Gartenbewässerung aktiv*/, val: true}, function () {
           log("Trigger ausgelöst");
           count = 5;
           pulse();
           interval = setInterval(pulse, 2 * 3600000);
        });
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          ple
          schrieb am zuletzt editiert von
          #6

          @pix:

          Hallo ple,

          ich folgende unkonventionelle Lösung. Sie läuft (habs getestet).

          ! ```
          `var aktor_array = ['true','false','false','true','false','false','true','false','false'];
          var aufloesung = 5; // 5Sekunden // wenn Minuten dann noch * 60 oder gleich 300 eintragen
          var idAktor = "AKTOR_ID.STATE"; // Das Ventil, das das Wassser rauslässt
          var idTrigger= "javascript.0.MyStates.Gartenbewässerung"/Gartenbewässerung aktiv/;
          ! // ab hier nix mehr ändern
          on({id:idTrigger, change: 'ne'}, function (obj) {
          ! var i=0;
          if (obj.state.val) { // wenn trigger true
          // repeat with the interval of 5 seconds
          interval = setInterval(function(){
          //setState(idAktor, aktor_array[i]; // Aktor ein/ausschalten
          log(aktor_array[i]);
          i++;
          }, aufloesung * 1000);
          ! // Stoppen
          setTimeout(function() {
          clearInterval(interval);
          }, aktor_array.length * aufloesung * 1000);

          } else { // wenn trigger false
              clearInterval(interval);
          }
          

          });`

          ! Du trägst einen Aktor ein, der das Wassser steuert (ist noch auskommentiert).
          ! Du brauchst einen Trigger (eine ID, einen Taster oder ein Boolean-Objekt, das du vorher mit createStates() angelegt hast).
          ! Die Basis ist ein Array. Deine Zeiten waren 5min an und 10min aus. Ich habe das aufgeteilt in 5min an, 5min aus, nochmal 5min aus. Daraus ergibt sich bei einer Auflösung von 5min eine Abfolge von ein und aus, die ich im Array mit true und false abgebildet habe.
          ! Zum Test läuft das ganze jetzt im Sekundenzeitraum statt Minutenzeitraum. Du kannst es leicht auf Minuten umstellen.
          ! Zum Stoppen braucht e clearInterval. Entweder, wenn der Triger auf false geht oder wenn das Array abgearbeitet ist (hier, wenn die vorher errechnete Dauer zur Abarbeitung des Arrays verstrichen ist (setTimeout und Array-Länge mal Auflösung).
          ! Probier es einfach mal aus. :P
          ! Gruß
          ! Pix
          ! Da wäre ich im Leben nicht draufgekommen, mein Gott.
          ! Wie lange muss ich mich mit Java beschäftigen um das zu verstehen, geschweige den Syntax auswendig zu können.
          ! Ich werde es morgen mal testen, nachdem ich den Robi für Mähen installiert habe.
          ! Werde berichten.
          ! Gruß[/i][/i]
          ``` `

          Intel Nuc + Proxmox

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #7

            @pix:

            ich folgende unkonventionelle Lösung. Sie läuft (habs getestet). `
            Mit der Lösung kann nur ein Tastverhältnis Ein:Aus von 1:1 erzeugt werden.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #8

              Hallo,

              eigentlich war das nicht so schwer. Es dauert länger, eine verständliche Erklärung zu formulieren.

              Du kannst das Array natürlich auch ändern.

              true true false false true false true false

              = 10min an, 10min aus, 5min an, 5min aus, 5min an, 5min aus

              oder du ändert die auflösung auf zehn Minuten:

              true true true false true true false true false

              = 30min an, 10min aus, 20min an, 10min aus, 10min an, 10min aus

              Und unter das clearInterval() kannste du noch ein setState(idAktor, false) setzen, damit das Ventil auch wirklich zugeht, wenn Schluss ist oder vorher abgebrochen wird.

              Und falls du die Auflösung sehr klein wählst und true oder false sich häufig wiederholen, kannst du vor dem setState noch abfragen, ob der alte Zustand anders als der neue Zustand ist. Also nur einschalten, wenn aus und ausschalten, wenn gerade aus. Das spart Funk.

              Gute Nacht

              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              • P Offline
                P Offline
                ple
                schrieb am zuletzt editiert von
                #9

                @paul53:

                @ple:

                bei dem Code komme nur bis log(ausgelöst) `
                Ach ja, setInterval verzögert sofort. Dann besser so:

                var interval = null;
                var count;
                
                function pulse() {
                   setState('hm-rpc.0.MEQ1671056.1.STATE"/*Garten_Steckdose:1.STATE*/', true);
                   log("einschalten");
                   setTimeOut( function() {
                        log("ausschalten");
                        setState('hm-rpc.0.MEQ1671056.1.STATE"/*Garten_Steckdose:1.STATE*/', false);
                        count--;
                        if(count === 0) clearInterval(interval);     
                    }, 1 * 3600000);
                }
                 
                on({id: "javascript.0.MyStates.Gartenbewässerung"/*Gartenbewässerung aktiv*/, val: true}, function () {
                   log("Trigger ausgelöst");
                   count = 5;
                   pulse();
                   interval = setInterval(pulse, 2 * 3600000);
                });
                ```` `  
                

                Geht fast :-)

                javascript.0	2017-06-21 22:41:16.714	error	Error in callback: ReferenceError: setTimeOut is not defined
                javascript.0	2017-06-21 22:41:16.713	info	script.js.Programme.Gartenbewässerung3: einschalten
                javascript.0	2017-06-21 22:41:16.711	info	script.js.Programme.Gartenbewässerung3: Trigger ausgelöst
                javascript.0	2017-06-21 22:41:03.830	info	script.js.Programme.Gartenbewässerung3: registered 1 subscription and 0 schedules
                

                Ich muss mir auch mal bald Gedanken machen über einen Killoff oder so. Nicht das ich mal 15 qm Wasser auf dem Rasen verteile. :) im Moment ist das noch in der ccu mit 20 min.

                Intel Nuc + Proxmox

                1 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  pix
                  schrieb am zuletzt editiert von
                  #10

                  Hallo Paul,
                  @paul53:

                  @pix:

                  ich folgende unkonventionelle Lösung. Sie läuft (habs getestet). Mit der Lösung kann nur ein Tastverhältnis Ein:Aus von 1:1 erzeugt werden.
                  ich weiß nicht genau, was du meinst. Natürlich werden (bei Auflösung 5s) eben nur alle 5s Befehle (ein oder aus) gesendet.

                  Sieht bei mir im Log so aus. Achte auf die Zeiten:

                  22:40:42.830	[info]	javascript.2 Start javascript script.js.Test.Test_Intervall
                  22:40:42.830	[info]	javascript.2 script.js.Test.Test_Intervall: registered 1 subscription and 0 schedules
                  22:40:55.427	[info]	javascript.2 script.js.Test.Test_Intervall: true
                  22:41:00.429	[info]	javascript.2 script.js.Test.Test_Intervall: false
                  22:41:05.430	[info]	javascript.2 script.js.Test.Test_Intervall: false
                  22:41:10.437	[info]	javascript.2 script.js.Test.Test_Intervall: true
                  22:41:15.440	[info]	javascript.2 script.js.Test.Test_Intervall: false
                  22:41:20.444	[info]	javascript.2 script.js.Test.Test_Intervall: false
                  22:41:25.446	[info]	javascript.2 script.js.Test.Test_Intervall: true
                  22:41:30.449	[info]	javascript.2 script.js.Test.Test_Intervall: false
                  

                  Pix

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  1 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #11

                    @ple:

                    javascript.0 2017-06-21 22:41:16.714 error Error in callback: ReferenceError: setTimeOut is not defined `
                    Sorry: Schreibfehler. Richtig:

                       setTimeout( function() {
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      ple
                      schrieb am zuletzt editiert von
                      #12

                      Ok, jetzt gehts ohne Fehlermeldung, aber leider bleibt er durchgehend eingeschaltet.

                      Er läuft nicht durch das ausschalten.

                      Morgen mal weiterrücken:-(

                      Intel Nuc + Proxmox

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      521

                      Online

                      32.6k

                      Benutzer

                      82.2k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe