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 Sperriges JSON vom Tasmota Stromzähler Script

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    13
    1
    147

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

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

GELÖST Sperriges JSON vom Tasmota Stromzähler Script

Scheduled Pinned Locked Moved JavaScript
9 Posts 3 Posters 644 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.
  • MartinPM Online
    MartinPM Online
    MartinP
    wrote on last edited by MartinP
    #1

    JSON Knoten, deren Namen mit einer Ziffer beginnen scheinen Javascript nicht zu behagen!

    Das ist ein MQTT-JSON, was vom Tasmota Stromzähler Script erzeugt wird:

    var content = {
        "Time": "2024-11-18T11:04:23",
        "Switch1": "OFF",
        "OP": {
            "1_8_0": 16263845.96161001,
            "16_7_0": 494.64999999999998,
            "36_7_0": 323.36000000000001,
            "56_7_0": 106.26000000000001,
            "76_7_0": 65.030000000000001,
            "32_7_0": 230.59999999999999,
            "52_7_0": 228.09999999999999,
            "72_7_0": 227.5,
            "96_1_0": "1EBZ..........."
        }
    };
    log(content.OP.16_7_0);
    

    Führende Ziffern in Node-Namen führen anscheinend zu Ungemach, wird schon beim Eintippen unterschlängelt ...

    Kann man das irgendwie doch sauber im Javascript verarbeiten, oder muss das im Tasmota-Script bereinigt werden?

    Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
    Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
    Linux pve 6.17.9-1-pve
    6 GByte RAM für den Container
    Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
    Remote-Access über Wireguard der Fritzbox

    paul53P CodierknechtC 2 Replies Last reply
    0
    • MartinPM MartinP

      JSON Knoten, deren Namen mit einer Ziffer beginnen scheinen Javascript nicht zu behagen!

      Das ist ein MQTT-JSON, was vom Tasmota Stromzähler Script erzeugt wird:

      var content = {
          "Time": "2024-11-18T11:04:23",
          "Switch1": "OFF",
          "OP": {
              "1_8_0": 16263845.96161001,
              "16_7_0": 494.64999999999998,
              "36_7_0": 323.36000000000001,
              "56_7_0": 106.26000000000001,
              "76_7_0": 65.030000000000001,
              "32_7_0": 230.59999999999999,
              "52_7_0": 228.09999999999999,
              "72_7_0": 227.5,
              "96_1_0": "1EBZ..........."
          }
      };
      log(content.OP.16_7_0);
      

      Führende Ziffern in Node-Namen führen anscheinend zu Ungemach, wird schon beim Eintippen unterschlängelt ...

      Kann man das irgendwie doch sauber im Javascript verarbeiten, oder muss das im Tasmota-Script bereinigt werden?

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      @martinp

      log(content.OP['16_7_0']);
      

      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 Reply Last reply
      1
      • MartinPM MartinP

        JSON Knoten, deren Namen mit einer Ziffer beginnen scheinen Javascript nicht zu behagen!

        Das ist ein MQTT-JSON, was vom Tasmota Stromzähler Script erzeugt wird:

        var content = {
            "Time": "2024-11-18T11:04:23",
            "Switch1": "OFF",
            "OP": {
                "1_8_0": 16263845.96161001,
                "16_7_0": 494.64999999999998,
                "36_7_0": 323.36000000000001,
                "56_7_0": 106.26000000000001,
                "76_7_0": 65.030000000000001,
                "32_7_0": 230.59999999999999,
                "52_7_0": 228.09999999999999,
                "72_7_0": 227.5,
                "96_1_0": "1EBZ..........."
            }
        };
        log(content.OP.16_7_0);
        

        Führende Ziffern in Node-Namen führen anscheinend zu Ungemach, wird schon beim Eintippen unterschlängelt ...

        Kann man das irgendwie doch sauber im Javascript verarbeiten, oder muss das im Tasmota-Script bereinigt werden?

        CodierknechtC Online
        CodierknechtC Online
        Codierknecht
        Developer Most Active
        wrote on last edited by Codierknecht
        #3

        @martinp sagte in Sperriges JSON vom Tasmota Stromzähler Script:

        Kann man das irgendwie im Tasmota-Script bereinigen?

        Wenn Du das zeigen würdest ;-)

        >D
        >B
        =>sensor53 r 
        >M 1
        +1,1,s,0,9600,eHZM
        1,77070100100700ff@1,Leistung,W,Power_curr,0
        1,77070100010800ff@1000,Verbrauch,KWh,Total_in,1
        1,77070100010801ff@1,Tarif1,Wh,Tarif1_in,1
        1,77070100010802ff@1,Tarif2,Wh,Tarif2_in,1
        1,=h<hr/> 
        1,77070100020800ff@1000,Einspeisung,kWh,Einspeisung,4
        #
        

        Der 5. Wert in den Zeilen 6-9 und 11 sollte der Name sein, der im Telegramm verwendet wird.
        Den kannst Du ja frei wählen.

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        1 Reply Last reply
        0
        • MartinPM Online
          MartinPM Online
          MartinP
          wrote on last edited by
          #4

          @Codierknecht

          >D
          >B
          ; TelePeriod 30
          =>sensor53 r
          >M 1
          ; Device: eBZ DD3 2R06 ODZ1
          ; protocol is D0 OBIS ASCII
          ; 9600@7E1 for OP-type devices, 9600@8N1 for SM-type devices
          +1,3,o,0,9600,OP,1
          ; Zählerstand zu +A, tariflos, 
          ; Zählerstände Auflösung 10 µW*h (6 Vorkomma- und 8 Nachkommastellen)
          1,1-0:1.8.0*255(@0.001,Energie Bezug,Wh,1_8_0,8
          ; Zählerstand zu +A, Tarif 1
          ; 1,1-0:1.8.1*255(@0.001,Energie Bezug T1,Wh,1_8_1,8
          ; Zählerstand zu +A, Tarif 2
          ; 1,1-0:1.8.2*255(@0.001,Energie Bezug T2,Wh,1_8_2,8
          ; Zählerstand zu -A, tariflos
          ; 1,1-0:2.8.0*255(@0.001,Energie Export,Wh,2_8_0,8
          ; Summe der Momentan-Leistungen in allen Phasen, Auflösung 0,01W (5 Vorkomma- und 2 Nachkommastellen)
          1,1-0:16.7.0*255(@1,Leistung,W,16_7_0,18
          ; Momentane Leistung in Phase Lx, Auflösung 0,01W (5 Vorkomma- und 2 Nachkommastellen)
          1,1-0:36.7.0*255(@1,Leistung L1,W,36_7_0,18
          1,1-0:56.7.0*255(@1,Leistung L2,W,56_7_0,18
          1,1-0:76.7.0*255(@1,Leistung L3,W,76_7_0,18
          ; Spannung in Phase Lx, Auflösung 0,1V (nur über MSB)
          1,1-0:32.7.0*255(@1,Spannung L1,V,32_7_0,1
          1,1-0:52.7.0*255(@1,Spannung L2,V,52_7_0,1
          1,1-0:72.7.0*255(@1,Spannung L3,V,72_7_0,1
          ; Statuswort, 4 Byte Information über den Betriebszustand, HEX string
          ; tasmota can decode one string per device only!
          ;1,1-0:96.5.0*255(@#),Status1,,96_5_0,0
          ;1,1-0:96.8.0*255(@#),Status2,,96_8_0,0
          ; Geräte-Identifikation, Nach DIN 43863-5 
          1,1-0:96.1.0*255(@#),Identifikation,,96_1_0,0
          ;1,1-0:0.0.0*255(@#),Identifikation,,0_0_0,0
          #
          

          Derzeit werte ich mit dem Sonoff Adapter aus, der kommt mit dem JSON-Format klar

          Danke für die Hilfe, werde mal schauen, ob ich da das Tasmota-Script anpasse, oder ob ich mit dem Index-Trick von @paul53 arbeitet

          Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
          Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
          Linux pve 6.17.9-1-pve
          6 GByte RAM für den Container
          Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
          Remote-Access über Wireguard der Fritzbox

          CodierknechtC 1 Reply Last reply
          0
          • MartinPM MartinP

            @Codierknecht

            >D
            >B
            ; TelePeriod 30
            =>sensor53 r
            >M 1
            ; Device: eBZ DD3 2R06 ODZ1
            ; protocol is D0 OBIS ASCII
            ; 9600@7E1 for OP-type devices, 9600@8N1 for SM-type devices
            +1,3,o,0,9600,OP,1
            ; Zählerstand zu +A, tariflos, 
            ; Zählerstände Auflösung 10 µW*h (6 Vorkomma- und 8 Nachkommastellen)
            1,1-0:1.8.0*255(@0.001,Energie Bezug,Wh,1_8_0,8
            ; Zählerstand zu +A, Tarif 1
            ; 1,1-0:1.8.1*255(@0.001,Energie Bezug T1,Wh,1_8_1,8
            ; Zählerstand zu +A, Tarif 2
            ; 1,1-0:1.8.2*255(@0.001,Energie Bezug T2,Wh,1_8_2,8
            ; Zählerstand zu -A, tariflos
            ; 1,1-0:2.8.0*255(@0.001,Energie Export,Wh,2_8_0,8
            ; Summe der Momentan-Leistungen in allen Phasen, Auflösung 0,01W (5 Vorkomma- und 2 Nachkommastellen)
            1,1-0:16.7.0*255(@1,Leistung,W,16_7_0,18
            ; Momentane Leistung in Phase Lx, Auflösung 0,01W (5 Vorkomma- und 2 Nachkommastellen)
            1,1-0:36.7.0*255(@1,Leistung L1,W,36_7_0,18
            1,1-0:56.7.0*255(@1,Leistung L2,W,56_7_0,18
            1,1-0:76.7.0*255(@1,Leistung L3,W,76_7_0,18
            ; Spannung in Phase Lx, Auflösung 0,1V (nur über MSB)
            1,1-0:32.7.0*255(@1,Spannung L1,V,32_7_0,1
            1,1-0:52.7.0*255(@1,Spannung L2,V,52_7_0,1
            1,1-0:72.7.0*255(@1,Spannung L3,V,72_7_0,1
            ; Statuswort, 4 Byte Information über den Betriebszustand, HEX string
            ; tasmota can decode one string per device only!
            ;1,1-0:96.5.0*255(@#),Status1,,96_5_0,0
            ;1,1-0:96.8.0*255(@#),Status2,,96_8_0,0
            ; Geräte-Identifikation, Nach DIN 43863-5 
            1,1-0:96.1.0*255(@#),Identifikation,,96_1_0,0
            ;1,1-0:0.0.0*255(@#),Identifikation,,0_0_0,0
            #
            

            Derzeit werte ich mit dem Sonoff Adapter aus, der kommt mit dem JSON-Format klar

            Danke für die Hilfe, werde mal schauen, ob ich da das Tasmota-Script anpasse, oder ob ich mit dem Index-Trick von @paul53 arbeitet

            CodierknechtC Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            wrote on last edited by
            #5

            @martinp sagte in GELÖST Sperriges JSON vom Tasmota Stromzähler Script:

            Derzeit werte ich mit dem Sonoff Adapter aus, der kommt mit dem JSON-Format klar

            Eben!
            Für alles mit Tasmota nehme ich ebenfalls den Sonoff.
            Da brauche ich nichts von Hand aus dem JSON zu extrahieren.

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            1 Reply Last reply
            0
            • MartinPM Online
              MartinPM Online
              MartinP
              wrote on last edited by MartinP
              #6

              @codierknecht Wollte ganz gerne so viel wie möglich auf einen externen Mosquitto Server umstellen, und von dort aus mit dem MQTT Broker/Client Adapter als Client zugreifen ...

              Habe mit dem Sonoff-Adapter seit neuestem merkwürdige Aussetzer ...
              Kann mir aber natürlich nicht sicher sein, ob es mit dem Mosquitto als Zwischenglied besser wird ...

              sonoff.0
              	2024-11-18 11:18:13.414	warn	Client [Stromzaehler_B5F63F] received pubrel on Stromzaehler_B5F63F for unknown messageId 31329
              sonoff.0
              	2024-11-18 11:18:13.415	warn	Client [Stromzaehler_B5F63F] received pubcomp for unknown message ID: 21609
              sonoff.0
              	2024-11-18 11:18:13.415	warn	Client [Stromzaehler_B5F63F] received pubrel on Stromzaehler_B5F63F for unknown messageId 25890
              sonoff.0
              	2024-11-18 11:18:13.415	info	Client [Stromzaehler_B5F63F] connection closed: Error: Cannot parse topic
              sonoff.0
              	2024-11-18 11:18:14.399	info	Client [Stromzaehler_B5F63F] connected with secret 1731925094398_606
              sonoff.0
              	2024-11-18 11:25:02.290	info	Client [Stromzaehler_B5F63F] reconnected. Old secret 1731925094398_606 ==> New secret 1731925502286_7992
              sonoff.0
              	2024-11-18 11:25:54.697	info	Client [Stromzaehler_B5F63F] reconnected. Old secret 1731925502286_7992 ==> New secret 1731925554686_4188
              sonoff.0
              	2024-11-18 11:26:05.662	warn	Client [Stromzaehler_B5F63F] cannot parse data"SENSOR": _{"Ti0U
              

              Aber womöglich liegt es auch am WLAN - die Fritzbox hat auch Logging zum Tasmota Device ...

              f53d0df6-7f4b-4f8f-8a10-de811c0ebc1e-grafik.png

              Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
              Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
              Linux pve 6.17.9-1-pve
              6 GByte RAM für den Container
              Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
              Remote-Access über Wireguard der Fritzbox

              1 Reply Last reply
              0
              • MartinPM Online
                MartinPM Online
                MartinP
                wrote on last edited by MartinP
                #7

                @martinp sagte in GELÖST Sperriges JSON vom Tasmota Stromzähler Script:

                JSON Knoten, deren Namen mit einer Ziffer beginnen scheinen Javascript nicht zu behagen!

                Das ist ein MQTT-JSON, was vom Tasmota Stromzähler Script erzeugt wird:

                var content = {
                    "Time": "2024-11-18T11:04:23",
                    "Switch1": "OFF",
                    "OP": {
                        "1_8_0": 16263845.96161001,
                        "16_7_0": 494.64999999999998,
                        "36_7_0": 323.36000000000001,
                        "56_7_0": 106.26000000000001,
                        "76_7_0": 65.030000000000001,
                        "32_7_0": 230.59999999999999,
                        "52_7_0": 228.09999999999999,
                        "72_7_0": 227.5,
                        "96_1_0": "1EBZ..........."
                    }
                };
                log(content.OP.16_7_0);
                

                Führende Ziffern in Node-Namen führen anscheinend zu Ungemach, wird schon beim Eintippen unterschlängelt ...

                Kann man das irgendwie doch sauber im Javascript verarbeiten, oder muss das im Tasmota-Script bereinigt werden?

                Mit Blockly und Jsonata habe ich auch eine Lösung gefunden:

                d4b00110-4615-4114-8dab-5c2229ce53aa-grafik.png

                (EDIT: ein kleines Suchbild - finde den Fehler ;-) )

                EDIT2: Hilfestellungen bei der Lösung:

                JSONATA Execiser: https://try.jsonata.org/
                Dokumentation $lookup(): https://docs.jsonata.org/object-functions

                423ecdf8-2248-495d-98cf-c6b0b35ac93f-grafik.png

                Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                Linux pve 6.17.9-1-pve
                6 GByte RAM für den Container
                Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                Remote-Access über Wireguard der Fritzbox

                MartinPM 1 Reply Last reply
                0
                • MartinPM MartinP

                  @martinp sagte in GELÖST Sperriges JSON vom Tasmota Stromzähler Script:

                  JSON Knoten, deren Namen mit einer Ziffer beginnen scheinen Javascript nicht zu behagen!

                  Das ist ein MQTT-JSON, was vom Tasmota Stromzähler Script erzeugt wird:

                  var content = {
                      "Time": "2024-11-18T11:04:23",
                      "Switch1": "OFF",
                      "OP": {
                          "1_8_0": 16263845.96161001,
                          "16_7_0": 494.64999999999998,
                          "36_7_0": 323.36000000000001,
                          "56_7_0": 106.26000000000001,
                          "76_7_0": 65.030000000000001,
                          "32_7_0": 230.59999999999999,
                          "52_7_0": 228.09999999999999,
                          "72_7_0": 227.5,
                          "96_1_0": "1EBZ..........."
                      }
                  };
                  log(content.OP.16_7_0);
                  

                  Führende Ziffern in Node-Namen führen anscheinend zu Ungemach, wird schon beim Eintippen unterschlängelt ...

                  Kann man das irgendwie doch sauber im Javascript verarbeiten, oder muss das im Tasmota-Script bereinigt werden?

                  Mit Blockly und Jsonata habe ich auch eine Lösung gefunden:

                  d4b00110-4615-4114-8dab-5c2229ce53aa-grafik.png

                  (EDIT: ein kleines Suchbild - finde den Fehler ;-) )

                  EDIT2: Hilfestellungen bei der Lösung:

                  JSONATA Execiser: https://try.jsonata.org/
                  Dokumentation $lookup(): https://docs.jsonata.org/object-functions

                  423ecdf8-2248-495d-98cf-c6b0b35ac93f-grafik.png

                  MartinPM Online
                  MartinPM Online
                  MartinP
                  wrote on last edited by MartinP
                  #8

                  Frage zu einem weiteren Lösungsansatz ohne JSONATA, mit Funktionsaufruf:

                  b385bc3b-1712-4494-8aed-4eba15241d75-grafik.png

                  Ist die Abfrage ob das Attribut gefunden wurde in der Funktion "TestVar" so korrekt?

                  Bei meinem Test funktioniert es zwar, aber das kann ja auch ein Einzelfall sein...

                  avascript.0	11:46:27.494	info	script.js.Spielwiese.Test: TestJson
                  javascript.0	11:46:27.497	info	script.js.Spielwiese.Test: 72_7_0 nicht gefunden
                  javascript.0	11:46:27.502	info	script.js.Spielwiese.Test: TestJson
                  javascript.0	11:46:27.502	info	script.js.Spielwiese.Test: 76_7_0=61.84
                  
                  

                  Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                  Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                  Linux pve 6.17.9-1-pve
                  6 GByte RAM für den Container
                  Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                  Remote-Access über Wireguard der Fritzbox

                  paul53P 1 Reply Last reply
                  0
                  • MartinPM MartinP

                    Frage zu einem weiteren Lösungsansatz ohne JSONATA, mit Funktionsaufruf:

                    b385bc3b-1712-4494-8aed-4eba15241d75-grafik.png

                    Ist die Abfrage ob das Attribut gefunden wurde in der Funktion "TestVar" so korrekt?

                    Bei meinem Test funktioniert es zwar, aber das kann ja auch ein Einzelfall sein...

                    avascript.0	11:46:27.494	info	script.js.Spielwiese.Test: TestJson
                    javascript.0	11:46:27.497	info	script.js.Spielwiese.Test: 72_7_0 nicht gefunden
                    javascript.0	11:46:27.502	info	script.js.Spielwiese.Test: TestJson
                    javascript.0	11:46:27.502	info	script.js.Spielwiese.Test: 76_7_0=61.84
                    
                    
                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #9

                    @martinp sagte: Ist die Abfrage ob das Attribut gefunden wurde in der Funktion "TestVar" so korrekt?

                    Wenn der Wert 0 kein gültiger Wert ist, funktioniert diese Prüfung.
                    Falls der Wert 0 ein gültiger Wert sein kann, prüfe "MyVal != null".

                    Blockly_temp.JPG

                    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 Reply Last reply
                    1
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    528

                    Online

                    32.7k

                    Users

                    82.4k

                    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