FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: romakrau am 07 Dezember 2021, 19:42:02

Titel: Geloest: jsonMod single Wert mit sprint formatieren
Beitrag von: romakrau am 07 Dezember 2021, 19:42:02
Hallo zusammen,
ich versuche mich an einer jsonMod und hätte gerne das Ergebnis formatiert, sehe aber im Augenblick den Wald nicht vor lauter Bäumen.


single(jsonPath('$.observations.0.winddir')-180,'Windrichtung','-1');
single(jsonPath('$.observations.0.uv'),'UV-Belastung','-1');
single(((jsonPath('$.observations.0.imperial.temp')-32)*5/9),'TemperaturC','0');


Wie kann ich das Ergebnis formatieren z.B. mit sprintf/print auf 2 Nachkommastellen?

Gruß
Roman
Titel: Antw:jsonMod single Wert mit sprint formatieren
Beitrag von: herrmannj am 07 Dezember 2021, 19:54:19
Sprintf geht, du kannst aber direkt jsonpathf nehmen.
Titel: Antw:jsonMod single Wert mit sprint formatieren
Beitrag von: romakrau am 07 Dezember 2021, 20:04:31
Funktioniert leider nur wenn der Wert als Fliesskommazahl vorliegt. Ich muss aber den Wert vorher umrechnen.
Gruss
Roman
Titel: Antw:jsonMod single Wert mit sprint formatieren
Beitrag von: herrmannj am 07 Dezember 2021, 20:10:49
Hast Recht. Ich mach dir später am Rechner ein Beispiel mit sprintf
Titel: Antw:jsonMod single Wert mit sprint formatieren
Beitrag von: romakrau am 07 Dezember 2021, 20:44:52
Das wäre toll. Vielen Dank vorab
Titel: Antw:jsonMod single Wert mit sprint formatieren
Beitrag von: herrmannj am 07 Dezember 2021, 23:22:01
ungetestet so:

single(sprintf('%.2f', jsonPath('$.observations.0.winddir')-180),'Windrichtung','-1');
Titel: Antw:jsonMod single Wert mit sprint formatieren
Beitrag von: romakrau am 08 Dezember 2021, 09:43:42
Schönen Dank, hat funktioniert. Ist allerdings etwas verwirrend da ich es erst versucht hatte mit der geschweiften Klammer als Brücke zu Perl zu generieren. Egal, Hauptsache es funktioniert.
Danke und Gruß
Roman

Edit: Offensichtlich kann man innerhalb des single(..)  Attributs Perl Funktionen direkt nutzen.
Z.B. : single(ctime(jsonPath('$..epoch')),'Gemessen','0'); ergibt = Wed Dec  8 11:14:51 2021
Titel: Antw:jsonMod single Wert mit sprint formatieren
Beitrag von: herrmannj am 08 Dezember 2021, 14:43:05
Zitat von: romakrau am 08 Dezember 2021, 09:43:42
Edit: Offensichtlich kann man innerhalb des single(..)  Attributs Perl Funktionen direkt nutzen.
Z.B. : single(ctime(jsonPath('$..epoch')),'Gemessen','0'); ergibt = Wed Dec  8 11:14:51 2021
exakt. Fürs Protokoll, auch bei multi ...