Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

MQTT -> {Value: XX} im Wert

Geplant Angeheftet Gesperrt Verschoben JavaScript
18 Beiträge 4 Kommentatoren 1.9k Aufrufe 2 Watching
  • Ä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
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          776

                          Online

                          32.5k

                          Benutzer

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