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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • 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

      Hallo,

      ich bin Anfänger (boar nun ist es raus)

      Ich bekomme aus MQTT /leaf/status/raw diese Werte:

      {"status": 200, "BatteryStatusRecords": {"BatteryStatus": {"BatteryRemainingAmountkWH": "", "SOC": {"Value": "51"}, "BatteryChargingStatus": "NORMAL_CHARGING", "BatteryRemainingAmount": "124", "BatteryCapacity": "240", "BatteryRemainingAmountWH": "20320"}, "TimeRequiredToFull200_6kW": {"MinutesRequiredToFull": "30", "HourRequiredToFull": "4"}, "OperationResult": "START", "NotificationDateAndTime": "2018/12/10 10:21", "CruisingRangeAcOff": "124000", "OperationDateAndTime": "10.Dez 2018 11:21", "CruisingRangeAcOn": "119000", "PluginState": "CONNECTED", "TargetDate": "2018/12/10 10:21"}, "VoltLabel": {"HighVolt": "240", "LowVolt": "120"}}
      

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

      Vielen Dank im voraus

      JP

      1 Reply Last reply Reply Quote 0
      • 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

                                  700
                                  Online

                                  31.9k
                                  Users

                                  80.3k
                                  Topics

                                  1.3m
                                  Posts

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