JsonPath Transformation Service

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: JsonPath Transformation Service

Beitrag von udo1toni »

Genau. Es gibt noch eine Möglichkeit, mehrere Transformation Services zu verwenden, soweit ich weiß, funktioniert das aber nur mit mqtt2. Und leider muss man dazu ein Zeichen bemühen, welches nicht auf der normalen Tastatur vorhanden ist. ∩ (U+2229, nicht verwechseln mit Ո) Das erste der beiden Symbole trägt in der Windows Zeichentabelle den Namen "Durchschnitt", das zweite heißt "Großer armenischer Buchstabe vo".
Das müsste man dann zwischen die beiden Transformation Services schreiben, die Services werden von links nach rechts durchlaufen. Aber wie gesagt, ich habe das noch nie ausprobiert, keine Ahnung, ob http das unterstützt.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Cwieser
Beiträge: 10
Registriert: 1. Aug 2019 06:33
Answers: 0

Re: JsonPath Transformation Service Voltoplus

Beitrag von Cwieser »

Hat vielleicht jemand einen Tipp für mich, ich möchte bei meinen Voltoplus nicht Die Werte U1,U2,U3 auslesen, (hier geht es)
sondern die Werte bei Analogausgang 1
Ich bekomme keinen Wert, wenn ich den Namen Analogausgang 1 verwende.

Ich habe selber die Lösung gefunden
die aktuellen Werte können über IP-Adresse + /api/v1/values ausgelesen werden. Beispiel:
{"json_values":[{"id":"U1","value":"22741"},{"id":"U2","value":"22703"},{"id":"U3","value":"22674"},{"id":"I1","value":"549"},{"id":"I2","value":"-1965"},{"id":"I3","value":"417"},{"id":"P","value":"44"},{"id":"fwdEn","value":"228"},{"id":"rvsEn","value":"46"},{"id":"AO1","value":"0"},{"id":"AO2","value":"0"},{"id":"my-PV1","value":"0"},{"id":"abl1","value":"0"},{"id":"DO1","value":"0"},{"id":"DO2","value":"0"},{"id":"LEDS","value":"1"},{"id":"LEDP","value":"2"},{"id":"date_time","value":{"year":2020,"month":2,"day":20,"hour":16,"minute":16,"second":8}}]}

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: JsonPath Transformation Service

Beitrag von udo1toni »

Um es etwas lesbarer zu haben, kann man einen JSON Prettyfier benutzen (z.B. als Plugin in VSCode). Sieht dann so aus:

Code: Alles auswählen

{
	"json_values": [
		{
			"id": "U1",
			"value": "22741"
		},
		{
			"id": "U2",
			"value": "22703"
		},
		{
			"id": "U3",
			"value": "22674"
		},
		{
			"id": "I1",
			"value": "549"
		},
		{
			"id": "I2",
			"value": "-1965"
		},
		{
			"id": "I3",
			"value": "417"
		},
		{
			"id": "P",
			"value": "44"
		},
		{
			"id": "fwdEn",
			"value": "228"
		},
		{
			"id": "rvsEn",
			"value": "46"
		},
		{
			"id": "AO1",
			"value": "0"
		},
		{
			"id": "AO2",
			"value": "0"
		},
		{
			"id": "my-PV1",
			"value": "0"
		},
		{
			"id": "abl1",
			"value": "0"
		},
		{
			"id": "DO1",
			"value": "0"
		},
		{
			"id": "DO2",
			"value": "0"
		},
		{
			"id": "LEDS",
			"value": "1"
		},
		{
			"id": "LEDP",
			"value": "2"
		},
		{
			"id": "date_time",
			"value": {
				"year": 2020,
				"month": 2,
				"day": 20,
				"hour": 16,
				"minute": 16,
				"second": 8
			}
		}
	]
}
Die Werte für AO1 und AO2 kann man dann über einen Filter abgreifen:

Code: Alles auswählen

JSONPATH($.json_values[?(@.id='AO1')].value)
bzw.

Code: Alles auswählen

JSONPATH($.json_values[?(@.id='AO2')].value)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten