Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] JSON-Tabelle mit js.script triggern

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

[gelöst] JSON-Tabelle mit js.script triggern

[gelöst] JSON-Tabelle mit js.script triggern

Scheduled Pinned Locked Moved Skripten / Logik
23 Posts 3 Posters 1.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    sveni_lee
    wrote on last edited by
    #3

    ich dachte mir schon, das ich mich etwas kompliziert ausgedrückt habe…

    Antwort: a)

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #4

      Da Du keine Angabe dazu gemacht hast, gehe ich davon aus, dass Du weißt, wie der JSON-String in das Script gelangt und er nur noch ausgewertet werden muss. Vielleicht so

      const idJSON = '...';  // Datenpunkt mit JSON-String ?
      const idBew = '...';  // Aktor Bewässerung
      
      var sched1 = null;
      var sched2 = null;
      var json = getState(idJSON).val;
      
      function zeiten() {
         var arr = JSON.parse(json);  // Array aus 7 Elementen (Wochentage)
         var now = new Date();
         var wd = now.getDay() - 1;  // Wochentag (0 = Montag)
         if(wd < 0) wd = 6;  // Sonntag
         var obj = arr[wd];
         if(sched1) clearSchedule(sched1);
         if(obj.Active == "x" && obj.Bew1_time) {  // ist Active ein String ?
            var t = obj.Bew1.split(':');
            sched1 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
               setState(idBew, true); 
               setStateDelayed(idBew, false, 60000 * obj.Bew1_time);
            });
         }
         if(sched2) clearSchedule(sched2);      
         if(obj.Active == "x" && obj.Bew2_time) {
            t = obj.Bew2.split(':');
            sched2 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
               setState(idBew, true); 
               setStateDelayed(idBew, false, 60000 * obj.Bew2_time);
            });
         }
      }       
      
      zeiten();  // Skriptstart
      
      schedule('1 0 * * *', zeiten);  // kurz nach Mitternacht
      
      // Änderung des JSON-Strings
      on(idJSON, function(dp) {
         json = dp.state.val;
         zeiten();
      });
      
      

      EDIT: korrigiert ) –> , und "true" --> "x"

      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 Reply Last reply
      0
      • S Offline
        S Offline
        sveni_lee
        wrote on last edited by
        #5

        @paul53:

        Da Du keine Angabe dazu gemacht hast, gehe ich davon aus, dass Du weißt, wie der JSON-String in das Script gelangt und er nur noch ausgewertet werden muss. Vielleicht so `

        der JSON-String wird vorher in in ein Objekt javascript.0.Bewässerung.Ventil_1.BewaesserungsPlan geschrieben.

        Kann also so ausgelesen werden, richtig?

        const idJSON = 'javascript.0.Bewässerung.Ventil_1.BewaesserungsPlan'
        const idBew = 'javascript.0.Bewässerung.Ventil1.LaufzeitVentil1'
        

        die idBew wäre schon die Laufzeit javascript.0.Bewässerung.Ventil1.LaufzeitVentil1

        also müsste das in deinem script dann wie folgt heißen, richtig?

           if(obj.Active == "true" && obj.Bew1_time) {  // ist Aktive ein String ?
              var t = obj.Bew1.split(':');
              sched1 = schedule(t[1] + ' ' + t[0] + ' * * *') function() {
                 setState(idBew, obj.Bew1_time); 
        
        

        das Abschalten wird dann über einen coundown erledigt…

        1 Reply Last reply
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #6

          @sveni_lee:

          der JSON-String wird vorher in in ein Objekt javascript.0.Bewässerung.Ventil_1.BewaesserungsPlan geschrieben.

          Kann also so ausgelesen werden, richtig? `
          Ja. Semikolon am Zeilenende nicht vergessen !
          @sveni_lee:

          also müsste das in deinem script dann wie folgt heißen, richtig?

                   setState(idBew, obj.Bew1_time);
          

          das Abschalten wird dann über einen coundown erledigt… `
          Ja, wenn der Countdown im Minutentakt erfolgt.

          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 Reply Last reply
          0
          • S Offline
            S Offline
            sveni_lee
            wrote on last edited by
            #7

            vielen Dank…

            werde ich dann mal testen 🙂

            1 Reply Last reply
            0
            • S Offline
              S Offline
              sveni_lee
              wrote on last edited by
              #8

              ich hab jetzt 2 Fehlermeldungen.

              Leider ist mein Javascript nicht besonders gut…

              ~~![](</s><URL url=)https://i.imgur.com/4YAGH7u.jpg" />

              ![](</s><URL url=)https://i.imgur.com/kQXMgy0.jpg" />~~

              1 Reply Last reply
              0
              • paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #9

                Sorry, vor function() muss ein Komma anstelle der schließenden Klammer.

                      sched1 = schedule(t[1] + ' ' + t[0] + ' * * *', 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 Reply Last reply
                0
                • S Offline
                  S Offline
                  sveni_lee
                  wrote on last edited by
                  #10

                  kein Problem,

                  Danke für die schnelle Hilfe…

                  Ich habe das Script jetzt mal getestet aber irgendwie wird die Bewässerungszeit nicht gesetzt.

                  Ich habe gestern abend einen Terminn für heute früh gesetzt, weil ich gesehen hatte das Du einen Schedule

                  täglich kurz nach 0:00Uhr gesetzt hast. Aber auch das hat nichts bewirkt.

                  ich hätte auch noch eine anderen JSON-String...

                  {"0":{"Bew1":{"wecken":false,"nachricht":0,"dauer":90,"stunde":5,"minute":25},"Bew2":{"wecken":false,"nachricht":"","dauer":0,"stunde":0,"minute":0},"Optionen":{"Active":true,"Option1":"","Option2":"","Option3":""}},"1":{"Bew1":{"wecken":true,"nachricht":1,"dauer":90,"stunde":5,"minute":30},"Bew2":{"wecken":true,"nachricht":"","dauer":0,"stunde":0,"minute":0},"Optionen":{"Active":true,"Option1":"","Option2":"","Option3":""}},"2":{"Bew1":{"wecken":true,"dauer":90,"nachricht":1,"stunde":5,"minute":"25"},"Bew2":{"wecken":true,"nachricht":"","dauer":0,"stunde":0,"minute":0},"Optionen":{"Active":true,"Option1":"","Option2":"","Option3":""}},"3":{"Bew1":{"wecken":true,"nachricht":0,"dauer":90,"stunde":5,"minute":25},"Bew2":{"wecken":true,"nachricht":"","dauer":0,"stunde":0,"minute":0},"Optionen":{"Active":true,"Option1":"","Option2":"","Option3":""}},"4":{"Bew1":{"wecken":true,"nachricht":0,"dauer":90,"stunde":5,"minute":25},"Bew2":{"wecken":true,"nachricht":"","dauer":0,"stunde":0,"minute":0},"Optionen":{"Active":true,"Option1":"","Option2":"","Option3":""}},"5":{"Bew1":{"wecken":false,"nachricht":2,"dauer":5,"stunde":23,"minute":10},"Bew2":{"wecken":false,"nachricht":"","dauer":0,"stunde":0,"minute":0},"Optionen":{"Active":true,"Option1":"","Option2":"","Option3":""}},"6":{"Bew1":{"wecken":true,"nachricht":2,"dauer":90,"stunde":9,"minute":0},"Bew2":{"wecken":true,"nachricht":"","dauer":0,"stunde":0,"minute":0},"Optionen":{"Active":true,"Option1":"","Option2":"","Option3":""}}}
                  

                  in diesem Fall sind keine Wochentage worhanden sondern nur 0-6…

                  eventuell ist der ja leichter zu händeln...

                  1 Reply Last reply
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #11

                    @sveni_lee:

                    Ich habe das Script jetzt mal getestet aber irgendwie wird die Bewässerungszeit nicht gesetzt. `
                    Dann füge mal Logs ein, um zu sehen, woran es hakt.

                    const idJSON = 'javascript.0.Bewässerung.Ventil_1.BewaesserungsPlan';
                    const idBew = 'javascript.0.Bewässerung.Ventil1.LaufzeitVentil1';
                    
                    var debug = true;
                    var sched1 = null;
                    var sched2 = null;
                    var json = getState(idJSON).val;
                    
                    function zeiten() {
                       var arr = JSON.parse(json);  // Array aus 7 Elementen (Wochentage)
                       var now = new Date();
                       var wd = now.getDay() - 1;  // Wochentag (0 = Montag)
                       if(wd < 0) wd = 6;  // Sonntag
                       if(debug) log('Wochentag: ' + wd);
                       var obj = arr[wd];
                       if(debug) log(JSON.stringify(obj));
                       if(sched1) clearSchedule(sched1);
                       if(debug) log('Active: ' + obj.Active + ' Typ: ' + typeof obj.Active);
                       if(debug) log('Bew1 um: ' + obj.Bew1 + ' für ' + obj.Bew1_time + ' Minuten ' + ' Typ: ' + typeof obj.Bew1_time);
                       if(obj.Active == "true" && obj.Bew1_time) {  // ist Active ein String ?
                          var t = obj.Bew1.split(':');
                          sched1 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                             setState(idBew, obj.Bew1_time);
                             if(debug) log('Bewässerung1 gestartet');
                          });
                       }
                       if(sched2) clearSchedule(sched2);     
                       if(obj.Active == "true" && obj.Bew2_time) {
                          t = obj.Bew2.split(':');
                          sched2 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                             setState(idBew, obj.Bew1_time);
                          });
                       }
                    }       
                    
                    zeiten();  // Skriptstart
                    
                    schedule('1 0 * * *', zeiten);  // kurz nach Mitternacht
                    
                    // Änderung des JSON-Strings
                    on(idJSON, function(dp) {
                       json = dp.state.val;
                       zeiten();
                    });
                    
                    

                    EDIT: Fehlendes + korrigiert

                    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 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      sveni_lee
                      wrote on last edited by
                      #12

                      so funktioniert jetzt… 😄

                      ein Fehler habe ich gefunden:

                      if(debug) log('Bew1 um: ' + obj.Bew1 + ' für ' + obj.Bew1_time ' Minuten ' + ' Typ: ' + typeof obj.Bew1_time);
                      

                      vor 'Minuten' fehlt ein +

                      und das eigendiche Problem war hier

                      if(obj.Active == "true" && obj.Bew1_time) {  // ist Active ein String ?
                      

                      und wenn richtig gelesen hätte wäre es mir auch aufgefallen. Active ist ein String also…

                      if(obj.Active == "x" && obj.Bew1_time) {  // ist Active ein String ?
                      

                      und schon klappt es 🙂

                      1 Reply Last reply
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #13

                        @sveni_lee:

                        if(obj.Active == "x" && obj.Bew1_time) {  // ist Active ein String ?
                        ```` `  
                        

                        Dann habe ich dies falsch interpretiert:
                        @sveni_lee:

                        soll immer bewässert werden wenn, wenn Active=true ist und … `
                        Markiere bitte noch das Thema als gelöst (im Betreff des ersten Beitrags).

                        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 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          sveni_lee
                          wrote on last edited by
                          #14

                          Ich hätte jetzt doch noch zwei Fragen zu dem Skript:

                          Ich habe nun 2 Kreisläufe die ich nun gern steuern möchte.

                          Kann ich das script einfach um eine Funktion bspw. Funktion zeiten_Ventil2() erweitern? Im grunde ist es der selbe Aufbau nur das

                          sich die beiden Konstanten ändern "const idJSON" und "const idBew"…

                          und ich würde mir gern anzeigen lassen, wann die nächste Bewesserung gestartet werden soll und für wie lange...

                          ist das auch irgendwie realisierbar?

                          1 Reply Last reply
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #15

                            @sveni_lee:

                            ich würde mir gern anzeigen lassen, wann die nächste Bewesserung gestartet werden soll und für wie lange… `
                            Dann ergänze das Skript um einen Datenpunkt (Typ Zeichenkette) für die Zeitanzeige.

                            const idZeit = 'javascript.0.Bewässerung.Ventil1.Zeitpunkt';
                            
                                  setState(idZeit, obj.Bew1 + ' für ' + obj.Bew1_time + ' Minuten', true);
                                  var t = obj.Bew1.split(':');
                                  sched1 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                                     setState(idBew, obj.Bew1_time);
                                     if(debug) log('Bewässerung1 gestartet');
                                     if(obj.Bew2_time) setState(idZeit, obj.Bew2 + ' für ' + obj.Bew2_time + ' Minuten', true);
                                  });
                            
                            

                            @sveni_lee:

                            Ich habe nun 2 Kreisläufe die ich nun gern steuern möchte.

                            Kann ich das script einfach um eine Funktion bspw. Funktion zeiten_Ventil2() erweitern? `
                            Das Skript einfach in ein zweites Skript kopieren und die 3 ID-Konstanten am Anfang ändern.

                            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 Reply Last reply
                            0
                            • S Offline
                              S Offline
                              sveni_lee
                              wrote on last edited by
                              #16

                              Danke, das klappt super…

                              ich hab jetzt noch Uhrzeit und dauer von einander getrennt...

                                    setState(idZeit, obj.Bew1, true);
                                    setState(idDauer, obj.Bew1_time + ' Minuten', true);
                              

                              Kann mann noch irgendwie den Wochentag dort mit reinbringen? Es kann ja vorkommen, das nicht jeden Tag bewässert wird.

                              1 Reply Last reply
                              0
                              • paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by
                                #17

                                @sveni_lee:

                                Kann mann noch irgendwie den Wochentag dort mit reinbringen? Es kann ja vorkommen, das nicht jeden Tag bewässert wird. `
                                Der Wochtentag als Zahl 0…6 liegt in der Variablen wd bereits vor. Durch Verwendung der Zahl als Index in ein Array, kann ein Name zugeordnet werden.

                                const days = ['Mo','Di','Mi','Do','Fr','Sa','So'];
                                
                                log('Wochentag: ' + days[wd]);
                                

                                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 Reply Last reply
                                0
                                • S Offline
                                  S Offline
                                  sveni_lee
                                  wrote on last edited by
                                  #18

                                  Jepp… auch das klappt wunderbar...!

                                  So langsam bekomme ich Ahnung wie man was realisieren kann.

                                  Das Skript überprüft ja kurz nach Mitternacht ob für den dann aktuellen Tag was ansteht, das hat zur Folge, dass bis zum nächsten Tag als nächste Bewässerung immer noch die Zeit von heute angezeigt wird...

                                  Gesendet von iPhone mit Tapatalk Pro

                                  1 Reply Last reply
                                  0
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by
                                    #19

                                    @sveni_lee:

                                    Das Skript überprüft ja kurz nach Mitternacht ob für den dann aktuellen Tag was ansteht, das hat zur Folge, dass bis zum nächsten Tag als nächste Bewässerung immer noch die Zeit von heute angezeigt wird… `
                                    Ja, oder

                                             if(obj.Bew2_time) setState(idZeit, obj.Bew2 + ' für ' + obj.Bew2_time + ' Minuten', true);
                                             else setState(idZeit, 'morgen oder später', true;
                                    
                                    

                                    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 Reply Last reply
                                    0
                                    • S Offline
                                      S Offline
                                      sveni_lee
                                      wrote on last edited by
                                      #20

                                      ich habe mich jetzt intensive damit auseinandergesetzt…

                                      Mein Ziel ist/war es die Geplante nächste Bewässerung anzeigen zu lassen auch wenn sie erst in den nächsten Tagen geplant ist.

                                      also habe ich das skript mit meinen bescheidenen Kenntnissen erweitert.

                                      const idJSON = 'javascript.0.Bewässerung.Ventil_1.BewaesserungsPlan';
                                      const idBew = '';
                                      const idZeit = 'javascript.0.Bewässerung.Ventil1.Zeitpunkt';
                                      const idDauer = 'javascript.0.Bewässerung.Ventil1.Dauer_next';
                                      const days = ['Mo','Di','Mi','Do','Fr','Sa','So'];
                                      
                                      var debug = true;
                                      var sched1 = null;
                                      var sched2 = null;
                                      var json = getState(idJSON).val;
                                      
                                      function zeiten() {
                                         setState(idZeit, '--:--', true);   // default Anzeige falls keine Zeit gefunden wird
                                         setState(idDauer, ' nicht geplant', true);   // default Anzeife falls keine Zeit gefunden wird
                                         var arr = JSON.parse(json);  // Array aus 7 Elementen (Wochentage)
                                         var now = new Date();
                                         var wd = now.getDay() - 1;  // Wochentag (0 = Montag)
                                         if(wd < 0) wd = 6;  // Sonntag
                                         if(debug) log('Wochentag: ' + wd);
                                         var obj = arr[wd];
                                         if(debug) log(JSON.stringify(obj));
                                         if(sched1) clearSchedule(sched1);
                                         if(debug) log('Active: ' + obj.Active + ' Typ: ' + typeof obj.Active);
                                         if(debug) log('Bew1 um: ' + obj.Bew1 + ' für ' + obj.Bew1_time + ' Minuten ' + ' Typ: ' + typeof obj.Bew1_time);
                                         var time = ("0" + now.getHours()).slice(-2)   + ":" + ("0" + now.getMinutes()).slice(-2);
                                         log('Zeit jetzt: ' + time); //nur für Testzwecke
                                         log(time < obj.Bew1); // nur für Testzwecke
                                         if(obj.Active == "x" && obj.Bew1_time && time < obj.Bew1) {  // ist Active ein String ?
                                            setState(idZeit, days[wd] + '. ' + obj.Bew1, true);
                                            setState(idDauer, obj.Bew1_time + ' Minuten', true);
                                            var t = obj.Bew1.split(':');
                                            sched1 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                                               setState(idBew, obj.Bew1_time);
                                               if(debug) log('Bewässerung1 gestartet');
                                            });
                                         }
                                         if(sched2) clearSchedule(sched2);     
                                         if(obj.Active == "x" && obj.Bew2_time && time < obj.Bew2) {
                                            setState(idZeit, days[wd] + '. ' + obj.Bew2, true);
                                            setState(idDauer, obj.Bew2_time + ' Minuten', true);
                                            t = obj.Bew2.split(':');
                                            sched2 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                                               setState(idBew, obj.Bew2_time);
                                            });
                                         }
                                         else 
                                            for (i=1; i<=7; i++) {
                                                wd = wd + 1
                                                if(wd>6) wd = 0; //umschalten Sonntag auf Montag
                                                obj = arr[wd];
                                                if(obj.Active == "x" && obj.Bew1_time) {
                                                   setState(idZeit, days[wd] + '. ' + obj.Bew1, true);
                                                   setState(idDauer, obj.Bew1_time + ' Minuten', true);
                                                   break;
                                                }
                                                else
                                                   if(obj.Active == "x" && obj.Bew2_time) {
                                                      setState(idZeit, days[wd] + '. ' + obj.Bew2, true);
                                                      setState(idDauer, obj.Bew2_time + ' Minuten', true);
                                                      break;
                                                   }
                                            }
                                      }       
                                      
                                      zeiten();  // Skriptstart
                                      
                                      schedule('1 0 * * *', zeiten);  // kurz nach Mitternacht
                                      
                                      // Änderung des JSON-Strings
                                      on(idJSON, function(dp) {
                                         json = dp.state.val;
                                         zeiten();
                                      });
                                      

                                      das klappt auch mit einer Ausnahme. Ich habe für heute eine Bew. für 19:25 eingetragen aber diese wird mir nicht angezeigt als nächste

                                      Bewässerung. Ich habe sicher irgendwo einen Fehler aber ich finde ihn einfach nicht…

                                      EDIT:

                                      hab's gelöst.... klappt jetzt... musste noch ein wenig mit dem "if" und "else if" Konditionen spielen

                                      const idJSON = 'javascript.0.Bewässerung.Ventil_1.BewaesserungsPlan';
                                      const idBew = '';
                                      const idZeit = 'javascript.0.Bewässerung.Ventil1.Zeitpunkt';
                                      const idDauer = 'javascript.0.Bewässerung.Ventil1.Dauer_next';
                                      const days = ['Mo','Di','Mi','Do','Fr','Sa','So'];
                                      
                                      var debug = true;
                                      var sched1 = null;
                                      var sched2 = null;
                                      var json = getState(idJSON).val;
                                      
                                      function zeiten() {
                                         setState(idZeit, '--:--', true);   // default Anzeige falls keine Zeit gefunden wird
                                         setState(idDauer, ' nicht geplant', true);   // default Anzeife falls keine Zeit gefunden wird
                                         var t = 0;
                                         var arr = JSON.parse(json);  // Array aus 7 Elementen (Wochentage)
                                         var now = new Date();
                                         var wd = now.getDay() - 1;  // Wochentag (0 = Montag)
                                         if(wd < 0) wd = 6;  // Sonntag
                                         if(debug) log('Wochentag: ' + wd);
                                         var obj = arr[wd];
                                         if(debug) log(JSON.stringify(obj));
                                         if(sched1) clearSchedule(sched1);
                                         if(debug) log('Active: ' + obj.Active + ' Typ: ' + typeof obj.Active);
                                         if(debug) log('Bew1 um: ' + obj.Bew1 + ' für ' + obj.Bew1_time + ' Minuten ' + ' Typ: ' + typeof obj.Bew1_time);
                                         var time = ("0" + now.getHours()).slice(-2)   + ":" + ("0" + now.getMinutes()).slice(-2);
                                         log('Zeit jetzt: ' + time); //nur für Testzwecke
                                         log(time < obj.Bew1); // nur für Testzwecke
                                         if(obj.Active == "x" && obj.Bew1_time && time < obj.Bew1) {  // ist Active ein String ?
                                            setState(idZeit, days[wd] + '. ' + obj.Bew1, true);
                                            setState(idDauer, obj.Bew1_time + ' Minuten', true);
                                            t = obj.Bew1.split(':');
                                            sched1 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                                               setState(idBew, obj.Bew1_time);
                                               if(debug) log('Bewässerung1 gestartet');
                                            });
                                         }
                                         if(sched2) clearSchedule(sched2);     
                                         if(obj.Active == "x" && obj.Bew2_time && time < obj.Bew2 && (obj.Bew1_time === 0 || time > obj.Bew1)) {
                                            setState(idZeit, days[wd] + '. ' + obj.Bew2, true);
                                            setState(idDauer, obj.Bew2_time + ' Minuten', true);
                                            t = obj.Bew2.split(':');
                                            sched2 = schedule(t[1] + ' ' + t[0] + ' * * *', function() {
                                               setState(idBew, obj.Bew2_time);
                                            });
                                         }
                                         else if (t===0) 
                                            for (i=1; i<=7; i++) {
                                                wd = wd + 1;
                                                if(wd>6) wd = 0; //umschalten Sonntag auf Montag
                                                obj = arr[wd];
                                                if(obj.Active == "x" && obj.Bew1_time) {
                                                   setState(idZeit, days[wd] + '. ' + obj.Bew1, true);
                                                   setState(idDauer, obj.Bew1_time + ' Minuten', true);
                                                   break;
                                                }
                                                else
                                                   if(obj.Active == "x" && obj.Bew2_time) {
                                                      setState(idZeit, days[wd] + '. ' + obj.Bew2, true);
                                                      setState(idDauer, obj.Bew2_time + ' Minuten', true);
                                                      break;
                                                   }
                                            }
                                      }       
                                      
                                      zeiten();  // Skriptstart
                                      
                                      schedule('1 0 * * *', zeiten);  // kurz nach Mitternacht
                                      
                                      // Änderung des JSON-Strings
                                      on(idJSON, function(dp) {
                                         json = dp.state.val;
                                         zeiten();
                                      });
                                      
                                      1 Reply Last reply
                                      0
                                      • BuZZyB Offline
                                        BuZZyB Offline
                                        BuZZy
                                        wrote on last edited by
                                        #21

                                        Hallo,

                                        hoffe es ist in Ordnung wenn ich hier mal frage welches Ventil du verwendest? Bin mir noch unschlüssig welches elektrische Ventil ich kaufen soll um eine Wasserleitung zu öffnen bzw zu schließen..

                                        Danke und Gruß

                                        1 Reply Last reply
                                        0
                                        • S Offline
                                          S Offline
                                          sveni_lee
                                          wrote on last edited by
                                          #22

                                          Klar… ich beende Hunter 1 1/4 Zoll Ventile 9v.

                                          Die werden mit einem Hutschienen Trafo versorgt...

                                          Gesendet von iPhone mit Tapatalk Pro

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          599

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe