NEWS
[gelöst] MQTT nur bestimmte Werte auslesen
-
Das ist offenbar ein JSON-String.
@jp@risum.de:Möchte aber nur "CruisingRangeAcOff": "124000" auslesen, geht so etwas ? `
Das sollte so funktionieren:
const idRaw = '...'; // Datenpunkt-ID MQTT on(idRaw, function(dp) { var obj = JSON.parse(dp.state.val); var range = parseFloat(obj.BatteryStatusRecords.CruisingRangeAcOff); ... }); ```` `Vielen Dank für die schnelle Antwort, wie kann ich diese Infoliation von Dir in IOBroker integrieren.
Mfg
JP
-
Super :-) ich mach mich gleich mal ran DANKE
-
Dann werde ich das Skript noch um den Datenpunkt für das Ergebnis erweitern.
const idRaw = '...'; // Datenpunkt-ID MQTT: Eintragen ! const idRangeOff = 'USV.RangeOff'; // Datenpunkt-ID für Ergebnis (bitte anpassen) // Datenpunkt erzeugen createState(idRangeOff, 0, { type: 'number', name: 'Batterie Range AC Aus', unit: '?' // Bitte anpassen }); on(idRaw, function(dp) { var obj = JSON.parse(dp.state.val); var range = parseFloat(obj.BatteryStatusRecords.CruisingRangeAcOff); setState(idRangeOff, range, true); }); -
Ich habe dein zweites Script eingefügt leider zeigt er mir nur 0 km an.
2 = ist das so gemeint ?
3 = das wäre der Wert den ich gerne hätte.

Mfg
JP
-
/leaf/status/rawist sicher nicht die Datenpunkt-ID, vielleicht ist es der Name ? Die Datemumkt-ID beginnt wahrscheinlich mit mqtt.0. Du kannst
"ID einfügen" rechts oben im JS-Editor verwenden.
Bevor die initiale 0 mit dem Wert aus dem JSON ersetzt wird, muss sich der Inhalt des JSON erst einmal ändern. Es kann also eine Weile dauern.
-

so sieht es bei mir aus !
Und geändert habe ich jetzt
const idRaw = "mqtt.0"; // Datenpunkt-ID MQTT: Eintragen !
const idRangeOff = "mqtt.0.leaf.status.raw"/leaf/status/raw/;
Danke das du mir dabei hilfst, da muss ich noch viel lernen. (:-o)
-
Javascript-Code bitte in Code tags (5. Button oben) einfügen !
Richtig:
const idRaw = "mqtt.0.leaf.status.raw"/*leaf/status/raw*/; // Datenpunkt-ID MQTT: Eintragen ! const idRangeOff = 'CruisingRangeAcOff'; // oder besser mit Ordnerstruktur const idRangeOff = 'Battery.CruisingRangeAcOff'; -
Wenn der richtige Wert gleich bei Skriptstart in den Ergebnis-Datenpunkt geschrieben werden soll, dann so
const idRaw = "mqtt.0.leaf.status.raw"/*leaf/status/raw*/; // Datenpunkt-ID MQTT const idRangeOff = 'Battery.CruisingRangeAcOff'; // Datenpunkt erzeugen createState(idRangeOff, 0, { type: 'number', name: 'Batterie Range AC Aus', unit: 'km' }); function battery(json) { var obj = JSON.parse(json); var range = parseFloat(obj.BatteryStatusRecords.CruisingRangeAcOff); setState(idRangeOff, range/1000, true); } battery(getState(idRaw).val); // Skriptstart on(idRaw, function(dp) { battery(dp.state.val); }); -
> Javascript-Code bitte in Code tags (5\. Button oben) einfügen !leider weiß ich noch nicht was du damit meinst :-(
-
Vielen Dank für deine schnelle und Erfolgreiche Hilfe

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
