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 [gelöst]

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

Gartenbewässerung [gelöst]

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 3 Kommentatoren 995 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.
  • S Offline
    S Offline
    Snake1024
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      stephan61
      schrieb am zuletzt editiert von
      #2

      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 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        Snake1024
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @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.

          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
          • S Offline
            S Offline
            Snake1024
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @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 
              
              

              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
              • S Offline
                S Offline
                Snake1024
                schrieb am zuletzt editiert von
                #7

                @paul53: `

                Super, funktioniert einwandfrei. Vielen Dank!!

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

                  @Snake1024:

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

                  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
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  766

                  Online

                  32.5k

                  Benutzer

                  81.7k

                  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