Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] MQTT nur bestimmte Werte auslesen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] MQTT nur bestimmte Werte auslesen

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

      Das ist offenbar ein JSON-String.
      @jp@risum.de:

      Möchte aber nur "CruisingRangeAcOff": "124000" auslesen, geht so etwas ? `

      Das sollte so funktionieren:

      const idRaw = '...'; // Datenpunkt-ID MQTT
      
      on(idRaw, function(dp) {
         var obj = JSON.parse(dp.state.val);
         var range = parseFloat(obj.BatteryStatusRecords.CruisingRangeAcOff);
         ...
      });
      
      1 Reply Last reply Reply Quote 0
      • J
        jprisum.de last edited by

        @paul53:

        Das ist offenbar ein JSON-String.
        @jp@risum.de:

        Möchte aber nur "CruisingRangeAcOff": "124000" auslesen, geht so etwas ? `

        Das sollte so funktionieren:

        const idRaw = '...'; // Datenpunkt-ID MQTT
        
        on(idRaw, function(dp) {
           var obj = JSON.parse(dp.state.val);
           var range = parseFloat(obj.BatteryStatusRecords.CruisingRangeAcOff);
           ...
        });
        ```` `  
        

        Vielen Dank für die schnelle Antwort, wie kann ich diese Infoliation von Dir in IOBroker integrieren.

        Mfg

        JP

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

          @jp@risum.de:

          wie kann ich diese Infoliation von Dir in IOBroker integrieren. `
          Im Javascript-Adapter.

          1 Reply Last reply Reply Quote 0
          • J
            jprisum.de last edited by

            Super 🙂 ich mach mich gleich mal ran DANKE

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

              Dann werde ich das Skript noch um den Datenpunkt für das Ergebnis erweitern.

              const idRaw = '...'; // Datenpunkt-ID MQTT: Eintragen !
              const idRangeOff = 'USV.RangeOff'; // Datenpunkt-ID für Ergebnis (bitte anpassen)
              
              // Datenpunkt erzeugen
              createState(idRangeOff, 0, {
                 type: 'number',
                 name: 'Batterie Range AC Aus',
                 unit: '?'  // Bitte anpassen
              });
              
              on(idRaw, function(dp) {
                 var obj = JSON.parse(dp.state.val);
                 var range = parseFloat(obj.BatteryStatusRecords.CruisingRangeAcOff);
                 setState(idRangeOff, range, true);
              });
              
              1 Reply Last reply Reply Quote 0
              • J
                jprisum.de last edited by

                Ich habe dein zweites Script eingefügt leider zeigt er mir nur 0 km an.

                2 = ist das so gemeint ?

                3 = das wäre der Wert den ich gerne hätte.
                12372_io-skript.png

                Mfg

                JP

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

                  /leaf/status/raw
                  

                  ist sicher nicht die Datenpunkt-ID, vielleicht ist es der Name ? Die Datemumkt-ID beginnt wahrscheinlich mit mqtt.0. Du kannst

                  "ID einfügen" rechts oben im JS-Editor verwenden.

                  Bevor die initiale 0 mit dem Wert aus dem JSON ersetzt wird, muss sich der Inhalt des JSON erst einmal ändern. Es kann also eine Weile dauern.

                  1 Reply Last reply Reply Quote 0
                  • J
                    jprisum.de last edited by

                    12372_km-script.jpg

                    so sieht es bei mir aus !

                    Und geändert habe ich jetzt

                    const idRaw = "mqtt.0"; // Datenpunkt-ID MQTT: Eintragen !

                    const idRangeOff = "mqtt.0.leaf.status.raw"/leaf/status/raw/;

                    Danke das du mir dabei hilfst, da muss ich noch viel lernen. (:-o)

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

                      Javascript-Code bitte in Code tags (5. Button oben) einfügen !

                      Richtig:

                      const idRaw = "mqtt.0.leaf.status.raw"/*leaf/status/raw*/; // Datenpunkt-ID MQTT: Eintragen !
                      const idRangeOff = 'CruisingRangeAcOff';
                      // oder besser mit Ordnerstruktur
                      const idRangeOff = 'Battery.CruisingRangeAcOff';
                      
                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        Wenn der richtige Wert gleich bei Skriptstart in den Ergebnis-Datenpunkt geschrieben werden soll, dann so

                        const idRaw = "mqtt.0.leaf.status.raw"/*leaf/status/raw*/; // Datenpunkt-ID MQTT
                        const idRangeOff = 'Battery.CruisingRangeAcOff';
                        
                        // Datenpunkt erzeugen
                        createState(idRangeOff, 0, {
                           type: 'number',
                           name: 'Batterie Range AC Aus',
                           unit: 'km'  
                        });
                        
                        function battery(json) {
                           var obj = JSON.parse(json);
                           var range = parseFloat(obj.BatteryStatusRecords.CruisingRangeAcOff);
                           setState(idRangeOff, range/1000, true);
                        }
                        
                        battery(getState(idRaw).val); // Skriptstart
                        
                        on(idRaw, function(dp) {
                           battery(dp.state.val);
                        });
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • J
                          jprisum.de last edited by

                          > Javascript-Code bitte in Code tags (5\. Button oben) einfügen !

                          leider weiß ich noch nicht was du damit meinst 😞

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

                            @jp@risum.de:

                            leider weiß ich noch nicht was du damit meinst `
                            493_code_tags.jpg

                            1 Reply Last reply Reply Quote 0
                            • J
                              jprisum.de last edited by

                              Vielen Dank für deine schnelle und Erfolgreiche Hilfe
                              12372_finale.jpg

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

                                Bitte das Thema im Betreff des ersten Beitrags als [gelöst] markieren.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                587
                                Online

                                32.0k
                                Users

                                80.4k
                                Topics

                                1.3m
                                Posts

                                2
                                15
                                1526
                                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