Probleme mit JsonPath in Rule Datei

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Armin_123
Beiträge: 4
Registriert: 8. Nov 2019 20:24
Answers: 0

Probleme mit JsonPath in Rule Datei

Beitrag von Armin_123 »

Hallo,
möchte die Heimautomation über die Kombination Openhab 2 / Snips betreiben ( mit Raspberry 3)

In einer Regel erhalte ich mqtt Nachrichten von Snips AI welche ich über JSONPATH "bearbeiten" möchte
Ich versuche die Slots über den Slotnamen wie folgt zu extrahieren.

Code: Alles auswählen

var x = "{\"sessionId\":\"12fd7058-6550-4bc8-ac7e-29752f66ef51\",\"customData\":null,\"siteId\":\"default\",\"input\":\"rolladen büro runter\",\"asrTokens\":[[{\"value\":\"rolladen\",\"confidence\":0.7004744,\"rangeStart\":0,\"rangeEnd\":8,\"time\":{\"start\":0.0,\"end\":0.45}},{\"value\":\"büro\",\"confidence\":1.0,\"rangeStart\":9,\"rangeEnd\":13,\"time\":{\"start\":0.45,\"end\":1.05}},{\"value\":\"runter\",\"confidence\":1.0,\"rangeStart\":14,\"rangeEnd\":20,\"time\":{\"start\":1.05,\"end\":2.31}}]],\"asrConfidence\":0.88810456,\"intent\":{\"intentName\":\"Armin_123:Rollladensteuerung\",\"confidenceScore\":1.0},\"slots\":[{\"rawValue\":\"büro\",\"value\":{\"kind\":\"Custom\",\"value\":\"Büro\"},\"alternatives\":[],\"range\":{\"start\":9,\"end\":13},\"entity\":\"TYPE_ROOMS\",\"slotName\":\"Zimmer\",\"confidenceScore\":1.0},{\"rawValue\":\"runter\",\"value\":{\"kind\":\"Custom\",\"value\":\"Runter\"},\"alternatives\":[],\"range\":{\"start\":14,\"end\":20},\"entity\":\"TYPE_BLIND_COMMANDS\",\"slotName\":\"Aktion\",\"confidenceScore\":1.0}],\"alternatives\":[{\"intentName\":\"CrystalMethod:searchWikipedia\",\"confidenceScore\":0.053615358,\"slots\":[{\"rawValue\":\"runter\",\"value\":{\"kind\":\"Custom\",\"value\":\"runter\"},\"alternatives\":[],\"range\":{\"start\":14,\"end\":20},\"entity\":\"article\",\"slotName\":\"article_indicator\",\"confidenceScore\":1.0}]},{\"intentName\":\"domi:searchWeatherForecastCondition\",\"confidenceScore\":0.04479771,\"slots\":[]}]}"

var slotZimmer = transform("JSONPATH", "$..slots[?(@.slotName==\"Zimmer\")]",x)


leider funktioniert das ganze nicht. Die Variable "slotZimmer" enthält nach der Transformation immer die komplette Nachricht.
Wenn ich das ganze in den jsonpath online evaluator eingebe funktioniert es.


Hat jemand eine Idee?

Grüße Armin
Zuletzt geändert von Armin_123 am 17. Nov 2019 08:44, insgesamt 1-mal geändert.

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

Re: Probleme mit JsonPath in Rule Datei

Beitrag von udo1toni »

Was sollen denn die zwei Punkte nach dem $? Da gehört definitiv nur ein Punkt hin. Ob Du zum Testen das JSON so in die Variable bekommst, bin ich mir nicht sicher (das kannst Du aber bequem über ein logInfo("json","{}",x) rausfinden) Aber im Realbetrieb wirst Du dort ja vermutlich den Status eines String Items haben.
Die Anführungszeichen im slotName Parameter sind nicht notwendig, zumindest solange der Begriff keine Leerzeichen enthält.

JSONPATH kann meines Wissens kein JSON zurück geben, nur einen einzelnen Wert, aber versuche es trotzdem :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Probleme mit JsonPath in Rule Datei

Beitrag von peter-pan »

Probiers mal so:

Code: Alles auswählen

    var String x = "{\"sessionId\":\"12fd7058-6550-4bc8-ac7e-29752f66ef51\",\"customData\":null,\"siteId\":\"default\",\"input\":\"rolladen büro runter\",\"asrTokens\":[[{\"value\":\"rolladen\",\"confidence\":0.7004744,\"rangeStart\":0,\"rangeEnd\":8,\"time\":{\"start\":0.0,\"end\":0.45}},{\"value\":\"büro\",\"confidence\":1.0,\"rangeStart\":9,\"rangeEnd\":13,\"time\":{\"start\":0.45,\"end\":1.05}},{\"value\":\"runter\",\"confidence\":1.0,\"rangeStart\":14,\"rangeEnd\":20,\"time\":{\"start\":1.05,\"end\":2.31}}]],\"asrConfidence\":0.88810456,\"intent\":{\"intentName\":\"Armin_123:Rollladensteuerung\",\"confidenceScore\":1.0},\"slots\":[{\"rawValue\":\"büro\",\"value\":{\"kind\":\"Custom\",\"value\":\"Büro\"},\"alternatives\":[],\"range\":{\"start\":9,\"end\":13},\"entity\":\"TYPE_ROOMS\",\"slotName\":\"Zimmer\",\"confidenceScore\":1.0},{\"rawValue\":\"runter\",\"value\":{\"kind\":\"Custom\",\"value\":\"Runter\"},\"alternatives\":[],\"range\":{\"start\":14,\"end\":20},\"entity\":\"TYPE_BLIND_COMMANDS\",\"slotName\":\"Aktion\",\"confidenceScore\":1.0}],\"alternatives\":[{\"intentName\":\"CrystalMethod:searchWikipedia\",\"confidenceScore\":0.053615358,\"slots\":[{\"rawValue\":\"runter\",\"value\":{\"kind\":\"Custom\",\"value\":\"runter\"},\"alternatives\":[],\"range\":{\"start\":14,\"end\":20},\"entity\":\"article\",\"slotName\":\"article_indicator\",\"confidenceScore\":1.0}]},{\"intentName\":\"domi:searchWeatherForecastCondition\",\"confidenceScore\":0.04479771,\"slots\":[]}]}"
    var slotZimmer = transform("JSONPATH", "$..slots[*].slotName",x)
    logInfo("test json", "x ist {} ", slotZimmer)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Armin_123
Beiträge: 4
Registriert: 8. Nov 2019 20:24
Answers: 0

Re: Probleme mit JsonPath in Rule Datei

Beitrag von Armin_123 »

hallo,
danke für Eure Antworten.
Dans Problem waren die Anführungszeichen bei

Code: Alles auswählen

slotName =\"Zimmer\"
mit einfachen Anfürungszeichen funktioniert es.

Grüße

Armin

Antworten