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.
  • S Offline
    S Offline
    Seeandfeel
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    jetzt brauche ich leider doch euer Hilfe bei folgendem Problem:

    Von meiner Heizung bekomme ich über ein Community Projekt (p4d -> Horchi) die Daten über MQTT nach IoBroker geliefert.
    Leider ist wohl irgendwo etwas falsch(?) konfiguriert, da die Werte zwar richtig angelegt werden aber im Feld "Wert" folgendes angelegt wird {"value": 61.5}. Das "value" erscheint leider in allen Feldern.

    Jetzt dachte ich mir, ich schicke mir die komplette JSON über MQTT und Parse hier einfach die Werte richtig. Leider ist das relativ neu für mich ;) und ich komme nicht weiter.

    Folgende Daten habe ich:

    {"Heizung": {"Kesseltemperatur_0x0": {"value": 58.0}, "Status": {"value": "Heizen"}, "Abgastemperatur_0x1": {"value": 168.0}, "Betriebsmodus": {"value": "Automatik"}, "Boardtemperatur_0x2": {"value": 31.5}, "Uhrzeit": {"value": "Montag, 15. Feb. 2021 16:16:08"}, "Restsauerstoffgehalt_0x3": {"value": 9.1}, "Aussentemperatur_0x4": {"value": -0.5}, "Saugzugdrehzahl_0x7": {"value": 1954.0}, "Fuehler1_0x8": {"value": 79.0}, "LuftgeschwindigkeitinderAnsaugoeffnung_0xc": {"value": 1.41}, "Kesselstellgroesse_0x12": {"value": 100.0}, "Vorlauf-Isttemperatur_0x15": {"value": 56.0}, "Vorlauf-Solltemperatur_0x16": {"value": 53.0}, "Ansauglufttemperatur_0x60": {"value": 17.0}, "StromaufnahmederAustragschnecke_0x61": {"value": 0.01}, "FuellstandimPelletsbehaelter_0x71": {"value": 95.31}, "Einschub_0x74": {"value": 65.0}, "Sauerstoffregler_0x75": {"value": 65.0}, "Puffertemperaturoben_0x76": {"value": 52.5}, "PuffertemperaturMitte_0x77": {"value": 40.5}, "Puffertemperaturunten_0x78": {"value": 37.5}, "PufferpumpenAnsteuerung_0x8c": {"value": 52.0}, "Stromaufnahme24VDCPelletsmodul_0xa3": {"value": 0.274}, "BreitbandsondeHeizstrom_0xf3": {"value": 1.095}, "BreitbandsondeHeizungsSpannung_0xf4": {"value": 9.032}, "BreitbandsondeInnenwiderstand_0xf7": {"value": 299.0}, "Resetierbarerkg-Zaehler_0x111": {"value": 10.0}, "Resetierbarert-Zaehler_0x112": {"value": 4.0}}}
    

    Nach einigen lesen hier im Forum hab ich mal testweise so angefangen aber leider komme ich damit schon nicht weiter:

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

    Das funktioniert aber schon nicht, weil:
    (2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1366

    Stimm hier evtl. die JSON schon nicht? 1366 ist ja eine } der "Heizung"?

    Kann mir hier evtl. jmd. weiterhelfen?

    Danke und Grüße,

    Seeandfeel

    paul53P 1 Antwort Letzte Antwort
    0
    • S Seeandfeel

      Hallo zusammen,

      jetzt brauche ich leider doch euer Hilfe bei folgendem Problem:

      Von meiner Heizung bekomme ich über ein Community Projekt (p4d -> Horchi) die Daten über MQTT nach IoBroker geliefert.
      Leider ist wohl irgendwo etwas falsch(?) konfiguriert, da die Werte zwar richtig angelegt werden aber im Feld "Wert" folgendes angelegt wird {"value": 61.5}. Das "value" erscheint leider in allen Feldern.

      Jetzt dachte ich mir, ich schicke mir die komplette JSON über MQTT und Parse hier einfach die Werte richtig. Leider ist das relativ neu für mich ;) und ich komme nicht weiter.

      Folgende Daten habe ich:

      {"Heizung": {"Kesseltemperatur_0x0": {"value": 58.0}, "Status": {"value": "Heizen"}, "Abgastemperatur_0x1": {"value": 168.0}, "Betriebsmodus": {"value": "Automatik"}, "Boardtemperatur_0x2": {"value": 31.5}, "Uhrzeit": {"value": "Montag, 15. Feb. 2021 16:16:08"}, "Restsauerstoffgehalt_0x3": {"value": 9.1}, "Aussentemperatur_0x4": {"value": -0.5}, "Saugzugdrehzahl_0x7": {"value": 1954.0}, "Fuehler1_0x8": {"value": 79.0}, "LuftgeschwindigkeitinderAnsaugoeffnung_0xc": {"value": 1.41}, "Kesselstellgroesse_0x12": {"value": 100.0}, "Vorlauf-Isttemperatur_0x15": {"value": 56.0}, "Vorlauf-Solltemperatur_0x16": {"value": 53.0}, "Ansauglufttemperatur_0x60": {"value": 17.0}, "StromaufnahmederAustragschnecke_0x61": {"value": 0.01}, "FuellstandimPelletsbehaelter_0x71": {"value": 95.31}, "Einschub_0x74": {"value": 65.0}, "Sauerstoffregler_0x75": {"value": 65.0}, "Puffertemperaturoben_0x76": {"value": 52.5}, "PuffertemperaturMitte_0x77": {"value": 40.5}, "Puffertemperaturunten_0x78": {"value": 37.5}, "PufferpumpenAnsteuerung_0x8c": {"value": 52.0}, "Stromaufnahme24VDCPelletsmodul_0xa3": {"value": 0.274}, "BreitbandsondeHeizstrom_0xf3": {"value": 1.095}, "BreitbandsondeHeizungsSpannung_0xf4": {"value": 9.032}, "BreitbandsondeInnenwiderstand_0xf7": {"value": 299.0}, "Resetierbarerkg-Zaehler_0x111": {"value": 10.0}, "Resetierbarert-Zaehler_0x112": {"value": 4.0}}}
      

      Nach einigen lesen hier im Forum hab ich mal testweise so angefangen aber leider komme ich damit schon nicht weiter:

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

      Das funktioniert aber schon nicht, weil:
      (2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1366

      Stimm hier evtl. die JSON schon nicht? 1366 ist ja eine } der "Heizung"?

      Kann mir hier evtl. jmd. weiterhelfen?

      Danke und Grüße,

      Seeandfeel

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

      @seeandfeel

      function werteAuslesen(jsonStr) {
          var obj = JSON.parse(jsonStr).Heizung;
          var test = obj.Kesseltemperatur_0x0.value;
          log('Kesseltemperatur: ' + test);
      }
      

      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
      • paul53P paul53

        @seeandfeel

        function werteAuslesen(jsonStr) {
            var obj = JSON.parse(jsonStr).Heizung;
            var test = obj.Kesseltemperatur_0x0.value;
            log('Kesseltemperatur: ' + test);
        }
        
        S Offline
        S Offline
        Seeandfeel
        schrieb am zuletzt editiert von
        #3

        @paul53
        Vielen Dank für die schnelle Hilfe!

        Funktioniert aber leider noch nicht, ich bekomme vom mqtt Adapter und direkt gleich darauf folgende Fehler:

        javascript.0	2021-02-15 19:08:03.080	error	(2300) at processImmediate (internal/timers.js:439:21)
        javascript.0	2021-02-15 19:08:03.080	error	(2300) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
        javascript.0	2021-02-15 19:08:03.079	error	(2300) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
        javascript.0	2021-02-15 19:08:03.079	error	(2300) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1055:38)
        javascript.0	2021-02-15 19:08:03.079	error	(2300) at Object.<anonymous> (script.js.Parse.Parse_P4:11:5)
        javascript.0	2021-02-15 19:08:03.079	error	(2300) at werteAuslesen (script.js.Parse.Parse_P4:5:20)
        javascript.0	2021-02-15 19:08:03.078	error	(2300) at JSON.parse (<anonymous>:null:null)
        javascript.0	2021-02-15 19:08:03.077	error	(2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1366
        mqtt.0	2021-02-15 19:08:03.070	error	(29487) Client [] Cannot parse {"Heizung": {"Kesseltemperatur_0x0": {"value": 65.5}, "Status": {"value": "Betriebsbereit"}, "Abgastemperatur_0x1": {"value": 64.0}, "Betriebsmodus": {"value": "Automati
        

        Ich verstehe "Unexpected token in JSON at position 1366" nicht. Die Klammern passen doch?

        paul53P 1 Antwort Letzte Antwort
        0
        • S Seeandfeel

          @paul53
          Vielen Dank für die schnelle Hilfe!

          Funktioniert aber leider noch nicht, ich bekomme vom mqtt Adapter und direkt gleich darauf folgende Fehler:

          javascript.0	2021-02-15 19:08:03.080	error	(2300) at processImmediate (internal/timers.js:439:21)
          javascript.0	2021-02-15 19:08:03.080	error	(2300) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
          javascript.0	2021-02-15 19:08:03.079	error	(2300) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
          javascript.0	2021-02-15 19:08:03.079	error	(2300) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1055:38)
          javascript.0	2021-02-15 19:08:03.079	error	(2300) at Object.<anonymous> (script.js.Parse.Parse_P4:11:5)
          javascript.0	2021-02-15 19:08:03.079	error	(2300) at werteAuslesen (script.js.Parse.Parse_P4:5:20)
          javascript.0	2021-02-15 19:08:03.078	error	(2300) at JSON.parse (<anonymous>:null:null)
          javascript.0	2021-02-15 19:08:03.077	error	(2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1366
          mqtt.0	2021-02-15 19:08:03.070	error	(29487) Client [] Cannot parse {"Heizung": {"Kesseltemperatur_0x0": {"value": 65.5}, "Status": {"value": "Betriebsbereit"}, "Abgastemperatur_0x1": {"value": 64.0}, "Betriebsmodus": {"value": "Automati
          

          Ich verstehe "Unexpected token in JSON at position 1366" nicht. Die Klammern passen doch?

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

          @seeandfeel sagte: Die Klammern passen doch?

          Ja, wenn sie so kommen, wie im ersten Beitrag gezeigt. Prüfe es per log(obj.state.val).

          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
          • paul53P paul53

            @seeandfeel sagte: Die Klammern passen doch?

            Ja, wenn sie so kommen, wie im ersten Beitrag gezeigt. Prüfe es per log(obj.state.val).

            S Offline
            S Offline
            Seeandfeel
            schrieb am zuletzt editiert von Seeandfeel
            #5

            @paul53

            Die Daten hab ich 3x verglichen, sollten eigentlich gleich sein.

            Falls das so stimmt:

            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(obj.state.val);
            }
            
            on({id:idJson,change:'ne'}, function (obj) {
                werteAuslesen(obj.state.val);
            });
            

            Ergibt jetzt:
            (2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1368
            -> nicht 67 sondern die Klammer bei 68. Ich verstehs nicht. :(

            paul53P 1 Antwort Letzte Antwort
            0
            • S Seeandfeel

              @paul53

              Die Daten hab ich 3x verglichen, sollten eigentlich gleich sein.

              Falls das so stimmt:

              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(obj.state.val);
              }
              
              on({id:idJson,change:'ne'}, function (obj) {
                  werteAuslesen(obj.state.val);
              });
              

              Ergibt jetzt:
              (2300) Error in callback: SyntaxError: Unexpected token in JSON at position 1368
              -> nicht 67 sondern die Klammer bei 68. Ich verstehs nicht. :(

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

              @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());
              

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

                                      737

                                      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