Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. json(<key>) liefert "undefined" im Binding

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      Pulsar07 last edited by

      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

      Homoran bahnuhr 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Pulsar07 last edited by

        @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 1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active @Pulsar07 last edited by

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

          1 Reply Last reply Reply Quote 0
          • P
            Pulsar07 @Homoran last edited by Pulsar07

            @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 Reply Last reply Reply Quote 0
            • P
              Pulsar07 last edited by

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

              und wenn du dies ergänzt mit
              .tofixed

              habe ich probiert, bringt keine Änderung

              bahnuhr 1 Reply Last reply Reply Quote 0
              • bahnuhr
                bahnuhr Forum Testing Most Active @Pulsar07 last edited by

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

                1 Reply Last reply Reply Quote 0
                • P
                  Pulsar07 last edited by

                  @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

                  bahnuhr 1 Reply Last reply Reply Quote 0
                  • bahnuhr
                    bahnuhr Forum Testing Most Active @Pulsar07 last edited by

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

                    Klappt dies auch nicht ?

                    P 1 Reply Last reply Reply Quote 0
                    • P
                      Pulsar07 @bahnuhr last edited by

                      @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

                      bahnuhr 1 Reply Last reply Reply Quote 0
                      • bahnuhr
                        bahnuhr Forum Testing Most Active @Pulsar07 last edited by

                        @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

                        1 Reply Last reply Reply Quote 0
                        • OliverIO
                          OliverIO last edited by

                          @pulsar07

                          Damit könntest du dir dein eigenes Widget bauen

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

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          640
                          Online

                          31.7k
                          Users

                          79.6k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          330
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo