NEWS
MQTT -> {Value: XX} im Wert
-
@seeandfeel sagte: Gibt es dazu evtl. einen Workaround?
Hast Du es mal mit .trim() versucht?
werteAuslesen(obj.state.val.trim());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 1366Ich hab jetzt gerade mal probiert (wohin? :) ) sowas einzubauen:
json.replaceAll("\\u0000", "")oder gibt wohl auch ein:
str.replaceAber ich habe ehrlich gesagt wenig Ahnung von JAVA :( .
-
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 1366Ich hab jetzt gerade mal probiert (wohin? :) ) sowas einzubauen:
json.replaceAll("\\u0000", "")oder gibt wohl auch ein:
str.replaceAber ich habe ehrlich gesagt wenig Ahnung von JAVA :( .
var x = obj.state.val; x=x.replace('�',''); -
var x = obj.state.val; x=x.replace('�','');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 undefinedOh man.. :(
-
@seeandfeel sagte: Gibt es dazu evtl. einen Workaround?
Hast Du es mal mit .trim() versucht?
werteAuslesen(obj.state.val.trim());@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); }); -
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 undefinedOh man.. :(
@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); }); -
@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); }); -
@seeandfeel
Mit welcher Methode funktioniert es jetzt? Verkürzen oder Ersetzen? -
@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. -
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 1364Vielen 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. :( -
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 1364Vielen 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. :(@seeandfeel Hi, könntest du mir das ganze Script schicken?
lg
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