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: json tabelle erstellen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

gelöst: json tabelle erstellen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
8 Beiträge 2 Kommentatoren 479 Aufrufe 1 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
    michihorn
    schrieb am zuletzt editiert von michihorn
    #1

    Hallo
    ich möchte gerne eine json-Tabelle erstellen. (habe ich noch nie gemacht)
    Inhalt soll einmal monatlich am letzten Tag des Monats der Zählerwert des Smartmeter Adapters sein. Das bedeutet, jeden Monat soll eine neue Zeile erstellt werden mit den Feldnamen Monat/Jahr und Zählerwert. Kann mich jemand mal in die richtige Richtung schupsen?
    Gruß
    Michael

    paul53P 1 Antwort Letzte Antwort
    0
    • M michihorn

      Hallo
      ich möchte gerne eine json-Tabelle erstellen. (habe ich noch nie gemacht)
      Inhalt soll einmal monatlich am letzten Tag des Monats der Zählerwert des Smartmeter Adapters sein. Das bedeutet, jeden Monat soll eine neue Zeile erstellt werden mit den Feldnamen Monat/Jahr und Zählerwert. Kann mich jemand mal in die richtige Richtung schupsen?
      Gruß
      Michael

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

      @michihorn sagte: in die richtige Richtung schupsen?

      const idZaehler = 'abc';
      const idJSON = '0_userdata.0.xyz';
      
      const arr = JSON.parse(getState(idJSON).val); // Mind. ein '[]' muss vorhanden sein
      
      schedule('50 59 23 * * *', function() {
          const tomorrow = Date.now() + 20000;
          if(new Date(tomorrow).getDate() == 1) {
              const obj = {
                  'Monat/Jahr': formatDate(new Date(), 'MM/YYYY'),
                  'Zählerstand': getState(idZaehler).val
              };
              arr.push(obj);
              // Anzahl Einträge verringern? 
              setState(idJSON, JSON.stringify(arr), true);
          }
      });
      

      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
      1
      • M Offline
        M Offline
        michihorn
        schrieb am zuletzt editiert von michihorn
        #3

        @paul53 sagte in json tabelle erstellen:

        const idJSON = '0_userdata.0.xyz';

        Hallo Paul,
        zum Testen habe ich für idZähler, den aktuellen Verbrauch genommen,
        den DP idJSON hast Du als Zustandstyp "json" in den Objecten angelegt?
        Denn ich komme folgende Warnmeldungen

        const idZaehler = 'smartmeter.0.1-0:16_7_0__255.value';
        const idJSON = '0_userdata.0.Haus.Energie.Strom_JSON';
         
        const arr = JSON.parse(getState(idJSON).val);
        
        
        schedule('50 59 23 * * *', function() {
            const tomorrow = Date.now() + 20000;
            if(new Date(tomorrow).getDate() == 1) {
                const obj = {
                    'Monat/Jahr': formatDate(new Date(), 'MM/YYYY'),
                    'Zählerstand': getState(idZaehler).val
                };
                arr.push(obj);
                 //Anzahl Einträge verringern? 
                setState(idJSON, JSON.stringify(arr), true);
            }
        });
        
        11:14:54.661	info	javascript.0 (1239) Start javascript script.js.Trash.Skript_1json
        11:14:54.669	warn	javascript.0 (1239) at script.js.Trash.Skript_1json:4:24
        11:14:54.669	warn	javascript.0 (1239) at script.js.Trash.Skript_1json:20:3
        11:14:54.683	info	javascript.0 (1239) script.js.Trash.Skript_1json: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
        
        paul53P 1 Antwort Letzte Antwort
        0
        • M michihorn

          @paul53 sagte in json tabelle erstellen:

          const idJSON = '0_userdata.0.xyz';

          Hallo Paul,
          zum Testen habe ich für idZähler, den aktuellen Verbrauch genommen,
          den DP idJSON hast Du als Zustandstyp "json" in den Objecten angelegt?
          Denn ich komme folgende Warnmeldungen

          const idZaehler = 'smartmeter.0.1-0:16_7_0__255.value';
          const idJSON = '0_userdata.0.Haus.Energie.Strom_JSON';
           
          const arr = JSON.parse(getState(idJSON).val);
          
          
          schedule('50 59 23 * * *', function() {
              const tomorrow = Date.now() + 20000;
              if(new Date(tomorrow).getDate() == 1) {
                  const obj = {
                      'Monat/Jahr': formatDate(new Date(), 'MM/YYYY'),
                      'Zählerstand': getState(idZaehler).val
                  };
                  arr.push(obj);
                   //Anzahl Einträge verringern? 
                  setState(idJSON, JSON.stringify(arr), true);
              }
          });
          
          11:14:54.661	info	javascript.0 (1239) Start javascript script.js.Trash.Skript_1json
          11:14:54.669	warn	javascript.0 (1239) at script.js.Trash.Skript_1json:4:24
          11:14:54.669	warn	javascript.0 (1239) at script.js.Trash.Skript_1json:20:3
          11:14:54.683	info	javascript.0 (1239) script.js.Trash.Skript_1json: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @michihorn sagte: ich komme folgende Warnmeldungen

          Trage manuell ein leeres Array [] ein.

          @michihorn sagte in json tabelle erstellen:

          für idZähler, den aktuellen Verbrauch genommen,

          Du meinst den Zählerstand in kWh?

          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

          M 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @michihorn sagte: ich komme folgende Warnmeldungen

            Trage manuell ein leeres Array [] ein.

            @michihorn sagte in json tabelle erstellen:

            für idZähler, den aktuellen Verbrauch genommen,

            Du meinst den Zählerstand in kWh?

            M Offline
            M Offline
            michihorn
            schrieb am zuletzt editiert von michihorn
            #5

            @paul53 sagte in json tabelle erstellen:

            Du meinst den Zählerstand in kWh?

            Nein in Watt

            Möglicherweise habe ich deine Anweisung falsch gedeutet, das leere Array habe ich in den Objekten eingetragen, die Warnmeldung ist weg. Wie kann ich das Script auf Funktion test, den Schedule auf "minütlich" setzen reicht nicht

            paul53P 2 Antworten Letzte Antwort
            0
            • M michihorn

              @paul53 sagte in json tabelle erstellen:

              Du meinst den Zählerstand in kWh?

              Nein in Watt

              Möglicherweise habe ich deine Anweisung falsch gedeutet, das leere Array habe ich in den Objekten eingetragen, die Warnmeldung ist weg. Wie kann ich das Script auf Funktion test, den Schedule auf "minütlich" setzen reicht nicht

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

              @michihorn sagte: Nein in Watt

              Das ist die momentane Leistung!

              Du möchtest den Zählerstand in die Tabelle schreiben oder den Monatsverbrauch? Falls Monatsverbrauch, dann wird ein Hilfs-Datenpunkt benötigt, in dem sich der Zählerstand am Monatsende gemerkt wird.

              @michihorn sagte in json tabelle erstellen:

              die Warnmeldung ist allerdings beblieben

              Ich meinte auch: [] manuell im Tab "Objekte" eintragen. Sonst im Skript:

              var arr = [];
              if(getState(idJSON).val) arr = JSON.parse(getState(idJSON).val);
              

              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
              • M michihorn

                @paul53 sagte in json tabelle erstellen:

                Du meinst den Zählerstand in kWh?

                Nein in Watt

                Möglicherweise habe ich deine Anweisung falsch gedeutet, das leere Array habe ich in den Objekten eingetragen, die Warnmeldung ist weg. Wie kann ich das Script auf Funktion test, den Schedule auf "minütlich" setzen reicht nicht

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

                @michihorn sagte: Wie kann ich das Script auf Funktion test

                Den Monatswechsel abwarten.

                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

                M 1 Antwort Letzte Antwort
                2
                • paul53P paul53

                  @michihorn sagte: Wie kann ich das Script auf Funktion test

                  Den Monatswechsel abwarten.

                  M Offline
                  M Offline
                  michihorn
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 sagte in json tabelle erstellen:

                  Den Monatswechsel abwarten.

                  :relaxed: So lange kann ich nicht mehr warten. Hab mal ganz brutal alles ausgeklammert:

                  const idZaehler = 'smartmeter.0.1-0:1_8_0__255.value';
                  const idJSON = '0_userdata.0.Haus.Energie.Strom_JSON';
                  
                  var arr = JSON.parse(getState(idJSON).val);
                  
                  //schedule('50 59 23 * * *', function() {
                  schedule("*/1 * * * *", function () {
                      var txt = '💬 Neuer Zählerstand gespeichert für ' + formatDate((Date.now()), "MM.JJ");
                      WhatsAppBot([0], txt);
                  
                      //const tomorrow = Date.now() + 20000;
                      //const tomorrow = Date.now();
                      //if (new Date(tomorrow).getDate() == 1) {
                          const obj = {
                              'Monat/Jahr': formatDate(new Date(), 'MM/YYYY'),
                              'Zählerstand': getState(idZaehler).val
                          };
                          arr.push(obj);
                          //Anzahl Einträge verringern? 
                          setState(idJSON, JSON.stringify(arr), true);
                    //  }
                  });
                  

                  Das Ergebnis in den Objekten sieht wie erwartet aus:

                  [{"Monat/Jahr":"01/2024","Zählerstand":3178.1119}]
                  

                  Das ganze dann in einer Tabelle:
                  zählerstand.png

                  Danke Paul

                  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

                  901

                  Online

                  32.4k

                  Benutzer

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