Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. MQTT -> {Value: XX} im Wert

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    770

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

MQTT -> {Value: XX} im Wert

Geplant Angeheftet Gesperrt Verschoben JavaScript
18 Beiträge 4 Kommentatoren 2.2k Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • paul53P paul53

    @seeandfeel sagte: Falls das so stimmt:

    Nein, so:

    var idJson = "mqtt.0.p4d2mqtt.sensor.P4.state";  // Datenpunkt-ID mit JSON-String
    var test = "javascript.0.testp4";
     
    function werteAuslesen(jsonStr) {
        var obj = JSON.parse(jsonStr).Heizung;
        var test = obj.Kesseltemperatur_0x0.value;
    }
     
    on({id:idJson,change:'ne'}, function (obj) {
        log(obj.state.val);
        werteAuslesen(obj.state.val);
    });
    

    So liefert das Log den kompletten JSON-String.

    @seeandfeel sagte in MQTT -> {Value: XX} im Wert:

    Unexpected token in JSON at position 1368

    Das ist das Ende des JSON. Kann da noch ein nicht sichtbares Sonderzeichen / Leerzeichen sein? Um das zu erkennen, füge im Log am Ende noch ein sichtbares Zeichen an:

        log(obj.state.val + 'x');
    

    Versuche mal

        werteAuslesen(obj.state.val.trim());
    
    S Offline
    S Offline
    Seeandfeel
    schrieb am zuletzt editiert von
    #7

    @paul53 sagte in MQTT -> {Value: XX} im Wert:

    werteAuslesen(obj.state.val.trim());

    Das mit dem "x" hat etwas weitergeholfen.. - im Debug hab ich ein Leerzeichen gesehen.

    Wenn ich mir dann das MQTT Adapter Debug ansehe, findet sich folgendes:

    Client [] Cannot parse {"Heizung": {"Kesseltemperatur_0x0": {"value": 71.0}, "Status": {"value": "Heizen"}, "Abgastemperatur_0x1": {"value": 187.0}, "Betriebsmodus": {"value": "Automatik"}, "Boardtemperatur_0x2": {"value": 38.0}, "Uhrzeit": {"value": "Dienstag, 16. Feb. 2021 11:06:33"}, "Restsauerstoffgehalt_0x3": {"value": 8.4}, "Aussentemperatur_0x4": {"value": 2.0}, "Saugzugdrehzahl_0x7": {"value": 1929.0}, "Fuehler1_0x8": {"value": 90.5}, "LuftgeschwindigkeitinderAnsaugoeffnung_0xc": {"value": 1.19}, "Kesselstellgroesse_0x12": {"value": 98.0}, "Vorlauf-Isttemperatur_0x15": {"value": 51.0}, "Vorlauf-Solltemperatur_0x16": {"value": 50.0}, "Ansauglufttemperatur_0x60": {"value": 33.0}, "StromaufnahmederAustragschnecke_0x61": {"value": 0.01}, "FuellstandimPelletsbehaelter_0x71": {"value": 82.64}, "Einschub_0x74": {"value": 59.0}, "Sauerstoffregler_0x75": {"value": 61.0}, "Puffertemperaturoben_0x76": {"value": 64.5}, "PuffertemperaturMitte_0x77": {"value": 60.0}, "Puffertemperaturunten_0x78": {"value": 51.5}, "PufferpumpenAnsteuerung_0x8c": {"value": 74.0}, "Stromaufnahme24VDCPelletsmodul_0xa3": {"value": 0.28}, "BreitbandsondeHeizstrom_0xf3": {"value": 1.085}, "BreitbandsondeHeizungsSpannung_0xf4": {"value": 9.047}, "BreitbandsondeInnenwiderstand_0xf7": {"value": 298.0}, "Resetierbarerkg-Zaehler_0x111": {"value": 50.0}, "Resetierbarert-Zaehler_0x112": {"value": 4.0}}}�
    

    2 Einträge später macht Iobroker daraus {"value": 4.0}}}� -> {"value": 4.0}}}\u0000" .

    Ich hab das mal an den Entwickler weitergegeben, mal sehen ob er was findet.
    Gibt es dazu evtl. einen Workaround?

    paul53P 1 Antwort Letzte Antwort
    0
    • S Seeandfeel

      @paul53 sagte in MQTT -> {Value: XX} im Wert:

      werteAuslesen(obj.state.val.trim());

      Das mit dem "x" hat etwas weitergeholfen.. - im Debug hab ich ein Leerzeichen gesehen.

      Wenn ich mir dann das MQTT Adapter Debug ansehe, findet sich folgendes:

      Client [] Cannot parse {"Heizung": {"Kesseltemperatur_0x0": {"value": 71.0}, "Status": {"value": "Heizen"}, "Abgastemperatur_0x1": {"value": 187.0}, "Betriebsmodus": {"value": "Automatik"}, "Boardtemperatur_0x2": {"value": 38.0}, "Uhrzeit": {"value": "Dienstag, 16. Feb. 2021 11:06:33"}, "Restsauerstoffgehalt_0x3": {"value": 8.4}, "Aussentemperatur_0x4": {"value": 2.0}, "Saugzugdrehzahl_0x7": {"value": 1929.0}, "Fuehler1_0x8": {"value": 90.5}, "LuftgeschwindigkeitinderAnsaugoeffnung_0xc": {"value": 1.19}, "Kesselstellgroesse_0x12": {"value": 98.0}, "Vorlauf-Isttemperatur_0x15": {"value": 51.0}, "Vorlauf-Solltemperatur_0x16": {"value": 50.0}, "Ansauglufttemperatur_0x60": {"value": 33.0}, "StromaufnahmederAustragschnecke_0x61": {"value": 0.01}, "FuellstandimPelletsbehaelter_0x71": {"value": 82.64}, "Einschub_0x74": {"value": 59.0}, "Sauerstoffregler_0x75": {"value": 61.0}, "Puffertemperaturoben_0x76": {"value": 64.5}, "PuffertemperaturMitte_0x77": {"value": 60.0}, "Puffertemperaturunten_0x78": {"value": 51.5}, "PufferpumpenAnsteuerung_0x8c": {"value": 74.0}, "Stromaufnahme24VDCPelletsmodul_0xa3": {"value": 0.28}, "BreitbandsondeHeizstrom_0xf3": {"value": 1.085}, "BreitbandsondeHeizungsSpannung_0xf4": {"value": 9.047}, "BreitbandsondeInnenwiderstand_0xf7": {"value": 298.0}, "Resetierbarerkg-Zaehler_0x111": {"value": 50.0}, "Resetierbarert-Zaehler_0x112": {"value": 4.0}}}�
      

      2 Einträge später macht Iobroker daraus {"value": 4.0}}}� -> {"value": 4.0}}}\u0000" .

      Ich hab das mal an den Entwickler weitergegeben, mal sehen ob er was findet.
      Gibt es dazu evtl. einen Workaround?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #8

      @seeandfeel sagte: Gibt es dazu evtl. einen Workaround?

      Hast Du es mal mit .trim() versucht?

      werteAuslesen(obj.state.val.trim());
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      S paul53P 2 Antworten Letzte Antwort
      0
      • paul53P paul53

        @seeandfeel sagte: Gibt es dazu evtl. einen Workaround?

        Hast Du es mal mit .trim() versucht?

        werteAuslesen(obj.state.val.trim());
        
        S Offline
        S Offline
        Seeandfeel
        schrieb am zuletzt editiert von
        #9

        @paul53

        Hatte ich auch probiert:

        on({id:idJson,change:'ne'}, function (obj) {
            log(obj.state.val);
            werteAuslesen(obj.state.val.trim());
        });
        

        Ergibt:

        javascript.0	2021-02-16 11:52:38.276	error	(2300) at Object.<anonymous> (script.js.Parse.Parse_P4:11:5)
        javascript.0	2021-02-16 11:52:38.276	error	(2300) at werteAuslesen (script.js.Parse.Parse_P4:5:20)
        javascript.0	2021-02-16 11:52:38.275	error	(2300) at JSON.parse (<anonymous>:null:null)
        javascript.0	2021-02-16 11:52:38.274	error	(2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1366
        

        Ich hab jetzt gerade mal probiert (wohin? :) ) sowas einzubauen:

        json.replaceAll("\\u0000", "")
        

        oder gibt wohl auch ein:

        str.replace
        

        Aber ich habe ehrlich gesagt wenig Ahnung von JAVA :( .

        GarganoG 1 Antwort Letzte Antwort
        0
        • S Seeandfeel

          @paul53

          Hatte ich auch probiert:

          on({id:idJson,change:'ne'}, function (obj) {
              log(obj.state.val);
              werteAuslesen(obj.state.val.trim());
          });
          

          Ergibt:

          javascript.0	2021-02-16 11:52:38.276	error	(2300) at Object.<anonymous> (script.js.Parse.Parse_P4:11:5)
          javascript.0	2021-02-16 11:52:38.276	error	(2300) at werteAuslesen (script.js.Parse.Parse_P4:5:20)
          javascript.0	2021-02-16 11:52:38.275	error	(2300) at JSON.parse (<anonymous>:null:null)
          javascript.0	2021-02-16 11:52:38.274	error	(2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1366
          

          Ich hab jetzt gerade mal probiert (wohin? :) ) sowas einzubauen:

          json.replaceAll("\\u0000", "")
          

          oder gibt wohl auch ein:

          str.replace
          

          Aber ich habe ehrlich gesagt wenig Ahnung von JAVA :( .

          GarganoG Offline
          GarganoG Offline
          Gargano
          schrieb am zuletzt editiert von Gargano
          #10

          @seeandfeel

          var x = obj.state.val;
          x=x.replace('�','');
          
          S 1 Antwort Letzte Antwort
          0
          • GarganoG Gargano

            @seeandfeel

            var x = obj.state.val;
            x=x.replace('�','');
            
            S Offline
            S Offline
            Seeandfeel
            schrieb am zuletzt editiert von
            #11

            @gargano

            Auch dir gleich mal Danke @Gargano :

            Um nichts falsch zu machen, hab das ganze jetzt so:

            var idJson = "mqtt.0.p4d2mqtt.sensor.P4.state";  // Datenpunkt-ID mit JSON-String
            var test = "javascript.0.testp4";
            
             
            function werteAuslesen(jsonStr) {
                var x = obj.state.val;
                x=x.replace('�','');
                var obj = JSON.parse(jsonStr).Heizung;
                var test = obj.Kesseltemperatur_0x0.value;
            }
             
            on({id:idJson,change:'ne'}, function (obj) {
                log(obj.state.val);
                werteAuslesen(obj.state.val);
            });
            

            Json Parse Fehler "zum Ende" ist weg. Dafür jetzt:

            javascript.0	2021-02-16 12:09:38.847	error	(2300) at Object.<anonymous> (script.js.Parse.Parse_P4:14:5)
            javascript.0	2021-02-16 12:09:38.846	error	(2300) at werteAuslesen (script.js.Parse.Parse_P4:6:17)
            javascript.0	2021-02-16 12:09:38.846	error	(2300) Error in callback: TypeError: Cannot read property 'state' of undefined
            

            Oh man.. :(

            paul53P 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @seeandfeel sagte: Gibt es dazu evtl. einen Workaround?

              Hast Du es mal mit .trim() versucht?

              werteAuslesen(obj.state.val.trim());
              
              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #12

              @paul53 sagte: Workaround?

              Verkürze mal den String um das letzte Zeichen:

              var idJson = "mqtt.0.p4d2mqtt.sensor.P4.state";  // Datenpunkt-ID mit JSON-String
              var test = "javascript.0.testp4";
               
              function werteAuslesen(jsonStr) {
                  var obj = JSON.parse(jsonStr).Heizung;
                  var test = obj.Kesseltemperatur_0x0.value;
                  log('Kesseltemperatur: ' + test + ' °C');
              }
              
              on({id:idJson, change:'ne'}, function (obj) {
                  let str = obj.state.val;
                  let json = str.substr(0, str.length - 1);
                  werteAuslesen(json);
              });
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              S 1 Antwort Letzte Antwort
              0
              • S Seeandfeel

                @gargano

                Auch dir gleich mal Danke @Gargano :

                Um nichts falsch zu machen, hab das ganze jetzt so:

                var idJson = "mqtt.0.p4d2mqtt.sensor.P4.state";  // Datenpunkt-ID mit JSON-String
                var test = "javascript.0.testp4";
                
                 
                function werteAuslesen(jsonStr) {
                    var x = obj.state.val;
                    x=x.replace('�','');
                    var obj = JSON.parse(jsonStr).Heizung;
                    var test = obj.Kesseltemperatur_0x0.value;
                }
                 
                on({id:idJson,change:'ne'}, function (obj) {
                    log(obj.state.val);
                    werteAuslesen(obj.state.val);
                });
                

                Json Parse Fehler "zum Ende" ist weg. Dafür jetzt:

                javascript.0	2021-02-16 12:09:38.847	error	(2300) at Object.<anonymous> (script.js.Parse.Parse_P4:14:5)
                javascript.0	2021-02-16 12:09:38.846	error	(2300) at werteAuslesen (script.js.Parse.Parse_P4:6:17)
                javascript.0	2021-02-16 12:09:38.846	error	(2300) Error in callback: TypeError: Cannot read property 'state' of undefined
                

                Oh man.. :(

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #13

                @seeandfeel sagte: Um nichts falsch zu machen, hab das ganze jetzt so:

                So ist es falsch. Richtig:

                var idJson = "mqtt.0.p4d2mqtt.sensor.P4.state";  // Datenpunkt-ID mit JSON-String
                var test = "javascript.0.testp4";
                 
                function werteAuslesen(jsonStr) {
                    var obj = JSON.parse(jsonStr).Heizung;
                    var test = obj.Kesseltemperatur_0x0.value;
                }
                 
                on({id:idJson,change:'ne'}, function (obj) {
                    var json = obj.state.val.replace('�','');
                    werteAuslesen(json);
                });
                

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                1
                • paul53P paul53

                  @paul53 sagte: Workaround?

                  Verkürze mal den String um das letzte Zeichen:

                  var idJson = "mqtt.0.p4d2mqtt.sensor.P4.state";  // Datenpunkt-ID mit JSON-String
                  var test = "javascript.0.testp4";
                   
                  function werteAuslesen(jsonStr) {
                      var obj = JSON.parse(jsonStr).Heizung;
                      var test = obj.Kesseltemperatur_0x0.value;
                      log('Kesseltemperatur: ' + test + ' °C');
                  }
                  
                  on({id:idJson, change:'ne'}, function (obj) {
                      let str = obj.state.val;
                      let json = str.substr(0, str.length - 1);
                      werteAuslesen(json);
                  });
                  
                  S Offline
                  S Offline
                  Seeandfeel
                  schrieb am zuletzt editiert von
                  #14

                  @paul53

                  Jetzttttt :-D :

                  (2300) script.js.Parse.Parse_P4: Kesseltemperatur: 68 °C
                  

                  Super, echt Klasse!
                  Vielen Dank euch beiden, vor allem @paul53 .

                  Jetzt muss ichs nur noch schaffen das ganze in Objekte zu bringen. ;) Mal sehen ob ich es hinbekomme..

                  Vielen Dank nochmal!

                  paul53P GarganoG 2 Antworten Letzte Antwort
                  0
                  • S Seeandfeel

                    @paul53

                    Jetzttttt :-D :

                    (2300) script.js.Parse.Parse_P4: Kesseltemperatur: 68 °C
                    

                    Super, echt Klasse!
                    Vielen Dank euch beiden, vor allem @paul53 .

                    Jetzt muss ichs nur noch schaffen das ganze in Objekte zu bringen. ;) Mal sehen ob ich es hinbekomme..

                    Vielen Dank nochmal!

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #15

                    @seeandfeel
                    Mit welcher Methode funktioniert es jetzt? Verkürzen oder Ersetzen?

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Antwort Letzte Antwort
                    0
                    • S Seeandfeel

                      @paul53

                      Jetzttttt :-D :

                      (2300) script.js.Parse.Parse_P4: Kesseltemperatur: 68 °C
                      

                      Super, echt Klasse!
                      Vielen Dank euch beiden, vor allem @paul53 .

                      Jetzt muss ichs nur noch schaffen das ganze in Objekte zu bringen. ;) Mal sehen ob ich es hinbekomme..

                      Vielen Dank nochmal!

                      GarganoG Offline
                      GarganoG Offline
                      Gargano
                      schrieb am zuletzt editiert von Gargano
                      #16

                      @seeandfeel Paul war schneller, war grad Mittag essen.
                      Zur Erklärung dieses Zeichens am Ende. Es handelt sich wohl hier um das String Ende Zeichen welches in C den Wert (hex) 0x0 hat. Fälschlicherweide wird wohl die Länge des Strings beim MQTT senden falsch berechnet und dieses Zeichen mitgesendet.

                      1 Antwort Letzte Antwort
                      0
                      • S Offline
                        S Offline
                        Seeandfeel
                        schrieb am zuletzt editiert von Seeandfeel
                        #17

                        Oh, entschuldigt.. - vor lauter Freude die Lösung vergessen. ;)

                        Funktioniert hat es jetzt mit:

                         let json = str.substr(0, str.length - 1);
                        

                        Ersetzen hatte ich noch gar nicht probiert gehabt. Das hatte ich ganz übersehen.

                        Das "var json = obj.state.val.replace('�','');" läuft auf:

                        (2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1364
                        

                        Vielen Dank auch für die Erklärung @Gargano ! Ich wollte nicht fragen bzw. euch noch mehr "belästigen" ;) .
                        Eigentlich versuchs ich ja echt selber zu lösen.. - aber bei JAVA setzt es (noch) bei mir aus. :(

                        Gernot TaussG 1 Antwort Letzte Antwort
                        0
                        • S Seeandfeel

                          Oh, entschuldigt.. - vor lauter Freude die Lösung vergessen. ;)

                          Funktioniert hat es jetzt mit:

                           let json = str.substr(0, str.length - 1);
                          

                          Ersetzen hatte ich noch gar nicht probiert gehabt. Das hatte ich ganz übersehen.

                          Das "var json = obj.state.val.replace('�','');" läuft auf:

                          (2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1364
                          

                          Vielen Dank auch für die Erklärung @Gargano ! Ich wollte nicht fragen bzw. euch noch mehr "belästigen" ;) .
                          Eigentlich versuchs ich ja echt selber zu lösen.. - aber bei JAVA setzt es (noch) bei mir aus. :(

                          Gernot TaussG Offline
                          Gernot TaussG Offline
                          Gernot Tauss
                          schrieb am zuletzt editiert von
                          #18

                          @seeandfeel Hi, könntest du mir das ganze Script schicken?

                          lg

                          1 Antwort Letzte Antwort
                          0

                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                          Registrieren Anmelden
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          608

                          Online

                          32.8k

                          Benutzer

                          82.7k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe