Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. JSON String zu Datenpunkten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    JSON String zu Datenpunkten

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @mayli01 last edited by paul53

      @mayli01

      const idJson = 'mqtt.0...'; // ID eintragen
      const id180 = '0_userdata.0...'; // eigener Datenpunkt vom Typ Zahl
      // usw.
      
      on(idJson, function(dp) {
         let obj = JSON.parse(dp.state.val);
         setState(id180, obj['1.8.0'], true);
         // usw.
      });
      
      mayli01 1 Reply Last reply Reply Quote 0
      • mayli01
        mayli01 @paul53 last edited by

        @paul53
        Vielen danke für die schnelle Antwort!
        Anscheinend bin ich zu blöd für sowas... hab jetzt für den ersten Datenpunkt folgendes eingetragen:

        const idJson = 'mqtt.0.AMIS-Alex-Haushalt.Haushalt'; // ID eintragen (Datenpunkt der JSON)
        const id180 = ' mqtt.0.AMIS-Alex-Haushalt.180'; // eigener Datenpunkt vom Typ Zahl (Datenpunkt vom ersten Wert 1.8.0)
        // usw.
         
        on(idJson, function(dp) {
           let obj = JSON.parse(dp.stat.val);
           setState(id180, obj['1.8.0'], true);
           // usw.
        });
        

        Leider wird nichts ausgegeben...

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @mayli01 last edited by paul53

          @mayli01 sagte:

          Leider wird nichts ausgegeben...

          Der Wert vom Json-Datenpunkt muss sich erst ändern, damit getriggert wird.

          const id180 = ' mqtt.0.AMIS-Alex-Haushalt.180';
          

          Vor mqtt ist ein Leerzeichen im String !

          Eigene Datenpunkte sollte man nicht im Namensraum eines Adapters erstellen, da der Adapter die Objekte verwaltet, also auch löschen kann.

          mayli01 1 Reply Last reply Reply Quote 0
          • mayli01
            mayli01 @paul53 last edited by

            @paul53
            Der JSON Datenpunkt ändert sich alle 3 sec.
            Habs jetzt noch einmal neu gemacht aber trotzdem ohne erfolg 🙆‍♂️

            const idJson = 'mqtt.0.AMIS-Alex-Haushalt.Haushalt'/*AMIS-Alex-Haushalt/Haushalt*/; // ID eintragen
            const id180 = '0_userdata.0.AMIS.180'/*Amis 180*/; // eigener Datenpunkt vom Typ Zahl
            // usw.
             
            on(idJson, function(dp) {
               let obj = JSON.parse(dp.stat.val);
               setState(id180, obj['1.8.0'], true);
               // usw.
            });
            

            2020-09-17 15_39_13-objects - ioBroker.png
            2020-09-17 15_39_57-objects - ioBroker.png

            F 1 Reply Last reply Reply Quote 0
            • F
              fastfoot @mayli01 last edited by

              @mayli01 sagte in JSON String zu Datenpunkten:

              JSON.parse(dp.stat.val)

              schau doch mal was da falsch sein könnte 🙂

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @fastfoot last edited by

                @fastfoot sagte:

                Schau doch mal was da falsch sein könnte

                Sorry, ein e vergessen.

                   let obj = JSON.parse(dp.state.val);
                
                mayli01 F 2 Replies Last reply Reply Quote 0
                • mayli01
                  mayli01 @paul53 last edited by

                  @paul53
                  Danke! Wenn man keine Ahnung von Js hat fällt mir sowas bestimmt nicht auf🤦 👍

                  1 Reply Last reply Reply Quote 0
                  • F
                    fastfoot @paul53 last edited by

                    @paul53 sagte in JSON String zu Datenpunkten:

                    Sorry, ein e vergessen.

                    ich hatte das dem TE unterstellt, mir war nicht bewusst das das von Dir kam. Bei so vielen hilfreichen Beiträgen darf das aber schonmal passieren👍

                    hanss 1 Reply Last reply Reply Quote 0
                    • hanss
                      hanss @fastfoot last edited by

                      @paul53
                      Hallo Paul,
                      Wie bekomme ich die darunterliegende id von
                      "javascript.0.haus.Heizung.OG_Kueche.FensterOffen"
                      also
                      "javascript.0.haus.Heizung.OG_Kueche"
                      ohne einfach den String begrenzen, weil die Länge variabel ist.
                      Vielen Dank.

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @hanss last edited by paul53

                        @hanss sagte in JSON String zu Datenpunkten:

                        Wie bekomme ich die darunterliegende id

                        function parentId(id) {
                           return id.substring(0, id.lastIndexOf('.'));
                        }
                        
                        hanss 1 Reply Last reply Reply Quote 0
                        • hanss
                          hanss @paul53 last edited by

                          @paul53
                          vielen Dank, Du bist wirklich eine große Hilfe.

                          1 Reply Last reply Reply Quote 0
                          • B
                            bjappler last edited by bjappler

                            Hallo, ich habe diesen Beitrag gefunden und nutze das hier erwähnte script bisher erfolgreich für Datenpunkte als Zahl .
                            Ich habe folgende Frage:

                            • Wie kann ich die Untervariablen "ble temp" und "ble hum" auszulesen?

                            Nachfolgend mein Datenpunkt (über MQTT JSON) :

                            {
                              
                              "temp": 19.5,
                              "demand": 40,
                              "fan": "1",
                              "ble": {
                                "temp": 21.11,
                                "hum": 76.86,
                                "bat": 2111
                              },
                              "autob": "A4C13885DD31",
                              "autor": 0,
                              "autot": 17.5,
                              "auto0": "00:00",
                              "auto1": "00:00",
                              "autop": false
                            }
                            

                            Die Haupvariablen z.B. "env" kann ich ohne Probleme wie folgt auslesen:

                            setState(id180, obj['env'], true);
                            

                            Wie müss der Code für "ble temp" aussehen?

                            Ich habe alles mögliche ausprobiert, leider klappt es z.B. mit dem nachfolgenden Code nicht

                            setState(id180, obj['ble.temp'], true);
                            

                            Ich freue mich auf Eure Antwort.

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @bjappler last edited by

                              @bjappler sagte: "ble temp" auszulesen?

                              setState(id180, obj.ble.temp, true);
                              
                              B 1 Reply Last reply Reply Quote 0
                              • B
                                bjappler @paul53 last edited by

                                @paul53 vielen Dank, das klappt! 🙂

                                Gibt es eigentlich eine Möglichkeit das o.g. Script auch als Blockly aufzubauen, um den Wert "ble temp" auszulesen? Habe viele Scripte probiert, es hatte aber dann letzendlich nur dieses hier geklappt.

                                Ansonsten werde ich dieses hier einfach weiter nutzen 😊

                                Homoran 1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @bjappler last edited by Homoran

                                  @bjappler sagte in JSON String zu Datenpunkten:

                                  um den Wert "ble temp" auszulesen?

                                  der Block Attribut "ble.temp" von "json" liefert das
                                  Screenshot_20240804-144357_Firefox.jpg

                                  vorher Struktur ansehen
                                  Screenshot_20240804-144521_Firefox.jpg

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  859
                                  Online

                                  31.8k
                                  Users

                                  80.0k
                                  Topics

                                  1.3m
                                  Posts

                                  6
                                  16
                                  2359
                                  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