NEWS
[gelöst] MQTT nur bestimmte Werte auslesen
-
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/raw
ist 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
-
@jp@risum.de:leider weiß ich noch nicht was du damit meinst `
-
Vielen Dank für deine schnelle und Erfolgreiche Hilfe
-
Bitte das Thema im Betreff des ersten Beitrags als [gelöst] markieren.