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. JavaScript
  5. JSON Table erstellen Javascript

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

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

JSON Table erstellen Javascript

Geplant Angeheftet Gesperrt Verschoben Ungelöst JavaScript
7 Beiträge 4 Kommentatoren 1.3k Aufrufe 5 Watching
  • Ä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.
  • 0 Offline
    0 Offline
    0018
    schrieb am zuletzt editiert von
    #1

    Re: JSON Table erstellen

    Hallo zusammen,

    ich habe mir aus dem Post mal das Script genommen um mir selbst eine JSON Tabelle zu erzeugen. Folgender Script habe ich angepasst:

    const idsDay = [SK_inz_heute_day, SK_inz_gestern_day, SK_inz_vorgestern_day]; // Datenpunkt-IDs eintragen
    const idsVal_Stadt = [SK_inz_heute_val, SK_inz_gestern_val, SK_inz_vorgestern_val]; // Datenpunkt-IDs eintragen
    const idsVal_Land = [LK_inz_heute_val, LK_inz_gestern_val, LK_inz_vorgestern_val]; // Datenpunkt-IDs eintragen
    const days = ['Heute','Gestern','3Tage'];
    
    
    var table = [];
        if (debug) log ("Tabelle gestartet");
        for(let i = 0; i < days.length; i++) {
            table[i] = {};
            table[i].Tag = days[i];
            table[i].Datum = getState(idsDay[i]).val;
            table[i].Wert_Stadt = getState(idsVal_Stadt[i]).val;
            table[i].Wert_Land = getState(idsVal_Land[i]).val;
        }
    //setState(idTable, JSON.stringify(table), true);
    setState(LK_inz_table, JSON.stringify(table), true);
    
    on(idsVal_Stadt, function(dp) {
        if (debug) log ("idsVal_Stadt gestartet");
        let idx = idsVal_Stadt.indexOf(dp.id);
        table[idx].Wert_Stadt = dp.state.val;
        setState(LK_inz_table, JSON.stringify(table), true);
    });
    
    on(idsVal_Land, function(dp) {
        if (debug) log ("idsVal_Land gestartet");
        let idx = idsVal_Land.indexOf(dp.id);
        table[idx].Wert_Land = dp.state.val;
        setState(LK_inz_table, JSON.stringify(table), true);
    });
    
    on(idsDay, function(dp) {
        if (debug) log ("idsDay gestartet");
        let idx = idsDay.indexOf(dp.id);
        table[idx].Datum = dp.state.val;
        setState(LK_inz_table, JSON.stringify(table), true);
    });
    

    Der Code ist Teil eines Scriptes, daher sind die verwendeten Variablen (SK_inz_heute_day usw) im anderen Teil des Scriptes definiert. Das Script funktioeirt auch soweit und ich bekomme auch die Tabelle wie gewünscht gefüllt.

    Leider würde ich gerne den kompletten Code auch verstehen und bei einer Zeile fehlt mir die Erklärung dazu:

    for(let i = 0; i < days.length; i++) {
    

    Kann mir hier jemand kurz erläutern was genau hier gemacht wird und wofür das "i" steht?

    Zudem bekomme ich im Scripteditor folgenden Fehler angezeigt:
    Script.jpg

    Ist das normal oder muss noch was im Script ergänzt werden?

    Mfg
    0018

    liv-in-skyL mickymM 2 Antworten Letzte Antwort
    0
    • 0 0018

      Re: JSON Table erstellen

      Hallo zusammen,

      ich habe mir aus dem Post mal das Script genommen um mir selbst eine JSON Tabelle zu erzeugen. Folgender Script habe ich angepasst:

      const idsDay = [SK_inz_heute_day, SK_inz_gestern_day, SK_inz_vorgestern_day]; // Datenpunkt-IDs eintragen
      const idsVal_Stadt = [SK_inz_heute_val, SK_inz_gestern_val, SK_inz_vorgestern_val]; // Datenpunkt-IDs eintragen
      const idsVal_Land = [LK_inz_heute_val, LK_inz_gestern_val, LK_inz_vorgestern_val]; // Datenpunkt-IDs eintragen
      const days = ['Heute','Gestern','3Tage'];
      
      
      var table = [];
          if (debug) log ("Tabelle gestartet");
          for(let i = 0; i < days.length; i++) {
              table[i] = {};
              table[i].Tag = days[i];
              table[i].Datum = getState(idsDay[i]).val;
              table[i].Wert_Stadt = getState(idsVal_Stadt[i]).val;
              table[i].Wert_Land = getState(idsVal_Land[i]).val;
          }
      //setState(idTable, JSON.stringify(table), true);
      setState(LK_inz_table, JSON.stringify(table), true);
      
      on(idsVal_Stadt, function(dp) {
          if (debug) log ("idsVal_Stadt gestartet");
          let idx = idsVal_Stadt.indexOf(dp.id);
          table[idx].Wert_Stadt = dp.state.val;
          setState(LK_inz_table, JSON.stringify(table), true);
      });
      
      on(idsVal_Land, function(dp) {
          if (debug) log ("idsVal_Land gestartet");
          let idx = idsVal_Land.indexOf(dp.id);
          table[idx].Wert_Land = dp.state.val;
          setState(LK_inz_table, JSON.stringify(table), true);
      });
      
      on(idsDay, function(dp) {
          if (debug) log ("idsDay gestartet");
          let idx = idsDay.indexOf(dp.id);
          table[idx].Datum = dp.state.val;
          setState(LK_inz_table, JSON.stringify(table), true);
      });
      

      Der Code ist Teil eines Scriptes, daher sind die verwendeten Variablen (SK_inz_heute_day usw) im anderen Teil des Scriptes definiert. Das Script funktioeirt auch soweit und ich bekomme auch die Tabelle wie gewünscht gefüllt.

      Leider würde ich gerne den kompletten Code auch verstehen und bei einer Zeile fehlt mir die Erklärung dazu:

      for(let i = 0; i < days.length; i++) {
      

      Kann mir hier jemand kurz erläutern was genau hier gemacht wird und wofür das "i" steht?

      Zudem bekomme ich im Scripteditor folgenden Fehler angezeigt:
      Script.jpg

      Ist das normal oder muss noch was im Script ergänzt werden?

      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von
      #2

      @0018

      • das i ist ein zähler in einer schleife- beginne bei 0 zu zählen -> zähle solange, bis i < "anzahl der inhalte" -> erhöhe um 1 bei jedem schritt (google mal nach "javascript schleife" oder so ähnlich) - damit wird durch ein array (namens day) durchgegangen und zwar "anzahl der inhalte = heute, gestern ,3-tage) - also 3 mal

      • das unterkringelte sind keine fehler - nur der script-editor kennt es nicht - wird aber bekannt, wenn das script läuft - kann ignoriert werden

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      1 Antwort Letzte Antwort
      0
      • 0 0018

        Re: JSON Table erstellen

        Hallo zusammen,

        ich habe mir aus dem Post mal das Script genommen um mir selbst eine JSON Tabelle zu erzeugen. Folgender Script habe ich angepasst:

        const idsDay = [SK_inz_heute_day, SK_inz_gestern_day, SK_inz_vorgestern_day]; // Datenpunkt-IDs eintragen
        const idsVal_Stadt = [SK_inz_heute_val, SK_inz_gestern_val, SK_inz_vorgestern_val]; // Datenpunkt-IDs eintragen
        const idsVal_Land = [LK_inz_heute_val, LK_inz_gestern_val, LK_inz_vorgestern_val]; // Datenpunkt-IDs eintragen
        const days = ['Heute','Gestern','3Tage'];
        
        
        var table = [];
            if (debug) log ("Tabelle gestartet");
            for(let i = 0; i < days.length; i++) {
                table[i] = {};
                table[i].Tag = days[i];
                table[i].Datum = getState(idsDay[i]).val;
                table[i].Wert_Stadt = getState(idsVal_Stadt[i]).val;
                table[i].Wert_Land = getState(idsVal_Land[i]).val;
            }
        //setState(idTable, JSON.stringify(table), true);
        setState(LK_inz_table, JSON.stringify(table), true);
        
        on(idsVal_Stadt, function(dp) {
            if (debug) log ("idsVal_Stadt gestartet");
            let idx = idsVal_Stadt.indexOf(dp.id);
            table[idx].Wert_Stadt = dp.state.val;
            setState(LK_inz_table, JSON.stringify(table), true);
        });
        
        on(idsVal_Land, function(dp) {
            if (debug) log ("idsVal_Land gestartet");
            let idx = idsVal_Land.indexOf(dp.id);
            table[idx].Wert_Land = dp.state.val;
            setState(LK_inz_table, JSON.stringify(table), true);
        });
        
        on(idsDay, function(dp) {
            if (debug) log ("idsDay gestartet");
            let idx = idsDay.indexOf(dp.id);
            table[idx].Datum = dp.state.val;
            setState(LK_inz_table, JSON.stringify(table), true);
        });
        

        Der Code ist Teil eines Scriptes, daher sind die verwendeten Variablen (SK_inz_heute_day usw) im anderen Teil des Scriptes definiert. Das Script funktioeirt auch soweit und ich bekomme auch die Tabelle wie gewünscht gefüllt.

        Leider würde ich gerne den kompletten Code auch verstehen und bei einer Zeile fehlt mir die Erklärung dazu:

        for(let i = 0; i < days.length; i++) {
        

        Kann mir hier jemand kurz erläutern was genau hier gemacht wird und wofür das "i" steht?

        Zudem bekomme ich im Scripteditor folgenden Fehler angezeigt:
        Script.jpg

        Ist das normal oder muss noch was im Script ergänzt werden?

        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        schrieb am zuletzt editiert von
        #3

        @0018

        1. Dein Codefragement ist einfach eine Schleife. i stellt einfach den ITERATOR dar - deswegen nimmt man auch gerne den Buchstaben i mit dem die Schleife durchiteriert wird.

        Das Ganze soll ja eine Tabelle mit days.length Tagen erstellt werden. Da Arrays in JS immer bei 0 beginnen, lässt man i von 0 bis zählen.

        1. Die Fehlermeldung bekommst Du weg, in dem Du das Array Deiner Tabelle nicht mit einem leeren Objekt initiailisierst, sondern eben mit den entsprechenden Eigenschaften.

        Also statt
        table[i]={}

        eben

        table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""} bzw. je nachdem was für halt dieses Funktionen zurückgeben.

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        0 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          @0018

          1. Dein Codefragement ist einfach eine Schleife. i stellt einfach den ITERATOR dar - deswegen nimmt man auch gerne den Buchstaben i mit dem die Schleife durchiteriert wird.

          Das Ganze soll ja eine Tabelle mit days.length Tagen erstellt werden. Da Arrays in JS immer bei 0 beginnen, lässt man i von 0 bis zählen.

          1. Die Fehlermeldung bekommst Du weg, in dem Du das Array Deiner Tabelle nicht mit einem leeren Objekt initiailisierst, sondern eben mit den entsprechenden Eigenschaften.

          Also statt
          table[i]={}

          eben

          table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""} bzw. je nachdem was für halt dieses Funktionen zurückgeben.

          0 Offline
          0 Offline
          0018
          schrieb am zuletzt editiert von
          #4

          @mickym sagte in JSON Table erstellen Javascript:

          Also statt
          table[i]={}
          eben
          table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""} bzw. je nachdem was für halt dieses Funktionen zurückgeben.

          Also wird hierüber definiert, wie die Spalten angeordnet werden? Also Tag gleich 0 und somit die erste Spalte?

          Wenn ich deinen Code

          table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""}
          

          verwende, bekomme ich folgende Meldungen:

          J1.jpg

          J2.jpg

          Letztendlich sieht die fertige Tabelle so aus:
          Tabelle.jpg

          Mfg
          0018

          OliverIOO 1 Antwort Letzte Antwort
          0
          • 0 0018

            @mickym sagte in JSON Table erstellen Javascript:

            Also statt
            table[i]={}
            eben
            table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""} bzw. je nachdem was für halt dieses Funktionen zurückgeben.

            Also wird hierüber definiert, wie die Spalten angeordnet werden? Also Tag gleich 0 und somit die erste Spalte?

            Wenn ich deinen Code

            table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""}
            

            verwende, bekomme ich folgende Meldungen:

            J1.jpg

            J2.jpg

            Letztendlich sieht die fertige Tabelle so aus:
            Tabelle.jpg

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von OliverIO
            #5

            @0018 sagte in JSON Table erstellen Javascript:

            @mickym sagte in JSON Table erstellen Javascript:

            Also statt
            table[i]={}
            eben
            table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""} bzw. je nachdem was für halt dieses Funktionen zurückgeben.

            Also wird hierüber definiert, wie die Spalten angeordnet werden? Also Tag gleich 0 und somit die erste Spalte?

            Wenn ich deinen Code

            table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""}
            

            verwende, bekomme ich folgende Meldungen:

            J1.jpg

            J2.jpg

            Letztendlich sieht die fertige Tabelle so aus:
            Tabelle.jpg

            Die Reihenfolge steuerst du über die Reihenfolge in den Array-Variablen in den ersten 4 Zeilen.
            In days stehen die Titel und
            in idsDay,idsVal_Stadt und idsVal_Land die DatenpunktIDs zu den Werten.
            d.h. jeweils der erste Wert aus allen 4 Zeilen ist die 1.Tabellenzeile,
            der 2.Wert ist die 2.Tabellenzeile usw.
            Alle Arrays in den 4 Zeilen müssen die gleiche Anzahl von Elemente haben, sonst passt es nicht zusammen.
            Als Anmerkung: ich würde das anders machen. Aber fürs lernen ist es ok

            Das was @mickym geschrieben hat ist nicht richtig.
            Auch die vorgeschlagene Initialisierung ist falsch, da in einem Objektliteral es wie folgt geschrieben werden muss:

            table[i] = {Tag:0, Datum:"", Wert_Stadt:"", Wert_Land:""} 
            

            Ist aber wie gesagt nicht notwendig. Da dur nur die Anzeige im Editor befriedigst, aber keine Auswirkung auf die Funktionsfähigkeit des Skript hat.
            @liv-in-sky hat das schon so richtig beschrieben.
            Meines Erachtens sollten das nur Warnungen sein, da es keine echten Fehler sind.
            Wenn das Skript läuft gibt es ja kein Fehler, oder?

            Noch eine Anmerkung: Die Überschriften sehe ich nirgends in deinem Code.

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            0 mickymM 2 Antworten Letzte Antwort
            0
            • OliverIOO OliverIO

              @0018 sagte in JSON Table erstellen Javascript:

              @mickym sagte in JSON Table erstellen Javascript:

              Also statt
              table[i]={}
              eben
              table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""} bzw. je nachdem was für halt dieses Funktionen zurückgeben.

              Also wird hierüber definiert, wie die Spalten angeordnet werden? Also Tag gleich 0 und somit die erste Spalte?

              Wenn ich deinen Code

              table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""}
              

              verwende, bekomme ich folgende Meldungen:

              J1.jpg

              J2.jpg

              Letztendlich sieht die fertige Tabelle so aus:
              Tabelle.jpg

              Die Reihenfolge steuerst du über die Reihenfolge in den Array-Variablen in den ersten 4 Zeilen.
              In days stehen die Titel und
              in idsDay,idsVal_Stadt und idsVal_Land die DatenpunktIDs zu den Werten.
              d.h. jeweils der erste Wert aus allen 4 Zeilen ist die 1.Tabellenzeile,
              der 2.Wert ist die 2.Tabellenzeile usw.
              Alle Arrays in den 4 Zeilen müssen die gleiche Anzahl von Elemente haben, sonst passt es nicht zusammen.
              Als Anmerkung: ich würde das anders machen. Aber fürs lernen ist es ok

              Das was @mickym geschrieben hat ist nicht richtig.
              Auch die vorgeschlagene Initialisierung ist falsch, da in einem Objektliteral es wie folgt geschrieben werden muss:

              table[i] = {Tag:0, Datum:"", Wert_Stadt:"", Wert_Land:""} 
              

              Ist aber wie gesagt nicht notwendig. Da dur nur die Anzeige im Editor befriedigst, aber keine Auswirkung auf die Funktionsfähigkeit des Skript hat.
              @liv-in-sky hat das schon so richtig beschrieben.
              Meines Erachtens sollten das nur Warnungen sein, da es keine echten Fehler sind.
              Wenn das Skript läuft gibt es ja kein Fehler, oder?

              Noch eine Anmerkung: Die Überschriften sehe ich nirgends in deinem Code.

              0 Offline
              0 Offline
              0018
              schrieb am zuletzt editiert von
              #6

              Super vielen Dank, die Erklärungen habe ich soweit verstanden :-)

              @oliverio sagte in JSON Table erstellen Javascript:

              Als Anmerkung: ich würde das anders machen. Aber fürs lernen ist es ok

              Wie würde deine Variante aussehen? Vielleicht erscheint mir diese ja leichter :blush:

              @oliverio sagte in JSON Table erstellen Javascript:

              Noch eine Anmerkung: Die Überschriften sehe ich nirgends in deinem Code.

              Die Überschriften habe ich via Material Design-Table Widget eingefügt. Sollten die Überschriften lieber gleich im JSON mitgegeben werden? Wenn ja wie müsste man diese im Script einbinden?

              Mfg
              0018

              1 Antwort Letzte Antwort
              0
              • OliverIOO OliverIO

                @0018 sagte in JSON Table erstellen Javascript:

                @mickym sagte in JSON Table erstellen Javascript:

                Also statt
                table[i]={}
                eben
                table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""} bzw. je nachdem was für halt dieses Funktionen zurückgeben.

                Also wird hierüber definiert, wie die Spalten angeordnet werden? Also Tag gleich 0 und somit die erste Spalte?

                Wenn ich deinen Code

                table[i] = {Tag = 0, Datum = "", Wert_Stadt = "", Wert_Land = ""}
                

                verwende, bekomme ich folgende Meldungen:

                J1.jpg

                J2.jpg

                Letztendlich sieht die fertige Tabelle so aus:
                Tabelle.jpg

                Die Reihenfolge steuerst du über die Reihenfolge in den Array-Variablen in den ersten 4 Zeilen.
                In days stehen die Titel und
                in idsDay,idsVal_Stadt und idsVal_Land die DatenpunktIDs zu den Werten.
                d.h. jeweils der erste Wert aus allen 4 Zeilen ist die 1.Tabellenzeile,
                der 2.Wert ist die 2.Tabellenzeile usw.
                Alle Arrays in den 4 Zeilen müssen die gleiche Anzahl von Elemente haben, sonst passt es nicht zusammen.
                Als Anmerkung: ich würde das anders machen. Aber fürs lernen ist es ok

                Das was @mickym geschrieben hat ist nicht richtig.
                Auch die vorgeschlagene Initialisierung ist falsch, da in einem Objektliteral es wie folgt geschrieben werden muss:

                table[i] = {Tag:0, Datum:"", Wert_Stadt:"", Wert_Land:""} 
                

                Ist aber wie gesagt nicht notwendig. Da dur nur die Anzeige im Editor befriedigst, aber keine Auswirkung auf die Funktionsfähigkeit des Skript hat.
                @liv-in-sky hat das schon so richtig beschrieben.
                Meines Erachtens sollten das nur Warnungen sein, da es keine echten Fehler sind.
                Wenn das Skript läuft gibt es ja kein Fehler, oder?

                Noch eine Anmerkung: Die Überschriften sehe ich nirgends in deinem Code.

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #7

                @oliverio sagte in JSON Table erstellen Javascript:

                Das was @mickym geschrieben hat ist nicht richtig.

                Stimmt - aber hast mich ja korrekt verbessert. :)

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                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

                927

                Online

                32.5k

                Benutzer

                81.6k

                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