Proton hat geschrieben: ↑14. Dez 2023 08:28
Woran man wohl erkennen kann, dass ich nicht weiß wofür das gut ist
JSONPATH filtert aus einem JSON Objekt einen einzelnen Wert heraus
Universell kann JSONPATH auch Teile eines JSON Objekts als neues JSON Objekt ausliefern, allerdings (leider) nicht in openHAB, hier wird immer ein einzelner Wert geliefert.
JSONPATH filtert das JSON Objekt nach den angegebenen Kriterien, es verfolgt einen vorgegebenen Pfad bis zum gewünschten Wert. Ich schreibe "filtert", weil die Pfad nicht zwingend absolut sein muss. Hat man z.B. ein JSON Objekt, welches Werte mehrerer Sensoren liefert, so können diese als Liste vorliegen. Beispiel:
Code: Alles auswählen
{
"sensors": [
{
"name": "sensor2",
"value": 2
},
{
"name": "sensor1",
"value": 1
},
{
"name": "sensor3",
"value": 3
}
]
}
Was gleich auffällt: Die Liste ist nicht sortiert (zumindest nicht nach einem Kriterium, welches erkennbar ist). Und ich verrate noch ein Detail,m welches nur über mehrere Ojekte zu sehen wäre: Mal ist
sensor1 der letzte Sensor in der Liste, mal der erste, mal der zweite. Die Sensoren springen also munter in der Liste herum, man kann nicht einfach immer den zweiten Sensorwert verwenden, um sensor1 abzufragen.
Und nun kann JSONPATH beweisen, was in ihm steckt

indem man den Wert relativ abfragt.
wird immer den Wert von sensor1 liefern, gleich an welcher Stelle der Liste der Sensor auftaucht.
JSONPATH ist ein sehr mächtiges Werkzeug

Es gibt noch andere Details, die in der openHAB Implementation von JSONPATH nicht funktionieren, z.B. sollte es möglich sein, im Filter mit Regular Expressions zu arbeiten, z.B. um aus einem DateTime Feld nur die Stunde als Kriterium zu verwenden, aber irgendwas ist ja immer

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet