Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst]Brauche Hilfe bei Script mit Schleife und mehr

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

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

    • Wir empfehlen: Node.js 22.x

    [gelöst]Brauche Hilfe bei Script mit Schleife und mehr

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

      https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/for

      1 Reply Last reply Reply Quote 0
      • T
        Torsten_MG last edited by

        @paul53:

        https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/for `

        Ok, in die geschweifte Klammer kommt dann der Teil wo ich die Hochzählung haben möchte.

        Ich denke mal, daß ich dann überall wo ich [0] stehen habe mit [ i] ersetzen muß.

        Wie setze ich das aber bei

        Startzeit = result.raw[0].prev_route.sched_time;
        Verspaetung = result.raw[0].delay;
        Linie = result.raw[0].linie;
        
        setState("javascript.0.Verkehr.Haltestelle.Startzeit",Startzeit);
        setState("javascript.0.Verkehr.Haltestelle.Verspaetung",Verspaetung);
        setState("javascript.0.Verkehr.Haltestelle.Linie",Linie);
        
        

        Startzeit, Verspaetung & Linie um?

        Da sollte ja dann jeweils

        Startzeit0 bis Startzeit4

        usw stehen

        Gesendet von meinem SM-J730F mit Tapatalk

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

          @Torsten_MG:

          Wie setze ich das aber bei

          Startzeit = result.raw[0].prev_route.sched_time;
          Verspaetung = result.raw[0].delay;
          Linie = result.raw[0].linie;
          
          setState("javascript.0.Verkehr.Haltestelle.Startzeit",Startzeit);
          setState("javascript.0.Verkehr.Haltestelle.Verspaetung",Verspaetung);
          setState("javascript.0.Verkehr.Haltestelle.Linie",Linie);
          

          Startzeit, Verspaetung & Linie um?

          Da sollte ja dann jeweils

          Startzeit0 bis Startzeit4

          usw stehen `

          `Startzeit = result.raw[i].prev_route.sched_time;
          Verspaetung = result.raw[i].delay;
          Linie = result.raw[i].linie;
          
          setState("javascript.0.Verkehr.Haltestelle.Startzeit" + i,Startzeit);
          setState("javascript.0.Verkehr.Haltestelle.Verspaetung" + i,Verspaetung);
          setState("javascript.0.Verkehr.Haltestelle.Linie" + i,Linie);` [/i][/i][/i]
          
          1 Reply Last reply Reply Quote 0
          • T
            Torsten_MG last edited by

            Danke für die schnelle Hilfe!! Da ich ioBroker noch nicht permanent am laufen habe, werde ich es dann beim nächsten mal ausprobieren. Werde mich dann melden, ob es geklappt hat oder nicht

            Gesendet von meinem SM-J730F mit Tapatalk

            1 Reply Last reply Reply Quote 0
            • T
              Torsten_MG last edited by

              Habs jetzt mal ausprobiert.

              Funktioniert danke!!

              Aber eine Sache habe ich noch, das Script wird nur 1x ausgeführt. Wie kann ich es umsetzen, dass es im 1Minuten-Takt immer wieder aufgerufen wird?

              Hier nochmal mein Script:

              var request = require('request');
              var logging = true;
              var i = 0;
              
              createState('Verkehr.Aktualisieren', false, {
                      desc: 'Werte aktualisieren',
                      type: 'boolean',
                      def:  false,
                      role: 'indicator'    
              });
              for(let i = 0, i < 4, i++) {
              	createState('Verkehr.meine_Haltestelle.Startzeit'+(i), 0, {
              		});
              	createState('Verkehr.meine_Haltestelle.Verspaetung'+(i), 0, {
              		});		
              	createState('Verkehr.meine_Haltestelle.Haltestelle'+(i), 0, {
              		});
              	createState('Verkehr.meine_Haltestelle.Linie'+(i), 0, {
              		});	
              		}
              function datenlesen() {
                  //Zuhause nach HBF
                  var link = 'https://vrrf.finalrewind.org/xxx/xxx.json?frontend=json&backend=efa.VRR&platform=1' ;
                  log('Verkehr Daten einlesen');
                  request(link, function (error, response, body) {
                      if (!error && response.statusCode == 200) {
                          var result;
                          try{
                              result = JSON.parse(body);
              
                              if (logging) log('Kein Fehler beim Einlesen Verkehr Daten');
              
                          } catch (e) {
                              log('Parse Fehler (Roofi Modul):' + e);
                          }    
                          if (result) {
              
                              var Startzeit;
                              var Verspaetung;
                              var Haltestelle;
                              var Linie;
              				var j = 0;
              			for(let j = 0, j < 4, j++) {
              		//Startzeit
                              if (logging) log(result.raw[j].sched_time);
              		//Verspaetung
                              if (logging) log(result.raw[j].delay);
              		//Ziel Haltestelle
                              if (logging) log(result.raw[j].destination);
              		//Linie
                              if (logging) log(result.raw[j].line);
              
                              Startzeit = result.raw[j].sched_time;
                              Verspaetung = result.raw[j].delay;
                              Haltestelle = result.raw[j].destination;
                              Linie = result.raw[j].line;
              
                              setState("javascript.0.Verkehr.meine_Haltestelle.Startzeit"+j,Startzeit);
                              setState("javascript.0.Verkehr.meine_Haltestelle.Verspaetung"+j,Verspaetung);
                              setState("javascript.0.Verkehr.meine_Haltestelle.Haltestelle"+j,Haltestelle);
                              setState("javascript.0.Verkehr.meine_Haltestelle.Linie"+j,Linie);
                          }    
                              setState("javascript.0.Verkehr.Aktualisieren", false);
                              setState("javascript.0.VIS.Overlay", 5);
                          //    setState("javascript.0.VIS.Overlay_iPhoneX", 5);
                          }
                      } else log('Fehler (Verkehr Daten Abfrage: ' + error);
                  });   // Ende request 
                  log('Verkehr Daten eingelesen');
              }
              datenlesen ();
              
              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                @Torsten_MG:

                dass es im 1Minuten-Takt immer wieder aufgerufen wird? `

                schedule('* * * * *', datenlesen); // jede minute
                
                1 Reply Last reply Reply Quote 0
                • T
                  Torsten_MG last edited by

                  @paul53:

                  @Torsten_MG:

                  dass es im 1Minuten-Takt immer wieder aufgerufen wird? `

                  schedule('* * * * *', datenlesen); // jede minute
                  ```` `  
                  

                  Danke!!!

                  Aber leider funktioniert es nicht zu 100%

                  Beim 1. Start werden alle Datenpunkte erstellt. Hier nochmal das komplette aktuelle Script

                  schedule('* * * * *', datenlesen); // jede minute
                  var request = require('request');
                  var logging = true;
                  var i = 0;
                  
                  createState('Verkehr.Aktualisieren', false, {
                          desc: 'Werte aktualisieren',
                          type: 'boolean',
                          def:  false,
                          role: 'indicator'    
                  });
                  for(let i = 0; i < 4; i++) {
                  	createState('Verkehr.meine_Haltestelle.Startzeit'+i, 0, {
                  		});
                  	createState('Verkehr.meine_Haltestelle.Verspaetung'+i, 0, {
                  		});	
                      createState('Verkehr.meine_Haltestelle.inMinuten'+i, 0, {
                  		});
                  	createState('Verkehr.meine_Haltestelle.Haltestelle'+i, 0, {
                  		});
                  	createState('Verkehr.meine_Haltestelle.Linie'+i, 0, {
                  		});
                  	createState('Verkehr.meine_Haltestelle.tats_zeit'+i, 0, {
                  		});
                  		}
                  function datenlesen() {
                      //Meine Haltestelle nach HBF
                      var link = 'https://vrrf.finalrewind.org/xxx/xxx.json?frontend=json&backend=efa.VRR&platform=1' ;
                      log('Verkehr Daten einlesen');
                      request(link, function (error, response, body) {
                          if (!error && response.statusCode == 200) {
                              var result;
                              try{
                                  result = JSON.parse(body);
                  
                                  if (logging) log('Kein Fehler beim Einlesen Verkehr Daten');
                  
                              } catch (e) {
                                  log('Parse Fehler (Roofi Modul):' + e);
                              }    
                              if (result) {
                  
                                  var Startzeit;
                                  var Verspaetung;
                                  var Haltestelle;
                                  var inMinuten;
                                  var Linie;
                                  var TatsZeit;
                  			for(let j = 0; j < 4; j++) {
                  				//Startzeit
                                  if (logging) log(result.raw[j].sched_time);
                  				//Verspaetung
                                  if (logging) log(result.raw[j].delay);
                  				//Ziel Haltestelle
                                  if (logging) log(result.raw[j].destination);
                                  //Bus kommt in Minuten
                                  if (logging) log(result.raw[j].countdown);
                  				//Linie
                                  if (logging) log(result.raw[j].line);
                  				//Tatsächliche Zeit
                                  if (logging) log(result.raw[j].time);
                  
                                  Startzeit = result.raw[j].sched_time;
                                  Verspaetung = result.raw[j].delay;
                                  inMinuten = result.raw[j].countdown;
                                  Haltestelle = result.raw[j].destination;
                                  Linie = result.raw[j].line;
                                  TatsZeit = result.raw[j].time;
                  
                                  setState("javascript.0.Verkehr.meine_Haltestelle.Startzeit"+j,Startzeit);
                                  setState("javascript.0.Verkehr.meine_Haltestelle.Verspaetung"+j,Verspaetung);
                                  setState("javascript.0.Verkehr.meine_Haltestelle.inMinuten"+j,inMinuten);
                                  setState("javascript.0.Verkehr.meine_Haltestelle.Haltestelle"+j,Haltestelle);
                                  setState("javascript.0.Verkehr.meine_Haltestelle.Linie"+j,Linie);
                                  setState("javascript.0.Verkehr.meine_Haltestelle.tats_zeit"+j,TatsZeit);
                              }    
                  
                                  setState("javascript.0.Verkehr.Aktualisieren", false);
                                  setState("javascript.0.VIS.Overlay", 5);
                              //    setState("javascript.0.VIS.Overlay_iPhoneX", 5);
                              }
                          } else log('Fehler (Verkehr Daten Abfrage: ' + error);
                      });   // Ende request 
                      log('Verkehr Daten eingelesen');
                  }
                  datenlesen ();
                  

                  Aber, wenn das 1. Mal neu eingelesen wird, werden nur noch die Datenpunkte 1-3 aktualisiert.

                  Also:

                  javascript.0.Verkehr.meine_Haltestelle.Startzeit1
                  javascript.0.Verkehr.meine_Haltestelle.Verspaetung1
                  javascript.0.Verkehr.meine_Haltestelle.inMinuten1
                  javascript.0.Verkehr.meine_Haltestelle.Haltestelle1
                  javascript.0.Verkehr.meine_Haltestelle.Linie1
                  javascript.0.Verkehr.meine_Haltestelle.tats1
                  
                  javascript.0.Verkehr.meine_Haltestelle.Startzeit2
                  javascript.0.Verkehr.meine_Haltestelle.Verspaetung2
                  javascript.0.Verkehr.meine_Haltestelle.inMinuten2
                  javascript.0.Verkehr.meine_Haltestelle.Haltestelle2
                  javascript.0.Verkehr.meine_Haltestelle.Linie2
                  javascript.0.Verkehr.meine_Haltestelle.tats2
                  
                  javascript.0.Verkehr.meine_Haltestelle.Startzeit3
                  javascript.0.Verkehr.meine_Haltestelle.Verspaetung3
                  javascript.0.Verkehr.meine_Haltestelle.inMinuten3
                  javascript.0.Verkehr.meine_Haltestelle.Haltestelle3
                  javascript.0.Verkehr.meine_Haltestelle.Linie3
                  javascript.0.Verkehr.meine_Haltestelle.tats3
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    @Torsten_MG:

                    wenn das 1. Mal neu eingelesen wird, werden nur noch die Datenpunkte 1-3 aktualisiert. `
                    Das kann ich anhand des Skriptes nicht nachvollziehen, denn die Initialisierung der Zähl-/Indexvariablen erfolgt mit 0:

                    			for(let j = 0; j < 4; j++) {
                    
                    

                    Anmerkung: Du solltest besser strukturieren (Einrückungen), damit man sieht, welche Klammer wozu gehört.

                    1 Reply Last reply Reply Quote 0
                    • T
                      Torsten_MG last edited by

                      @paul53:

                      @Torsten_MG:

                      wenn das 1. Mal neu eingelesen wird, werden nur noch die Datenpunkte 1-3 aktualisiert. `
                      Das kann ich anhand des Skriptes nicht nachvollziehen, denn die Initialisierung der Zähl-/Indexvariablen erfolgt mit 0:

                      			for(let j = 0; j < 4; j++) {
                      
                      

                      Anmerkung: Du solltest besser strukturieren (Einrückungen), damit man sieht, welche Klammer wozu gehört. `

                      Eben, deswegen bin ich ja auch verwirrt.

                      Kann es aber jetzt nicht weitertesten, mußte mein Fhem wieder aktivieren, damit die Lampen funktionieren 😄

                      Falls doch noch von jemanden eine Idee kommt, gerne her damit!

                      1 Reply Last reply Reply Quote 0
                      • T
                        Torsten_MG last edited by

                        Habe es mir jetzt nochmal angeschaut, hat mir keine Ruhe gelassen.

                        Also es werden alle Objekte refresht, die Werte werden kurzzeitig grün. Was gestern zwar bei den 0-er Objekten nicht so war aber jetzt :?

                        Aber was mich gestern noch irritiert hat, waren die Werte der Bus kommt in Minuten, die haben sich nicht minütlich geändert, sondern nur alle paar Minuten. Den Grund habe ich jetzt auch gefunden, die JSON-Datei wird nur alle 4 Minuten aktualisiert. Also wird diese Abfrage rausgeschmissen. Kann ich mit der aktuellen Systemzeit und der Uhrzeit, wann der Bus kommt diese Zeit Berechnen? wenn ja, wie?

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        968
                        Online

                        32.1k
                        Users

                        80.7k
                        Topics

                        1.3m
                        Posts

                        2
                        11
                        790
                        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