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.1k

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

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

                      774

                      Online

                      32.5k

                      Benutzer

                      81.6k

                      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