Help build binding for Paradox Alarm Panel with IP150

yeah I’d bee flip/flopping between contact items and switch items, I think I use a translation. That could be a config item as well I think, maybe put it as an issue. I’d like to keep up development.

Are the zone labels still not being pulled? It does need to to that , as they’re used for the periodic check, and so if a dictionary item called zoneNames is empty, it can’t do it.

I have

Startup_Publish_All_Info = True 
Topic_Publish_ZoneState = Paradox/Zone 
Startup_Update_All_Labels = True   
Publish_Static_Topic = 0    

Set in my config.

I see

2018-06-06 08:05:42,463 INFO Labels detected for wirelessKeypadLabel:
2018-06-06 08:05:42,476 INFO {1: 'Wireless Keyp 1', 2: 'Wireless Keyp 2', 3: 'Wireless Keyp 3', 4: 'Wireless Keyp 4', 5: 'Wireless Keyp 5', 6: 'Wireless Keyp 6', 7: 'Wireless Keyp 7', 8: 'Wireless Keyp 8'}
2018-06-06 08:05:42,486 DEBUG updateAllLabels: Reading from alarm: wirelessSirenLabel
2018-06-06 08:05:42,493 DEBUG updateAllLabels: Amount of numeric items in dictionary to read: 4
2018-06-06 08:05:43,023 INFO Labels detected for wirelessSirenLabel:
2018-06-06 08:05:43,028 INFO {1: 'Wireless Siren 1', 2: 'Wireless Siren 2', 3: 'Wireless Siren 3', 4: 'Wireless Siren 4'}
2018-06-06 08:05:43,035 DEBUG updateAllLabels: Reading from alarm: siteNameLabel
2018-06-06 08:05:43,039 DEBUG updateAllLabels: Amount of numeric items in dictionary to read: 1
2018-06-06 08:05:43,319 INFO Labels detected for siteNameLabel:
2018-06-06 08:05:43,328 INFO {1: 'Your Alarm Site'}
2018-06-06 08:05:43,338 DEBUG updateAllLabels: Reading from alarm: partitionLabel
2018-06-06 08:05:43,342 DEBUG updateAllLabels: Amount of numeric items in dictionary to read: 2
2018-06-06 08:05:43,648 INFO Labels detected for partitionLabel:
2018-06-06 08:05:43,654 INFO {1: '     Area 1', 2: '     Area 2'}
2018-06-06 08:05:43,664 DEBUG updateAllLabels: Reading from alarm: wirelessRepeaterLabel
2018-06-06 08:05:43,677 DEBUG updateAllLabels: Amount of numeric items in dictionary to read: 2
2018-06-06 08:05:44,276 INFO Labels detected for wirelessRepeaterLabel:
2018-06-06 08:05:44,309 INFO {1: 'Repeater 1', 2: 'Repeater 2'}
2018-06-06 08:05:44,345 DEBUG updateAllLabels: Reading from alarm: outputLabel
2018-06-06 08:05:44,433 DEBUG updateAllLabels: Amount of numeric items in dictionary to read: 16
2018-06-06 08:05:46,676 INFO Labels detected for outputLabel:
2018-06-06 08:05:46,680 INFO {1: 'Garage Door', 2: 'Output 02', 3: 'Output 03', 4: 'Output 04', 5: 'Output 05', 6: 'Output 06', 7: 'Output 07', 8: 'Output 08', 9: 'Output 09', 10: 'Output 10', 11: 'Output 11', 12: 'Output 12', 13: '\x06\x08\x06\x01\x0cMain', 14: 'door PIR   ', 15: 'Output 13', 16: 'Output 14'}
2018-06-06 08:05:46,686 DEBUG updateAllLabels: Reading from alarm: zoneLabel
2018-06-06 08:05:46,690 DEBUG updateAllLabels: Amount of numeric items in dictionary to read: 32
2018-06-06 08:05:53,210 INFO Labels detected for zoneLabel:
2018-06-06 08:05:53,213 INFO {1: 'Front door reed', 2: 'Family room PIR', 3: 'Lounge PIR', 4: 'Bed room PIR', 5: 'Study PIR', 6: 'Garage', 7: 'Play Room', 8: 'Zone 08', 9: 'Study Reed', 10: 'Dining Room', 11: 'Mid toilet Reed', 12: 'Main door PIR', 13: '\x06\x08\x06\x0cMain', 14: 'door PIR   ', 15: '', 16: '', 17: 'Smoke 2nd floor', 18: 'Zone 18', 19: 'Zone 19', 20: 'Zone 20', 21: 'Zone 21', 22: 'Zone 22', 23: 'Zone 23', 24: 'Zone 24', 25: 'Zone 25', 26: 'Zone 26', 27: 'Zone 27', 28: 'Zone 28', 29: 'Zone 29', 30: 'Zone 30', 31: 'Zone 31', 32: 'Zone 32', 99: 'Any zone'}
2018-06-06 08:05:53,221 DEBUG updateAllLabels: Reading from alarm: userLabel
2018-06-06 08:05:53,227 DEBUG updateAllLabels: Amount of numeric items in dictionary to read: 32

Then when an event is triggered:

2018-06-06 08:06:04,342 DEBUG Event location: "Main door PIR"
2018-06-06 08:06:04,349 DEBUG Events 7-0 8-12- Reply: Event:Zone OK;SubEvent:Main door PIR
2018-06-06 08:06:04,354 DEBUG Message is a 1 or 0, and self.Zonenames not empty
2018-06-06 08:06:04,358 DEBUG Retrieved zonename
2018-06-06 08:06:04,361 DEBUG Updating zone name to match location in live event
2018-06-06 08:06:04,368 INFO Publishing event "Paradox/Zone" for Main door PIR =  OFF
2018-06-06 08:06:04,381 DEBUG Message 7: 0 Message 8: 12
2018-06-06 08:06:04,390 DEBUG Event:Zone OK;SubEvent:Main door PIR

Which actually pulls from the event the name, but checks is against the zone labels as they can get a bit corrupted.

Then all the zones inthe logs:

2018-06-06 21:33:25,889 DEBUG VDC: 16.5
2018-06-06 21:33:25,889 DEBUG DC: 13.3
2018-06-06 21:33:25,890 DEBUG battery: 13.3
2018-06-06 21:33:25,891 INFO Publishing panel status json: '{"battery": 13.3, "vdc": 16.5, "dc": 13.3, "paneldate": "2018-6-6 21:34"}'
2018-06-06 21:33:25,892 DEBUG Publishing initial zone state (state: OFF, zone number: 1 Zone Front door reed)
2018-06-06 21:33:25,894 DEBUG Publishing initial zone state (state: OFF, zone number: 2 Zone Family room PIR)
2018-06-06 21:33:25,895 DEBUG Publishing initial zone state (state: OFF, zone number: 3 Zone Lounge PIR)
2018-06-06 21:33:25,898 DEBUG Publishing initial zone state (state: OFF, zone number: 4 Zone Bed room PIR)
2018-06-06 21:33:25,900 DEBUG Publishing initial zone state (state: OFF, zone number: 5 Zone Study PIR)
2018-06-06 21:33:25,901 DEBUG Publishing initial zone state (state: OFF, zone number: 6 Zone Garage)
2018-06-06 21:33:25,903 DEBUG Publishing initial zone state (state: OFF, zone number: 7 Zone Play Room)
2018-06-06 21:33:25,905 DEBUG Publishing initial zone state (state: OFF, zone number: 8 Zone Zone 08)
2018-06-06 21:33:25,907 DEBUG Publishing initial zone state (state: OFF, zone number: 9 Zone Study Reed)
2018-06-06 21:33:25,909 DEBUG Publishing initial zone state (state: OFF, zone number: 10 Zone Dining Room)
2018-06-06 21:33:25,910 DEBUG Publishing initial zone state (state: OFF, zone number: 11 Zone Mid toilet Reed)
2018-06-06 21:33:25,912 DEBUG Publishing initial zone state (state: OFF, zone number: 12 Zone Main door PIR)
2018-06-06 21:33:25,914 DEBUG Publishing initial zone state (state: OFF, zone number: 13 Zone Smoke 1st floor)

Yes, they are.

I was thinking to avoid spamming the MQTT Broker with all these messages. I have 32 Zones (I use only 8) and every few secs, I get ON/OFF payload for each of the Paradox/Zone/Zone 1…32 :slight_smile:

Ahh right, yeah I’ve been thinking about that, to reduce the number of messages, or the frequency.

I’ll have a think overnight how to restrict it, maybe to set it as an option. My mqtt is all local, so I don’t mind spamming it, and never noticing it missing messages.

1 Like

with Debug_Mode = 0 in config.ini, I still get some DEBUG level log entries:

2018-06-06 13:08:54,287 INFO Publishing panel status json: '{"battery": 13.7, "vdc": 17.0, "dc": 13.9, "paneldate": "2018-6-6 13:8"}'
2018-06-06 13:08:54,288 DEBUG Publishing initial zone state (state: OFF, zone number: 1 Zone Central_Case)
2018-06-06 13:08:54,289 DEBUG Publishing initial zone state (state: OFF, zone number: 2 Zone Siren_Case)
2018-06-06 13:08:54,290 DEBUG Publishing initial zone state (state: OFF, zone number: 3 Zone Zone 03)
2018-06-06 13:08:54,290 DEBUG Publishing initial zone state (state: OFF, zone number: 4 Zone Zone 04)
2018-06-06 13:08:54,291 DEBUG Publishing initial zone state (state: OFF, zone number: 5 Zone Zone 05)
2018-06-06 13:08:54,291 DEBUG Publishing initial zone state (state: OFF, zone number: 6 Zone Zone 06)
2018-06-06 13:08:54,292 DEBUG Publishing initial zone state (state: OFF, zone number: 7 Zone Zone 07)
2018-06-06 13:08:54,292 DEBUG Publishing initial zone state (state: OFF, zone number: 8 Zone Zone 08)
2018-06-06 13:08:54,293 DEBUG Publishing initial zone state (state: OFF, zone number: 9 Zone Zone 09)
2018-06-06 13:08:54,293 DEBUG Publishing initial zone state (state: OFF, zone number: 10 Zone Ext.Storage)
2018-06-06 13:08:54,294 DEBUG Publishing initial zone state (state: OFF, zone number: 11 Zone Zone 11)
2018-06-06 13:08:54,294 DEBUG Publishing initial zone state (state: OFF, zone number: 12 Zone Zone 12)
2018-06-06 13:08:54,294 DEBUG Publishing initial zone state (state: OFF, zone number: 13 Zone Zone 13)
2018-06-06 13:08:54,295 DEBUG Publishing initial zone state (state: OFF, zone number: 14 Zone Zone 14)
2018-06-06 13:08:54,295 DEBUG Publishing initial zone state (state: OFF, zone number: 15 Zone Zone 15)
2018-06-06 13:08:54,295 DEBUG Publishing initial zone state (state: OFF, zone number: 16 Zone Zone 16)
2018-06-06 13:08:54,296 DEBUG Publishing initial zone state (state: OFF, zone number: 17 Zone Int.Computer)
2018-06-06 13:08:54,296 DEBUG Publishing initial zone state (state: OFF, zone number: 18 Zone Ext.Living)
2018-06-06 13:08:54,296 DEBUG Publishing initial zone state (state: OFF, zone number: 19 Zone Ext.Guest)
2018-06-06 13:08:54,296 DEBUG Publishing initial zone state (state: OFF, zone number: 20 Zone EXT LATERAL DR1)
2018-06-06 13:08:54,297 DEBUG Publishing initial zone state (state: OFF, zone number: 21 Zone Ext.Boiler)
2018-06-06 13:08:54,297 DEBUG Publishing initial zone state (state: OFF, zone number: 22 Zone Ext.Kitchen)
2018-06-06 13:08:54,297 DEBUG Publishing initial zone state (state: OFF, zone number: 23 Zone Ext.Garage)
2018-06-06 13:08:54,297 DEBUG Publishing initial zone state (state: OFF, zone number: 24 Zone Zone 24)
2018-06-06 13:08:54,297 DEBUG Publishing initial zone state (state: OFF, zone number: 25 Zone Zone 25)
2018-06-06 13:08:54,298 DEBUG Publishing initial zone state (state: OFF, zone number: 26 Zone Zone 26)
2018-06-06 13:08:54,298 DEBUG Publishing initial zone state (state: OFF, zone number: 27 Zone Zone 27)
2018-06-06 13:08:54,298 DEBUG Publishing initial zone state (state: OFF, zone number: 28 Zone Zone 28)
2018-06-06 13:08:54,298 DEBUG Publishing initial zone state (state: OFF, zone number: 29 Zone Zone 29)
2018-06-06 13:08:54,298 DEBUG Publishing initial zone state (state: OFF, zone number: 30 Zone Zone 30)
2018-06-06 13:08:54,299 DEBUG Publishing initial zone state (state: OFF, zone number: 31 Zone Zone 31)
2018-06-06 13:08:54,299 DEBUG Publishing initial zone state (state: OFF, zone number: 32 Zone Zone 32)
2018-06-06 13:08:55,300 INFO Calling keepalive 8

is this intended or I should modify something else in my config?

(ps: with Debug_Mode = 2, I get much more of course :slight_smile:)

Nah that’s on me, It’s pretty noisy. I’d only just worked a lot of this stuff out last last week.

I’ll work on that too.

1 Like

Ok so there’s an update there now, which reduces a lot of the logging if you do specify debug 1 or 2.
And another update for specifying a factor for publishing the heartbeat status;. Eg 10 will publish about every minute since a keep alive message is 1 of 6 messages.

It’s just an if keepalivecount div factor == 0 then publish

1 Like

Works nicely with the Publish_Status_Factor. I left it at 10 and I get a reasonable amount of messages to the broker (~38 messages every min)

Quick question: can you move this:

2018-06-07 13:24:38,569 INFO Calling keepalive 228
2018-06-07 13:24:39,821 INFO Calling keepalive 229
2018-06-07 13:24:41,073 INFO Calling keepalive 230
2018-06-07 13:24:42,325 INFO Calling keepalive 231
2018-06-07 13:24:43,578 INFO Calling keepalive 232
2018-06-07 13:24:44,831 INFO Calling keepalive 233
2018-06-07 13:24:46,083 INFO Calling keepalive 234
2018-06-07 13:24:47,335 INFO Calling keepalive 235

to Debug_Mode 1 ? It would be best if with Debug_Mode 0, the log file gets the minimum # of entries :slight_smile:

Great stuff by the way! It works very nice!

Updated for 2.0.5 to reduce the logging.

Including a lot of the Print statements, there’s more do do, but a bunch have been moved under the same control as debug logging.

I assume most people run as a service.

1 Like

It’s great that people are still trying to update this code. I just want to reiterate that the ParadoxIP150v2 code is not suitable for EVO ranges from my own investigations. There are just too many differences to make the code usable on EVO. If you want to support EVO you’d have to modify a lot more code than just the MAP files. If someone is willing to do that then great, but it’s definitely not possible to simply change the MAP files. You would need to change several things like the keep alive messages and various other things that are EVO specific. And of course there’s the IP150 firmware changes from v4.0 which would break things completely. For now I’d say this project is only suitable for SP/MG.

That’s great news! I for one would love to know how you downgraded your IP150 module. I’m sure most people would want this info. All new IP150 modules sold locally are v4.0 already, so it is preventing people from buying those modules since they already know any coding work we’ve done wont work. Would you mind sharing?

quick (unrelated) question: didn’t Paradox produce also another version of the IP150 device? (I think they call it IP150S)

I have one of those (I couldn’t find the “standard” IP150) and it reports firmware revision: 1.4 (and it works fine)

http://www.paradox.com/Products/default.asp?CATID=3&SUBCATID=38&PRD=563

Yeah I was wondering about that. It’s possible, As you’d move the sp specific keep alive and event number driven code to a mapping file and make a new one for evo.

But I’d assume given their direction for firmware that the numbers wanting to do this would be dropping.

Hi to all.

I have posted IP150 downgrade instructions and tools to GitHub https://github.com/Tertiush/ParadoxIP150v2/issues/22 because GitHub allows file upload. I will read all comments ant questions there, but for answer periodically look at GitHub.

1 Like

I confirm that nezmogus’ method works. After a few failures and trying I was able to downgrade my IP150 4.00 to 1.32 and now I can see my alarm’s messages on MQTT.

85 posts were split to a new topic: Binding for Paradox Alarm Panel

Hello,
How to update from version 1.32 to 4.40 which is functional.
I have firmware 4.40 of the IP150.
Thank’s

someone can write an example of mqtt.things and alarm.items for arm/disarm the alarm from openhab?

Hi everyone,
i also started to expirementing with the v2 script, but in my paradox/zone/zone1 topic i get ON and OFF but after them i also get a number different every time, so i can not map them. Am i doing something wrong?Am i missing something?
Thank you in advance.

What is the exact payload?
You may need a JS transformation instead of a MAP one.

If these are payloads (again post an example) from my fork of the ParadoxIP150v2 - then yes there is some json, but that’s only panel information (voltages, panel date time, it comes out as part of the heartbeat)

The example alarm.items (in a subfolder of the project on github) has been updated.