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. [gelöst] Json mit Unterwerten in Datenpunkt schreiben

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst] Json mit Unterwerten in Datenpunkt schreiben

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 3 Kommentatoren 583 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.
  • R Offline
    R Offline
    Ralf 8
    schrieb am zuletzt editiert von Ralf 8
    #1

    Hallo,

    ich versuche einen etwas komplizierteren Json in einen Datenpunkt zu schreiben
    (und wieder einzulesen. Soweit bin ich aber noch gar nicht gekommen).

    Hier topic/14699 wird gezeigt wie es mit einem Array geht. Ich glaube mein Problem ist ähnlich, ich komme aber nicht weiter.

    Immer wenn mein Ecoflow Delta mal wieder offline geht, soll die Uhrzeit und Dauer so geloggt werden. Das können natürlich ganz unterschiedliche Anzahl von Werte-Paaren sein:

    Ist offlineData ein Array ?. Ich behandle es aktuell wie einen String.

    Der ganze Json soll so aussehen.
    Mit den Klammern [] bin ich mir nicht sicher:

    {
      "pro3em_total_act": 251258.62,
      "pro3em_total_act_return": 251258.62,
      "delta-2-max-offline": [
           {"time":"14.08.2024, 17:16","minute":5},
           {"time":"15.08.2024, 07:59","minute":3},
           {"time":"16.08.2024, 21:01","minute":13},
      ]
    }
    

    Offline-Daten in Variable zwischenspeichern:

    var offlineData = "";
    var offlineTimeAsString = "";
    var offlineMinutes = "";
    offlineTimeAsString = new Intl.DateTimeFormat( "de-DE", { dateStyle: 'medium', timeStyle: 'short' }).format(new Date(offlineTime));
    offlineData = offlineData + ',' + ({'time': offlineTimeAsString, 'minute': offlineMinutes });            
    
    

    Den Datenpunkt einmal am Tag mit Werten füllen:

    var json_data = ('pro3em_total_act':        obj.total_act_ret,
                   'pro3em_total_act_return': obj.total_act_ret,
                   'delta-2-max-offline':   offlineData
        });
    
                   
        createState(id, JSON.stringify(data), {
            name: id,
            role: 'state',
            type: 'string',
            'read': true,
            'write': true
        },  true );
    

    Das Ergebnis sieht leider so aus:

    {
      "pro3em_total_act": 251258.62,
      "pro3em_total_act_return": 251258.62,
      "delta-2-max-offline": "[\"\"]"
    }
    

    Für eure Hilfe bin ich dankbar.

    M paul53P 2 Antworten Letzte Antwort
    0
    • R Ralf 8

      Hallo,

      ich versuche einen etwas komplizierteren Json in einen Datenpunkt zu schreiben
      (und wieder einzulesen. Soweit bin ich aber noch gar nicht gekommen).

      Hier topic/14699 wird gezeigt wie es mit einem Array geht. Ich glaube mein Problem ist ähnlich, ich komme aber nicht weiter.

      Immer wenn mein Ecoflow Delta mal wieder offline geht, soll die Uhrzeit und Dauer so geloggt werden. Das können natürlich ganz unterschiedliche Anzahl von Werte-Paaren sein:

      Ist offlineData ein Array ?. Ich behandle es aktuell wie einen String.

      Der ganze Json soll so aussehen.
      Mit den Klammern [] bin ich mir nicht sicher:

      {
        "pro3em_total_act": 251258.62,
        "pro3em_total_act_return": 251258.62,
        "delta-2-max-offline": [
             {"time":"14.08.2024, 17:16","minute":5},
             {"time":"15.08.2024, 07:59","minute":3},
             {"time":"16.08.2024, 21:01","minute":13},
        ]
      }
      

      Offline-Daten in Variable zwischenspeichern:

      var offlineData = "";
      var offlineTimeAsString = "";
      var offlineMinutes = "";
      offlineTimeAsString = new Intl.DateTimeFormat( "de-DE", { dateStyle: 'medium', timeStyle: 'short' }).format(new Date(offlineTime));
      offlineData = offlineData + ',' + ({'time': offlineTimeAsString, 'minute': offlineMinutes });            
      
      

      Den Datenpunkt einmal am Tag mit Werten füllen:

      var json_data = ('pro3em_total_act':        obj.total_act_ret,
                     'pro3em_total_act_return': obj.total_act_ret,
                     'delta-2-max-offline':   offlineData
          });
      
                     
          createState(id, JSON.stringify(data), {
              name: id,
              role: 'state',
              type: 'string',
              'read': true,
              'write': true
          },  true );
      

      Das Ergebnis sieht leider so aus:

      {
        "pro3em_total_act": 251258.62,
        "pro3em_total_act_return": 251258.62,
        "delta-2-max-offline": "[\"\"]"
      }
      

      Für eure Hilfe bin ich dankbar.

      M Online
      M Online
      MCU
      schrieb am zuletzt editiert von
      #2

      @ralf-8

      let offlineData = [];
      ...
      offlineData.push({'time': offlineTimeAsString, 'minute': offlineMinutes })
      
      

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      1 Antwort Letzte Antwort
      0
      • R Ralf 8

        Hallo,

        ich versuche einen etwas komplizierteren Json in einen Datenpunkt zu schreiben
        (und wieder einzulesen. Soweit bin ich aber noch gar nicht gekommen).

        Hier topic/14699 wird gezeigt wie es mit einem Array geht. Ich glaube mein Problem ist ähnlich, ich komme aber nicht weiter.

        Immer wenn mein Ecoflow Delta mal wieder offline geht, soll die Uhrzeit und Dauer so geloggt werden. Das können natürlich ganz unterschiedliche Anzahl von Werte-Paaren sein:

        Ist offlineData ein Array ?. Ich behandle es aktuell wie einen String.

        Der ganze Json soll so aussehen.
        Mit den Klammern [] bin ich mir nicht sicher:

        {
          "pro3em_total_act": 251258.62,
          "pro3em_total_act_return": 251258.62,
          "delta-2-max-offline": [
               {"time":"14.08.2024, 17:16","minute":5},
               {"time":"15.08.2024, 07:59","minute":3},
               {"time":"16.08.2024, 21:01","minute":13},
          ]
        }
        

        Offline-Daten in Variable zwischenspeichern:

        var offlineData = "";
        var offlineTimeAsString = "";
        var offlineMinutes = "";
        offlineTimeAsString = new Intl.DateTimeFormat( "de-DE", { dateStyle: 'medium', timeStyle: 'short' }).format(new Date(offlineTime));
        offlineData = offlineData + ',' + ({'time': offlineTimeAsString, 'minute': offlineMinutes });            
        
        

        Den Datenpunkt einmal am Tag mit Werten füllen:

        var json_data = ('pro3em_total_act':        obj.total_act_ret,
                       'pro3em_total_act_return': obj.total_act_ret,
                       'delta-2-max-offline':   offlineData
            });
        
                       
            createState(id, JSON.stringify(data), {
                name: id,
                role: 'state',
                type: 'string',
                'read': true,
                'write': true
            },  true );
        

        Das Ergebnis sieht leider so aus:

        {
          "pro3em_total_act": 251258.62,
          "pro3em_total_act_return": 251258.62,
          "delta-2-max-offline": "[\"\"]"
        }
        

        Für eure Hilfe bin ich dankbar.

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @ralf-8 sagte: Den Datenpunkt einmal am Tag mit Werten füllen:

        Wenn der Datenpunkt einmal erstellt wurde, schreibt man ihn nicht mit createState(), sondern mit setState().
        Damit das Objekt einen Skriptstart übersteht, schreibt man das Objekt bei jeder Änderung in den Datenpunkt und man liest diesen Datenpunkt beim Skriptstart wieder ein.

        Was beinhalten diese zwei Attribute?

          "pro3em_total_act": 251258.62,
          "pro3em_total_act_return": 251258.62,
        

        EDIT: Soll das Array mit den Offlinezeiten und -dauern unendlich groß oder begrenzt werden?

        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

        R 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @ralf-8 sagte: Den Datenpunkt einmal am Tag mit Werten füllen:

          Wenn der Datenpunkt einmal erstellt wurde, schreibt man ihn nicht mit createState(), sondern mit setState().
          Damit das Objekt einen Skriptstart übersteht, schreibt man das Objekt bei jeder Änderung in den Datenpunkt und man liest diesen Datenpunkt beim Skriptstart wieder ein.

          Was beinhalten diese zwei Attribute?

            "pro3em_total_act": 251258.62,
            "pro3em_total_act_return": 251258.62,
          

          EDIT: Soll das Array mit den Offlinezeiten und -dauern unendlich groß oder begrenzt werden?

          R Offline
          R Offline
          Ralf 8
          schrieb am zuletzt editiert von Ralf 8
          #4

          @paul53
          Hallo,
          die zwei Werte sind Energiedaten aus dem Shelly Pro 3 EM in Watt für Einspeisung und Netzbezug von Strom (kleine PV-Anlage).

          Ich speichere noch weitere Einzelwerte, wollte das aber nicht unnötig komplizieren.

          Der Unterschied von createState und setState ist mir klar. Tatsächlich wird jeden Tag um 06:00 Uhr aber ein neuer Datenpunkt erstellt, so dass ich eine History meiner Energiedaten bekomme.

          1 Antwort Letzte Antwort
          0
          • R Offline
            R Offline
            Ralf 8
            schrieb am zuletzt editiert von Ralf 8
            #5

            @mcu

            Vielen Dank, das war tatsächlich die Lösung:

            @mcu sagte in Json mit Unterwerten in Datenpunkt schreiben und lesen:

            @ralf-8

            let offlineData = [];
            ...
            offlineData.push({'time': offlineTimeAsString, 'minute': offlineMinutes })
            
            

            Hat man Einfluss auf die Darstellung beim Anzeigen der Werte im Datenpunkt?
            Mit role und string (bei createState) habe ich herumexperimentiert, aber keine bessere Darstellung gefunden.

            Aktuell wird es so dargestellt wie der erste Unterwert
            Am liebsten hätte ich die Unterwerte aber in einer Zeile so wie die 4 gleichen Zeilen unten.

            {
              "delta-2-max-offline": [
                {
                  "time": "16.08.2024, 19:45",
                  "minute": 5
                },
                { "time": "16.08.2024, 19:45", "minute": 5  },
                { "time": "16.08.2024, 19:45", "minute": 5  },
                { "time": "16.08.2024, 19:45", "minute": 5  },
                { "time": "16.08.2024, 19:45", "minute": 5  }
              ]
            }
            
            M paul53P 2 Antworten Letzte Antwort
            0
            • R Ralf 8

              @mcu

              Vielen Dank, das war tatsächlich die Lösung:

              @mcu sagte in Json mit Unterwerten in Datenpunkt schreiben und lesen:

              @ralf-8

              let offlineData = [];
              ...
              offlineData.push({'time': offlineTimeAsString, 'minute': offlineMinutes })
              
              

              Hat man Einfluss auf die Darstellung beim Anzeigen der Werte im Datenpunkt?
              Mit role und string (bei createState) habe ich herumexperimentiert, aber keine bessere Darstellung gefunden.

              Aktuell wird es so dargestellt wie der erste Unterwert
              Am liebsten hätte ich die Unterwerte aber in einer Zeile so wie die 4 gleichen Zeilen unten.

              {
                "delta-2-max-offline": [
                  {
                    "time": "16.08.2024, 19:45",
                    "minute": 5
                  },
                  { "time": "16.08.2024, 19:45", "minute": 5  },
                  { "time": "16.08.2024, 19:45", "minute": 5  },
                  { "time": "16.08.2024, 19:45", "minute": 5  },
                  { "time": "16.08.2024, 19:45", "minute": 5  }
                ]
              }
              
              M Online
              M Online
              MCU
              schrieb am zuletzt editiert von
              #6

              @ralf-8 Das geht nicht, ist im Admin festgelegt.

              NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
              Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

              1 Antwort Letzte Antwort
              0
              • R Ralf 8

                @mcu

                Vielen Dank, das war tatsächlich die Lösung:

                @mcu sagte in Json mit Unterwerten in Datenpunkt schreiben und lesen:

                @ralf-8

                let offlineData = [];
                ...
                offlineData.push({'time': offlineTimeAsString, 'minute': offlineMinutes })
                
                

                Hat man Einfluss auf die Darstellung beim Anzeigen der Werte im Datenpunkt?
                Mit role und string (bei createState) habe ich herumexperimentiert, aber keine bessere Darstellung gefunden.

                Aktuell wird es so dargestellt wie der erste Unterwert
                Am liebsten hätte ich die Unterwerte aber in einer Zeile so wie die 4 gleichen Zeilen unten.

                {
                  "delta-2-max-offline": [
                    {
                      "time": "16.08.2024, 19:45",
                      "minute": 5
                    },
                    { "time": "16.08.2024, 19:45", "minute": 5  },
                    { "time": "16.08.2024, 19:45", "minute": 5  },
                    { "time": "16.08.2024, 19:45", "minute": 5  },
                    { "time": "16.08.2024, 19:45", "minute": 5  }
                  ]
                }
                
                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                @ralf-8 sagte: so wie die 4 gleichen Zeilen unten.

                Dort fehlen die Kommata zwischen den Objekten.

                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

                R 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @ralf-8 sagte: so wie die 4 gleichen Zeilen unten.

                  Dort fehlen die Kommata zwischen den Objekten.

                  R Offline
                  R Offline
                  Ralf 8
                  schrieb am zuletzt editiert von
                  #8

                  @paul53
                  habe ich korrigiert. Ich wollte nur kurz zeigen, wie ich es meine.
                  Anscheinend ist die Darstellung tatsächlich festgelegt entweder so oder als fortlaufender Text.

                  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

                  717

                  Online

                  32.6k

                  Benutzer

                  82.0k

                  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