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. [gelöst]Brauche Hilfe bei Script mit Schleife und mehr

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    237

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

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

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
11 Beiträge 2 Kommentatoren 856 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.
  • T Offline
    T Offline
    Torsten_MG
    schrieb am zuletzt editiert von
    #1

    Hallo Leute,

    Scriptschreiben ist für mich etwas ganz neues und brauche deshalb hier bei einer Sache eure Hilfe.

    Ich habe von Walkinlarge2010! ein Script zur verfügung gestellt bekommen, welches er selber auch nur für seine Anwendung angepasst hat.

    Hier mal der Auszug aus meinem Script, wo ich eure Hilfe brauche

    var Startzeit;
    var Verspaetung;
    var Linie;
    
    //Startzeit
    if (logging) log(result.raw[0].sched_time);
    //Verspaetung
    if (logging) log(result.raw[0].delay);
    //Linie
    if (logging) log(result.raw[0].linie);
    
    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);
    
    setState("javascript.0.Verkehr.Aktualisieren", false);
    setState("javascript.0.VIS.Overlay", 5);
    

    Mit diesem Script kann ich mir einen Abfahrtmonitor der Bushaltestelle vor unserer Tür darstellen lassen. Das Problem ist, dass damit immer nur der nächste Bus angezeigt wird.

    Damit ich mir die nächsten 5 Abfahrten anzeigen lassen kann, müßte ich entweder den oberen Code mit Anpassung der Array-Nummer 5x untereinander schreiben, oder aber mit einer Schleife was schöner wäre, aber leider meine minimalen Kenntnisse überschreitet.

    if (logging) log(result.raw[0].prev_route.sched_time);
    

    Hier müßte die [0] immer geändert werden auf 1,2,3,4

    Startzeit0 = result.raw[0].prev_route.sched_time;
    Verspaetung0 = result.raw[0].delay;
    Linie0 = result.raw[0].linie;
    
    setState("javascript.0.Verkehr.Haltestelle.Startzeit0",Startzeit0);
    

    Hier müßte jeweils die 0 an die nächste Nummer angepasst werden

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

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

      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
      • T Offline
        T Offline
        Torsten_MG
        schrieb am zuletzt editiert von
        #3

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

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

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

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

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

                @Torsten_MG:

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

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

                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
                • T Offline
                  T Offline
                  Torsten_MG
                  schrieb am zuletzt editiert von
                  #8

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

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

                    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
                    • T Offline
                      T Offline
                      Torsten_MG
                      schrieb am zuletzt editiert von
                      #10

                      @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 :D

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

                      1 Antwort Letzte Antwort
                      0
                      • T Offline
                        T Offline
                        Torsten_MG
                        schrieb am zuletzt editiert von
                        #11

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

                        588

                        Online

                        32.7k

                        Benutzer

                        82.5k

                        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