Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    409

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

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

[gelöst] Json mit Unterwerten in Datenpunkt schreiben

Scheduled Pinned Locked Moved JavaScript
8 Posts 3 Posters 631 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    Ralf 8
    wrote on last edited by 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 Replies Last reply
    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
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by 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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          0
          • R Offline
            R Offline
            Ralf 8
            wrote on last edited by 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 Replies Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  638

                  Online

                  32.7k

                  Users

                  82.5k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe