Hi @peteraquino
I tried in vain to get a loop to work so have ended up with and inelegant solution…but it works
Items
rule UnpackWirelesstagPayload when
Item WirelesstagPayload received update then
val String payload = WirelesstagPayload.state.toString
// Sensor 0
logInfo(“wt”, transform(“JSONPATH”, “$.d[”+0+"].name", payload))
logInfo(“wt”, transform(“JSONPATH”, “$.d[”+0+"].temperature", payload))
logInfo(“wt”, transform(“JSONPATH”, “$.d[”+0+"].alive", payload))
logInfo(“wt”, transform(“JSONPATH”, “$.d[”+0+"].eventState", payload))
TagName00.postUpdate(new StringType(transform(“JSONPATH”, “$.d[”+0+"].name", payload)))
Alive00.postUpdate(new StringType(transform(“JSONPATH”, “$.d[”+0+"].alive", payload)))
Temperature00.postUpdate(new DecimalType(transform(“JSONPATH”, “$.d[”+0+"].temperature", payload)))
val String eventState00 = transform(“JSONPATH”, “$.d[”+0+"].eventState", payload)
switch eventState00 {
case “0” : EventState00.postUpdate(“Disarmed”)
case “1” : EventState00.postUpdate(“Armed”)
case “2” : EventState00.postUpdate(“Moved”)
case “3” : EventState00.postUpdate(“OPEN”) // guessing
case “4” : EventState00.postUpdate(“CLOSED”) // guessing
case “5” : EventState00.postUpdate(“DetectedMovement”)
case “6” : EventState00.postUpdate(“TimedOut”)
}
// Sensor 1
logInfo(“wt”, transform(“JSONPATH”, “$.d[”+1+"].name", payload))
logInfo(“wt”, transform(“JSONPATH”, “$.d[”+1+"].temperature", payload))
logInfo(“wt”, transform(“JSONPATH”, “$.d[”+1+"].alive", payload))
logInfo(“wt”, transform(“JSONPATH”, “$.d[”+1+"].eventState", payload))
TagName01.postUpdate(new StringType(transform(“JSONPATH”, “$.d[”+1+"].name", payload)))
Alive01.postUpdate(new StringType(transform(“JSONPATH”, “$.d[”+1+"].alive", payload)))
Temperature01.postUpdate(new DecimalType(transform(“JSONPATH”, “$.d[”+1+"].temperature", payload)))
val String eventState01 = transform(“JSONPATH”, “$.d[”+1+"].eventState", payload)
switch eventState01 {
case “0” : EventState01.postUpdate(“Disarmed”)
case “1” : EventState01.postUpdate(“Armed”)
case “2” : EventState01.postUpdate(“Moved”)
case “3” : EventState01.postUpdate(“OPEN”) // guessing
case “4” : EventState01.postUpdate(“CLOSED”) // guessing
case “5” : EventState01.postUpdate(“DetectedMovement”)
case “6” : EventState01.postUpdate(“TimedOut”)
}
etc.
and I have this defined in the items
String WirelesstagPayload { exec="<[/etc/openhab/grabit.sh:120000:REGEX((.*?))]" }
which in turn has the code
curl --silent -X POST -H “host: mytaglist.com” -H “Content-Type: application/json; charset=utf-8” -H “Authorization: bearer 6asdsdsac8-0129-4258-b220-98aa22257d21e” -H “d: “”” -H "Cac$
(Note: I have changed my auth string for security!)
I’ve not looked at the last comm value. I’m using the URL calling feature of the tags for instantly pushing events