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. Visualisierung
  4. json(<key>) liefert "undefined" im Binding

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    680

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

json(<key>) liefert "undefined" im Binding

Geplant Angeheftet Gesperrt Verschoben Visualisierung
11 Beiträge 4 Kommentatoren 630 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.
  • P Pulsar07

    Nutze in Vis-2 das Styled - States Control Widget, für einen detailierten Schalter einer Tasmota-Steckdose, die über mqtt (iobroker.mqtt) angebunden ist.
    Das Tasmota Device schickt viele Detail-Attribute über einen JSON-String, der mittels der JSON() Funktion sehr leicht geparst werden kann:

    ({mqtt.0.tele.tasmota_DBDAE0.SENSOR;json(ENERGY.Power) })
    

    Der String der sich im SENSOR-Topic befindet sieht aus wie folgt:

    mqtt.0.tele.tasmota_DBDAE0.SENSOR.val:{"Time":"2025-03-14T08:40:26","ENERGY":{"TotalStartTime":"2020-05-05T11:42:36","Total":116.087,"Yesterday":0.100,"Today":0.033,"Period": 0,"Power": 0,"ApparentPower": 0,"ReactivePower": 0,"Factor":0.00,"Voltage": 0,"Current":0.000}} [string]
    

    Wie man sieht, gibt es einen Wert 0 zum Key "ENERGY.Power".
    Dieser Wert ist im Text / Title des Widgets eingefügt, um den aktuellen Stromverbrauch im Widget zu sehen.

    Jetzt zum Problem:
    Der Wert wird immer perfekt angezeigt, ausser, wenn der Wert 0 ist, dann gibt die json(ENERGY.Power)-Funktion den String "undefined" aus:
    Screenshot from 2025-03-14 08-50-59.png

    Habe per javascript versucht

    let sensorObj = JSON.parse(obj.state.val);
    let powerVal = sensorObj.ENERGY.Power;
    

    auf den Wert zu zugreifen. Hier funktioniert alles perfekt mit und ohne "0". Deshalb poste ich meine Frage mal hier im Bereich Visualisierung.
    Hat jemand eine Idee?

    Gruß Rainer

    HomoranH Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von
    #2

    @pulsar07 sagte in json(<key>) liefert "undefined" im Binding:

    Hat jemand eine Idee?

    nur ein Gedanke!
    hast du zusätzlich mal nach Zahl gewandelt?

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    P 1 Antwort Letzte Antwort
    0
    • P Pulsar07

      Nutze in Vis-2 das Styled - States Control Widget, für einen detailierten Schalter einer Tasmota-Steckdose, die über mqtt (iobroker.mqtt) angebunden ist.
      Das Tasmota Device schickt viele Detail-Attribute über einen JSON-String, der mittels der JSON() Funktion sehr leicht geparst werden kann:

      ({mqtt.0.tele.tasmota_DBDAE0.SENSOR;json(ENERGY.Power) })
      

      Der String der sich im SENSOR-Topic befindet sieht aus wie folgt:

      mqtt.0.tele.tasmota_DBDAE0.SENSOR.val:{"Time":"2025-03-14T08:40:26","ENERGY":{"TotalStartTime":"2020-05-05T11:42:36","Total":116.087,"Yesterday":0.100,"Today":0.033,"Period": 0,"Power": 0,"ApparentPower": 0,"ReactivePower": 0,"Factor":0.00,"Voltage": 0,"Current":0.000}} [string]
      

      Wie man sieht, gibt es einen Wert 0 zum Key "ENERGY.Power".
      Dieser Wert ist im Text / Title des Widgets eingefügt, um den aktuellen Stromverbrauch im Widget zu sehen.

      Jetzt zum Problem:
      Der Wert wird immer perfekt angezeigt, ausser, wenn der Wert 0 ist, dann gibt die json(ENERGY.Power)-Funktion den String "undefined" aus:
      Screenshot from 2025-03-14 08-50-59.png

      Habe per javascript versucht

      let sensorObj = JSON.parse(obj.state.val);
      let powerVal = sensorObj.ENERGY.Power;
      

      auf den Wert zu zugreifen. Hier funktioniert alles perfekt mit und ohne "0". Deshalb poste ich meine Frage mal hier im Bereich Visualisierung.
      Hat jemand eine Idee?

      Gruß Rainer

      bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #3

      @pulsar07 sagte in json(<key>) liefert "undefined" im Binding:

      let powerVal = sensorObj.ENERGY.Power;

      und wenn du dies ergänzt mit
      .tofixed

      Also wandeln in einen String.


      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @pulsar07 sagte in json(<key>) liefert "undefined" im Binding:

        Hat jemand eine Idee?

        nur ein Gedanke!
        hast du zusätzlich mal nach Zahl gewandelt?

        P Offline
        P Offline
        Pulsar07
        schrieb am zuletzt editiert von Pulsar07
        #4

        @homoran said in json(<key>) liefert "undefined" im Binding:

        nur ein Gedanke!
        hast du zusätzlich mal nach Zahl gewandelt?

        Bin bei den Bindings nicht sehr tief drin. Da ist viel zu viel implizites Wissen notwendig, das ich nirgends nachlesen kann.
        Es funktioniert NUR: {mqtt.0.tele.tasmota_DBDAE0.SENSOR;json(ENERGY.Power) }
        aber eben nur wenn in ENERGY.Power ein Wert ungleich 0 steht.
        Sobald ich versuche hier per Scripting was zu modifizieren, parsen, abschneiden, hinzufügen funktioniert alles nicht.
        Das jedoch alles Zahlen ausser 0 funktionieren, muss das ein Bug sein.

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          Pulsar07
          schrieb am zuletzt editiert von
          #5

          @bahnuhr said in json(<key>) liefert "undefined" im Binding:

          und wenn du dies ergänzt mit
          .tofixed

          habe ich probiert, bringt keine Änderung

          bahnuhrB 1 Antwort Letzte Antwort
          0
          • P Pulsar07

            @bahnuhr said in json(<key>) liefert "undefined" im Binding:

            und wenn du dies ergänzt mit
            .tofixed

            habe ich probiert, bringt keine Änderung

            bahnuhrB Online
            bahnuhrB Online
            bahnuhr
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #6

            @pulsar07 sagte in json(<key>) liefert "undefined" im Binding:

            @bahnuhr said in json(<key>) liefert "undefined" im Binding:

            und wenn du dies ergänzt mit
            .tofixed

            habe ich probiert, bringt keine Änderung

            glaub ich nicht.
            Bitte json als Text oder in code-tags hier einstellen.
            und auch dein binding.


            Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
            Danke.
            gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
            ScreenToGif :https://www.screentogif.com/downloads.html

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              Pulsar07
              schrieb am zuletzt editiert von
              #7

              @bahnuhr said in json(<key>) liefert "undefined" im Binding:

              Bitte json als Text oder in code-tags hier einstellen.
              und auch dein binding.

              JSON:

              {"Time":"2025-03-14T18:40:26","ENERGY":{"TotalStartTime":"2020-05-05T11:42:36","Total":116.135,"Yesterday":0.100,"Today":0.081,"Period": 1,"Power":10,"ApparentPower":19,"ReactivePower":16,"Factor":0.53,"Voltage":230,"Current":0.081}}
              

              Binding 1:

              Licht {mqtt.0.tele.tasmota_DBDAE0.SENSOR; json(ENERGY.Power) }
              

              Ergebnis:

              Licht 10
              

              (wenn das Wert im JSON-String = 0 ist ist das Ergebins "Licht undefined"

              Binding 2.Versuch:

              Licht {mqtt.0.tele.tasmota_DBDAE0.SENSOR; json(ENERGY.Power).toFixed(2) }
              

              Ergebnis:

              Licht undefined
              

              Screenshot from 2025-03-14 18-30-29.png
              Screenshot from 2025-03-14 18-31-08.png
              Screenshot from 2025-03-14 18-26-56.png

              bahnuhrB 1 Antwort Letzte Antwort
              0
              • P Pulsar07

                @bahnuhr said in json(<key>) liefert "undefined" im Binding:

                Bitte json als Text oder in code-tags hier einstellen.
                und auch dein binding.

                JSON:

                {"Time":"2025-03-14T18:40:26","ENERGY":{"TotalStartTime":"2020-05-05T11:42:36","Total":116.135,"Yesterday":0.100,"Today":0.081,"Period": 1,"Power":10,"ApparentPower":19,"ReactivePower":16,"Factor":0.53,"Voltage":230,"Current":0.081}}
                

                Binding 1:

                Licht {mqtt.0.tele.tasmota_DBDAE0.SENSOR; json(ENERGY.Power) }
                

                Ergebnis:

                Licht 10
                

                (wenn das Wert im JSON-String = 0 ist ist das Ergebins "Licht undefined"

                Binding 2.Versuch:

                Licht {mqtt.0.tele.tasmota_DBDAE0.SENSOR; json(ENERGY.Power).toFixed(2) }
                

                Ergebnis:

                Licht undefined
                

                Screenshot from 2025-03-14 18-30-29.png
                Screenshot from 2025-03-14 18-31-08.png
                Screenshot from 2025-03-14 18-26-56.png

                bahnuhrB Online
                bahnuhrB Online
                bahnuhr
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #8

                @pulsar07
                Dann probier es doch einmal mit einem Script.
                Und das Ergebnis dann in einen DP schreiben.

                Klappt dies auch nicht ?


                Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                Danke.
                gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                ScreenToGif :https://www.screentogif.com/downloads.html

                P 1 Antwort Letzte Antwort
                0
                • bahnuhrB bahnuhr

                  @pulsar07
                  Dann probier es doch einmal mit einem Script.
                  Und das Ergebnis dann in einen DP schreiben.

                  Klappt dies auch nicht ?

                  P Offline
                  P Offline
                  Pulsar07
                  schrieb am zuletzt editiert von
                  #9

                  @bahnuhr said in json(<key>) liefert "undefined" im Binding:

                  Dann probier es doch einmal mit einem Script.
                  Und das Ergebnis dann in einen DP schreiben.
                  Klappt dies auch nicht ?

                  Doch das klappt, ist aber keine Spaß, wenn man viele solcher Steckdosen hat. Ist eben ein echter Workaround.
                  Deshalb gibt es ja die json()-Funktion. Die Nutzung der json(<key>) Funktion im Binding ist eigentlich perfekt, nur der Bug bei Wert == 0 ist eben ein Fehler.

                  Bin noch nicht lange mit IOBroker unterwegs. Wo kann man solche Fehler einstellen / melden?

                  Was mich auch irritiert, ist dass man eigentlich im Binding (vis-2) eigentlich auch "rechnen" kann ({h:javascript.0.myCustom.height;w:javascript.0.myCustom.width;h*w}, das funktioniert aber mit dem json-Value überhaupt nicht. Habe versucht den rohen JSON-String in ne Variable zu schreiben und danach mittels String Operationen zu zu schneiden. Kann aber weder den rohen JSON-String bearbeiten noch den Value aus der JSON Funktion in der Art

                   {mqtt.0.tele.tasmota_DBDAE0.SENSOR;jval:json(ENERGY.Power):jval ? jval : "0" }
                  

                  Was gibt es denn da für Einschränkungen bzw. wo kann man nachlesen, was hier möglich ist?
                  Gruß Rainer

                  bahnuhrB 1 Antwort Letzte Antwort
                  0
                  • P Pulsar07

                    @bahnuhr said in json(<key>) liefert "undefined" im Binding:

                    Dann probier es doch einmal mit einem Script.
                    Und das Ergebnis dann in einen DP schreiben.
                    Klappt dies auch nicht ?

                    Doch das klappt, ist aber keine Spaß, wenn man viele solcher Steckdosen hat. Ist eben ein echter Workaround.
                    Deshalb gibt es ja die json()-Funktion. Die Nutzung der json(<key>) Funktion im Binding ist eigentlich perfekt, nur der Bug bei Wert == 0 ist eben ein Fehler.

                    Bin noch nicht lange mit IOBroker unterwegs. Wo kann man solche Fehler einstellen / melden?

                    Was mich auch irritiert, ist dass man eigentlich im Binding (vis-2) eigentlich auch "rechnen" kann ({h:javascript.0.myCustom.height;w:javascript.0.myCustom.width;h*w}, das funktioniert aber mit dem json-Value überhaupt nicht. Habe versucht den rohen JSON-String in ne Variable zu schreiben und danach mittels String Operationen zu zu schneiden. Kann aber weder den rohen JSON-String bearbeiten noch den Value aus der JSON Funktion in der Art

                     {mqtt.0.tele.tasmota_DBDAE0.SENSOR;jval:json(ENERGY.Power):jval ? jval : "0" }
                    

                    Was gibt es denn da für Einschränkungen bzw. wo kann man nachlesen, was hier möglich ist?
                    Gruß Rainer

                    bahnuhrB Online
                    bahnuhrB Online
                    bahnuhr
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #10

                    @pulsar07 sagte in json(<key>) liefert "undefined" im Binding:

                    Doch das klappt, ist aber keine Spaß

                    mir macht JS schon Spaß.
                    und wenn es mit binding nicht klappt ?!

                    @pulsar07 sagte in json(<key>) liefert "undefined" im Binding:

                    o kann man solche Fehler einstellen / melden?

                    auf github bei dem entsprechenden Adapter.

                    @pulsar07 sagte in json(<key>) liefert "undefined" im Binding:

                    vis-2

                    Nehm ich nicht. Sind mir noch zu viele Fehler drin (meine Meinung).

                    @pulsar07 sagte in json(<key>) liefert "undefined" im Binding:

                    Was gibt es denn da für Einschränkungen bzw. wo kann man nachlesen, was hier möglich ist?

                    keine Ahnung


                    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                    Danke.
                    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                    ScreenToGif :https://www.screentogif.com/downloads.html

                    1 Antwort Letzte Antwort
                    0
                    • OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      schrieb am zuletzt editiert von
                      #11

                      @pulsar07

                      Damit könntest du dir dein eigenes Widget bauen

                      https://forum.iobroker.net/topic/31521/test-widget-json-template?_=1742925069957

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      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

                      765

                      Online

                      32.6k

                      Benutzer

                      81.9k

                      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