Here is an example on one item of mine using v2 of the script:
String Door_Front "Front Door [MAP(ip150-zone.map):%s]" (gAlarm,gAlarmDoor) {mqtt="<[mqtt-pi75:Paradox/Events:state:REGEX(.*\\:(.*);.*):.*SubEvent.Zone 1]"}
My map file looks like this:
Zone\ OK=OK Zone\ open=OPEN Cold\ start\ wireless\ zone=COLD START Wireless\ smoke\ maintenance\ signal=SMOKE MAINT Delay\ zone\ alarm\ transmission=DELAY ALARM Zone\ signal\ strength\ weak\ 1\ \(Partition\ 1\)=WEAK 1 Zone\ signal\ strength\ weak\ 2\ \(Partition\ 1\)=WEAK 2 Zone\ signal\ strength\ weak\ 3\ \(Partition\ 1\)=WEAK 3 Zone\ signal\ strength\ weak\ 4\ \(Partition\ 1\)=WEAK 4 Fire\ Delay\ started=FIRE DELAY StayD\ pass\ acknowledged=STAYD Zone\ bypassed=BYPASS Zone\ in\ alarm=IN ALARM Fire\ alarm=FIRE Zone\ alarm\ restore=ALARM CLR Fire\ alarm\ restore=FIRE ALM CLR Zone\ shutdown=SHUTDOWN Zone\ tampered=TAMPER Zone\ tamper\ restore=TAMPER CLR Low\ battery\ on\ zone=BATT Low\ battery\ on\ zone\ restore=BATT CLR Zone\ supervision\ trouble=SUPER TBL Zone\ supervision\ restore=SUPER CLR Zone\ forced=FORCED Zone\ included=INCLUDED -=OK .=UNKNOWN
This approach ends up getting all the zone messages for an item.
The downside it doesn’t work well as just a sensor (Open/Closed). I am figuring I will create a new map and maybe a duplicate set of items to try and get a item that is just a binary (open/closed).
This is the idea:
String Sensor_Door_Front "Front Door [MAP(ip150-zone-contact.map):%s]" (gAlarm,gAlarmDoor) {mqtt="<[mqtt-pi75:Paradox/Events:state:REGEX(.*\\:(.*);.*):.*SubEvent.Zone 1]"}
The map would then be simplified to:
Zone\ OK=CLOSED Zone\ open=OPEN
I think for this to work I need to work on the filtering of the messages to just take the message for
Event:Zone OK:SubEvent: Zone 1 or Event:Zone open:SubEvent: Zone 1.
@speedmax: Looked at bit more closely at your question, I realized I didn’t really address your issue - Sorry. I haven’t looked at arming and disarming yet. I’ll still leave my notes, in case it helps someone else.