JSONPATH in Javaspript zerlegen
Verfasst: 5. Apr 2022 16:35
Hej,
habe mal eine Frage.
Der Sachverhalt:
Ich habe ein NXPanel welches mir bei einem Tastendruck folgende Daten an ein Item liefert
Ich bin nun soweit das ich diese Daten in einem Script zerlegt habe und damit auch arbeiten kann.
Das funktioniert auch alles soweit, sobald ich dann aber einen Datensatz vom Dimmer bekomme
gibt einen Fehlermeldung im Log.
Das ist erstmal auch alles so richtig, weil das Script aus dem Datensatz "dimmer" die "buttom"-Daten ja nich auslesen kann ,
nun zu meiner Frage wie kann ich vorher schon filtern ob es ein button oder ein dimmer ist?
Oder ist es besser wenn ich hier für jede Option ein Item anlege?
Dann würden es ein paar mehr Rules werden, wollte es eigentlich in einer unterbringen.
Gruß Gerd
habe mal eine Frage.
Der Sachverhalt:
Ich habe ein NXPanel welches mir bei einem Tastendruck folgende Daten an ein Item liefert
Code: Alles auswählen
{"button": {"pid": 10, "bid": 1, "state": 0, "next": 0}}
Code: Alles auswählen
var nxpanel185 = items.getItem("NSPanel185_NxPanel185Result");
var debug = 1;
if (debug == 1)
{
console.log("nxpanel185 "+nxpanel185.state);
}
var objekt = JSON.parse(nxpanel185.state);
var pid = objekt.botton.pid;
var bid = objekt.botton.bid;
if (debug == 1)
{
console.log("pid "+pid+" bid "+bid);
}
Code: Alles auswählen
{"dimmer":{"pid":16,"power":0,"hsbcolor":"180,100,50"}}
Code: Alles auswählen
2022-04-05 16:23:27.096 [INFO ] [org.openhab.automation.script ] - nxpanel185 {"button": {"pid": 10, "bid": 1, "state": 0, "next": 0}}
2022-04-05 16:23:27.098 [INFO ] [org.openhab.automation.script ] - pid 10 bid 1
2022-04-05 16:24:34.012 [INFO ] [org.openhab.automation.script ] - nxpanel185 {"dimmer":{"pid":16,"power":0}}
2022-04-05 16:24:34.016 [ERROR] [b.automation.script.javascript.stack] - Failed to execute script:
org.graalvm.polyglot.PolyglotException: TypeError: Cannot read property "pid" from undefined
nun zu meiner Frage wie kann ich vorher schon filtern ob es ein button oder ein dimmer ist?
Oder ist es besser wenn ich hier für jede Option ein Item anlege?
Dann würden es ein paar mehr Rules werden, wollte es eigentlich in einer unterbringen.
Gruß Gerd