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 Datensätze verbinden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

JSON Datensätze verbinden

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 2 Kommentatoren 361 Aufrufe 2 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.
  • M Offline
    M Offline
    mctom
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich nutze das Wetterstationsscript von @SBorg um Daten meiner Wetterstation in ioBroker zu bekommen.
    Ich habe gerad mal wieder eine kreative Phase um alles etwas schöner in VIS darzustellen.
    Bei einem Thema benötige ich mal eure Hilfe.
    Durch das Script werden für jeden Monat die wichtigsten Daten in einem Datenpunkt abgelegt. Dieser sieht wie folgt aus:

    [
      {
        "Tiefstwert": 5.27,
        "Hoechstwert": 33,
        "Temp_Durchschnitt": 18.79,
        "Max_Windboe": 21.88,
        "Max_Regenmenge": 8.1,
        "Regenmenge_Monat": 31.2,
        "warme_Tage": 22,
        "Sommertage": 14,
        "heisse_Tage": 2,
        "Frost_Tage": 0,
        "kalte_Tage": 0,
        "Eistage": 0,
        "sehr_kalte_Tage": 0
      }
    ]
    

    Ich würde diese Datenpunkte jetzt gerne zu einem großen JSON zusammen bauen, damit ich ein großes JSON File habe und dieses dann in einem Tabellen Widget nutzen kann.

    Leider bekomme ich das nicht wirklich hin.
    Hat jemand eine Idee wie ich das in einem Script erledigen kann?

    Gruß
    Michael

    haus-automatisierungH 1 Antwort Letzte Antwort
    0
    • M mctom

      Hallo zusammen,

      ich nutze das Wetterstationsscript von @SBorg um Daten meiner Wetterstation in ioBroker zu bekommen.
      Ich habe gerad mal wieder eine kreative Phase um alles etwas schöner in VIS darzustellen.
      Bei einem Thema benötige ich mal eure Hilfe.
      Durch das Script werden für jeden Monat die wichtigsten Daten in einem Datenpunkt abgelegt. Dieser sieht wie folgt aus:

      [
        {
          "Tiefstwert": 5.27,
          "Hoechstwert": 33,
          "Temp_Durchschnitt": 18.79,
          "Max_Windboe": 21.88,
          "Max_Regenmenge": 8.1,
          "Regenmenge_Monat": 31.2,
          "warme_Tage": 22,
          "Sommertage": 14,
          "heisse_Tage": 2,
          "Frost_Tage": 0,
          "kalte_Tage": 0,
          "Eistage": 0,
          "sehr_kalte_Tage": 0
        }
      ]
      

      Ich würde diese Datenpunkte jetzt gerne zu einem großen JSON zusammen bauen, damit ich ein großes JSON File habe und dieses dann in einem Tabellen Widget nutzen kann.

      Leider bekomme ich das nicht wirklich hin.
      Hat jemand eine Idee wie ich das in einem Script erledigen kann?

      Gruß
      Michael

      haus-automatisierungH Offline
      haus-automatisierungH Offline
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @mctom sagte in JSON Datensätze verbinden:

      Hat jemand eine Idee wie ich das in einem Script erledigen kann?

      Klar, Du hast ja ein Array aus Objekten. Du musst einfach nur ein weiteres Element an dein Array packen. Also lesen, Array Element (als Objekt) hinzufügen, speichern.

      Jetzt wäre es etwas sinnfrei, Dir ein Beispiel-Script zu schreiben ohne die Datenpunkte usw. zu kennen. Zeig doch mal woher die Daten kommen sollen und wohin sie geschrieben werden müssen. Dann ist das einfacher als wenn Du am Ende ein Beispiel übertragen musst.

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      M 1 Antwort Letzte Antwort
      0
      • haus-automatisierungH haus-automatisierung

        @mctom sagte in JSON Datensätze verbinden:

        Hat jemand eine Idee wie ich das in einem Script erledigen kann?

        Klar, Du hast ja ein Array aus Objekten. Du musst einfach nur ein weiteres Element an dein Array packen. Also lesen, Array Element (als Objekt) hinzufügen, speichern.

        Jetzt wäre es etwas sinnfrei, Dir ein Beispiel-Script zu schreiben ohne die Datenpunkte usw. zu kennen. Zeig doch mal woher die Daten kommen sollen und wohin sie geschrieben werden müssen. Dann ist das einfacher als wenn Du am Ende ein Beispiel übertragen musst.

        M Offline
        M Offline
        mctom
        schrieb am zuletzt editiert von
        #3

        @haus-automatisierung
        Danke für deine Hilfe.
        Ich habe jetzt folgendes Script erstellt:

         function arrayzusammen(){
        
            let daten1 = getState('0_userdata.0.wetter.wetterstation.statistik.Data.2023.04').val
            let daten2 = getState('0_userdata.0.wetter.wetterstation.statistik.Data.2023.05').val
        
            let myArray=[]
             myArray.push(daten1)
             myArray.push(daten2)
         log(myArray)
        
        
         }
         
        
         arrayzusammen()
        

        Das Problem hierbei ist, dass der 2.Datenpunkt falsch / mehrfach im Array hinzugefügt wird:

        script.js.Klima.wetterstation.tabelle_wetterstation_2: [[{'Tiefstwert':-0.8,'Hoechstwert':22,'Temp_Durchschnitt':8.68,'Max_Windboee':29.51,'Max_Regenmenge':0,'Regenmenge_Monat':0,'warme_Tage':2,'Sommertage':0,'heisse_Tage':0,'Frost_Tage':1,'kalte_Tage':0,'Eistage':0,'sehr_kalte_Tage':0,'Wuestentage':0,'Tropennaechte':0,'Regentage':0},'[{\'Tiefstwert\':4,\'Hoechstwert\':27,\'Temp_Durchschnitt\':15.75,\'Max_Windboee\':23.75,\'Max_Regenmenge\':15.011,\'Regenmenge_Monat\':55.86,\'warme_Tage\':19,\'Sommertage\':3,\'heisse_Tage\':0,\'Frost_Tage\':0,\'kalte_Tage\':0,\'Eistage\':0,\'sehr_kalte_Tage\':0,\'Wuestentage\':0,\'Tropennaechte\':0,\'Regentage\':24}]','[{\'Tiefstwert\':4,\'Hoechstwert\':27,\'Temp_Durchschnitt\':15.75,\'Max_Windboee\':23.75,\'Max_Regenmenge\':15.011,\'Regenmenge_Monat\':55.86,\'warme_Tage\':19,\'Sommertage\':3,\'heisse_Tage\':0,\'Frost_Tage\':0,\'kalte_Tage\':0,\'Eistage\':0,\'sehr_kalte_Tage\':0,\'Wuestentage\':0,\'Tropennaechte\':0,\'Regentage\':24}]','[{\'Tiefstwert\':4,\'Hoechstwert\':27,\'Temp_Durchschnitt\':15.75,\'Max_Windboee\':23.75,\'Max_Regenmenge\':15.011,\'Regenmenge_Monat\':55.86,\'warme_Tage\':19,\'Sommertage\':3,\'heisse_Tage\':0,\'Frost_Tage\':0,\'kalte_Tage\':0,\'Eistage\':0,\'sehr_kalte_Tage\':0,\'Wuestentage\':0,\'Tropennaechte\':0,\'Regentage\':24}]'],'[{\'Tiefstwert\':4,\'Hoechstwert\':27,\'Temp_Durchschnitt\':15.75,\'Max_Windboee\':23.75,\'Max_Regenmenge\':15.011,\'Regenmenge_Monat\':55.86,\'warme_Tage\':19,\'Sommertage\':3,\'heisse_Tage\':0,\'Frost_Tage\':0,\'kalte_Tage\':0,\'Eistage\':0,\'sehr_kalte_Tage\':0,\'Wuestentage\':0,\'Tropennaechte\':0,\'Regentage\':24}]']
        
        haus-automatisierungH 1 Antwort Letzte Antwort
        0
        • M mctom

          @haus-automatisierung
          Danke für deine Hilfe.
          Ich habe jetzt folgendes Script erstellt:

           function arrayzusammen(){
          
              let daten1 = getState('0_userdata.0.wetter.wetterstation.statistik.Data.2023.04').val
              let daten2 = getState('0_userdata.0.wetter.wetterstation.statistik.Data.2023.05').val
          
              let myArray=[]
               myArray.push(daten1)
               myArray.push(daten2)
           log(myArray)
          
          
           }
           
          
           arrayzusammen()
          

          Das Problem hierbei ist, dass der 2.Datenpunkt falsch / mehrfach im Array hinzugefügt wird:

          script.js.Klima.wetterstation.tabelle_wetterstation_2: [[{'Tiefstwert':-0.8,'Hoechstwert':22,'Temp_Durchschnitt':8.68,'Max_Windboee':29.51,'Max_Regenmenge':0,'Regenmenge_Monat':0,'warme_Tage':2,'Sommertage':0,'heisse_Tage':0,'Frost_Tage':1,'kalte_Tage':0,'Eistage':0,'sehr_kalte_Tage':0,'Wuestentage':0,'Tropennaechte':0,'Regentage':0},'[{\'Tiefstwert\':4,\'Hoechstwert\':27,\'Temp_Durchschnitt\':15.75,\'Max_Windboee\':23.75,\'Max_Regenmenge\':15.011,\'Regenmenge_Monat\':55.86,\'warme_Tage\':19,\'Sommertage\':3,\'heisse_Tage\':0,\'Frost_Tage\':0,\'kalte_Tage\':0,\'Eistage\':0,\'sehr_kalte_Tage\':0,\'Wuestentage\':0,\'Tropennaechte\':0,\'Regentage\':24}]','[{\'Tiefstwert\':4,\'Hoechstwert\':27,\'Temp_Durchschnitt\':15.75,\'Max_Windboee\':23.75,\'Max_Regenmenge\':15.011,\'Regenmenge_Monat\':55.86,\'warme_Tage\':19,\'Sommertage\':3,\'heisse_Tage\':0,\'Frost_Tage\':0,\'kalte_Tage\':0,\'Eistage\':0,\'sehr_kalte_Tage\':0,\'Wuestentage\':0,\'Tropennaechte\':0,\'Regentage\':24}]','[{\'Tiefstwert\':4,\'Hoechstwert\':27,\'Temp_Durchschnitt\':15.75,\'Max_Windboee\':23.75,\'Max_Regenmenge\':15.011,\'Regenmenge_Monat\':55.86,\'warme_Tage\':19,\'Sommertage\':3,\'heisse_Tage\':0,\'Frost_Tage\':0,\'kalte_Tage\':0,\'Eistage\':0,\'sehr_kalte_Tage\':0,\'Wuestentage\':0,\'Tropennaechte\':0,\'Regentage\':24}]'],'[{\'Tiefstwert\':4,\'Hoechstwert\':27,\'Temp_Durchschnitt\':15.75,\'Max_Windboee\':23.75,\'Max_Regenmenge\':15.011,\'Regenmenge_Monat\':55.86,\'warme_Tage\':19,\'Sommertage\':3,\'heisse_Tage\':0,\'Frost_Tage\':0,\'kalte_Tage\':0,\'Eistage\':0,\'sehr_kalte_Tage\':0,\'Wuestentage\':0,\'Tropennaechte\':0,\'Regentage\':24}]']
          
          haus-automatisierungH Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von haus-automatisierung
          #4

          @mctom Welche Rolle haben denn die beiden Datenpunkte? Wenn die Rolle Objekt oder Array ist, dann wird automatisch ein JSON.parse durchgeführt (das scheint bei 2023.04 zu klappen). Der zweite Wert liefert allerdings einen JSON-String zurück und kein Objekt/Array. Dadurch wird alles escaped und landet als String im Array. Also:

          • Rollen der Datenpunkte kontrollieren und ggf. korrigieren
          • Je nach Rolle ist ggf. ein JSON.parse() nach dem Lesen nötig
          • Dein Problem ist aktuell, dass in den Datenpunkten schon jeweils ein Array mit nur einem Eintrag zurückkommt. Also
          [
            {
              ...
            }
          ]
          

          Daher müsstest Du mit concat arbeiten, um die Array zu verbinden. Oder dafür sorgen, dass in den anderen Datenpunkten nur ein Objekt steht (wozu das Array?).

          Idealerweise:

          1. Stellst Du die Quell-Datenpunkte auf die Rolle object
          2. Sorgst dafür, dass nur ein Objekt als Wert enthalten ist. Also keine eckigen Klammern irgendwo
          3. Arbeitest dann mit deinem bisherigen Code

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          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

          340

          Online

          32.6k

          Benutzer

          82.2k

          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