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

                              855
                              Online

                              32.0k
                              Users

                              80.4k
                              Topics

                              1.3m
                              Posts

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