Paradox EVO Binding

Hi Joao,
Here is the repo of my standalone application:

I’ve started to migrate it here as OH binding but there is no code populated yet. Only the binding skeleton.

having struggles to run as a standalone application because it cannot find the logger it seems… :frowning:
Will open a new thread in dev community for this issue.

Cheers,
K.

I have uploaded my first attempt at documenting the EVO memory map. This sheet will ultimately become a generic map for all products, so look for “Paradox Security Memory Maps.xlsx” in the root folder. I will also soon convert this to JSON and share some code on how I plan to use this in a generic way.

3 Likes

I have also uploaded the EVO EEPROM map as a JSON file.

WARNING: It goes without saying that you need to be careful with anything you write to the panels. Reading is fine, but exercise caution when writing values to your panel. If any address is wrong by any chance and you end up writing bad values to the panel you might end up corrupting data on the panel. Be careful with write operations!

3 Likes

Hi guys,
I think I can provide initial binding version with support of partition states so far. It’s completely read-only and can be used only on Evo systems.
Please use the ParadoxAlarm branch of my fork of openhab2-addons repo:


For easier consumption I have added in folder target the latest build of the addon itself.

Disclaimer: Probably it has a lot of bugs and code is not very clean but I think we can use it as a starting point to develop further. As a start would be nice if you can test on your own so I can be sure that I don’t have any hard-coded values somewhere inside the byte-code which I forgot to extract as parameters. I’ve given example things and items files in the README.md

Please let me know if it works for you.

Cheers,
K.

Hi guys,
If I’m using the InSite Gold/Swan server, is there any way to still use the IP150 with the homebridge plugin?

which plugin are you referring to? this one: https://www.npmjs.com/package/homebridge-openhab2 ?

There is a HomeKit Add-on - System Integrations | openHAB available and it’s better to use that instead of the homebridge.

Anyway, open up a new thread and post your setup.
Which firmware is running on your IP150?
Which Paradox Panel do you have with which firmware?

There are solutions to enable voice control of your security panel

Hi guys,

just a quick update. I have also added support for zones in the binding so now you should be able to present your zones and partitions in OpenHab as items.

A quick preview of sample sitemap at home:

Cheers,
K.

2 Likes

:+1:

I will try this on my SP7000 just for the fun of it and report back

Currently I’ve limited the code to only Evo systems so we do not break something with others … thus it will not work.
If you’re really interested to test that, I can add SP7000 as supported but as per other guys responses it should not work (aside from the initial logon procedure and gathering system type, versions, etc).

1 Like

Yeah I second that :slight_smile: I know people are desperate to get their own panels working, but I think we have to say this one last time:

While the login procedure to the IP150 seems similar for the most part between MG/SP & EVO, anything after that login process is different. Memory maps, serial protocols, etc, etc. The EVO & MG/SP share virtually nothing in common coding/programming wise. Unless someone has specifically coded to support both panels, testing EVO code on MG/SP and visa versa is pointless. They are not compatible. Open the serial protocol for MG/SP (I’ve uploaded that a while back) and start coding :stuck_out_tongue:

1 Like

will do :slight_smile:

By the way: Maybe it’s better for you guys to open up a new thread and focus on the EVO Binding integration to avoid extra noise. We can move selected posts from here to that new thread with the help of a mod.

Yeah agreed - I think this thread has been taken over by us newcomers and I dont think it was initially meant for EVO :blush:

1 Like

Hi,
I think as we have now layed down the “binding framework” for it we can use same binding for all types, no?
For the binding to work I expect the model to be filled with the correct object-represented data (not byte code) and if anyone is interested to develop “connector” to SP/MG I’m willing to help identifying the necessary tasks to be included in the same code base.
I have more features to add meanwhile though…

  • Suppport for external commands (reset/login/logout for the connector, arm, forced arm, etc for the panel)
  • Auto logout/login detection
  • Extending the model and maybe extracting the login procedure so we can use factory to create objects based on the initial logon finding, i.e. if I detect Evo I should create Evo-class objects everywhere.
  • Support for doors - not sure how these should be modelled as I have none at home. (of course I have doors but they’re not in the paradox system :D)
  • Probably would be best to develop the communication part as a bridge and not a thing. Need to see how this is done in OH.

Cheers,
K.

Hi all,
to give you some update … I have implemented the following:

  • Extracted the communication in a bridge and now all other things are dependent on the IP150 bridge.

  • Implemented sample commands for the communication bridge - LOGIN, LOGOUT, RESET. They allow you to temporarily stop the communication to the Paradox system so you can logon with babyware or other tool without disabling the whole binding.

  • Implemented auto-detection during login procedure and extracted the communicator creation in factory so if we create more implementations for other panels only an interface has to be implemented and factory will be able to provide different implementations for the different panel types with the same backend logic.

  • Changed the README.md to reflect the changes

Just wonder if anyone has tested the binding and if this binding is of anyone’s interest still?

Cheers,
K.

Hi !

I have done some tests using Paradox SDK. I created a .net Core project with a wrapper to access Paradox API but my problem is that the compiled Paradox Api is 32 bits so it works well on my WIndows 10 devlopment device if I use .Net Core x86 for Windows but there is no x86 version of dotnet core for linux (and my server is on ubuntu).

Is there a 64 bits version of Paradox SDK ?

Thanks !

Hey Jean (@Jean_Henning),
As I’d like to start implementing some more commands just wondered if you have any success in understanding the commands process?
If so can you point me to the right place in the excel with the protocol dump so I can do some tests with it?
Mostly interested in

  • changing the PGM states
  • Activating Armed state on partitions / the whole system

As per our discussion you’ve said that I need to do some keep-alive in order not the connection to time-out. What I do so far and runs smooth is to check RAM state (read the whole RAM in my communicator cache) each 5 seconds. This ensures up2date info and also it seems that it works like a keep-alive. Do you think this is OK approach?

Thanks in advance,
Konstantin

Hey there,

I have not yet played around with arming, but looking at the protocol this should be command 0x40 in my spreadsheet. For PGM state changes this seems to be command 0xAx. Check the “General command sub command: PGM override”. Unfortunately it doesnt seem to be documented well in the original documentation, so you’ll have to play around with these commands to see what works. If you do find anything that works please let me know so that I can update my document.

From what I can see you would need to specify the PGM status commands (01-04) for the corresponding PGM. There are four commands from the document:

0: No change on PGM
01: Override PGM OFF
02: Override PGM ON
03: Release PGM OFF
04: Release PGM ON (my spreadsheet has a typo, it is missing the “ON”)

However I dont know what the difference between override and release is. Let me know your findings!

Regards,
Jean

As far as I know there isn’t a 64 bit version. I have focused my energy on trying to create my own API using raw TCP commands (with some good success so far) due to the lack of support on the Paradox SDK. However I’ve taken a break from this as I’m currently on vacation.

Hi,
you also mentioned that you use a lot of doors in your Evo192 at work.
How should the doors be modelled in this case?
What is the difference between door and zone?

Cheers,
K.

Hey there,

Basically a door is an access control module where you typically have some access card to open it. In our case we have two access control modules per physical door, e.g:

Door 1: Main office door OUTSIDE
Door 2: Main office door INSIDE
Door 3: Secondary office door OUTSIDE
Door 4: Secondary office door INSIDE
etc.

So basically at a physical door we’d have two access control modules so that you have a tagging system inside and outside the door for entry and exit. We record employees’ entry and exit times.

I would recommend you play around with the Doors section in Babyware to get a feel for what they are and what they can accomplish. But the simplest would be to see a door as a single access control unit and I think Babyware refers to the tags/cards that you use to swipe at the door unit as an “Access Card”. You can program an access card per user in the system and they can do a variety of things, including automatically disarming the alarm once the card is swiped. I think for your purpose you probably just need the labels for doors to identify them and then the normal buffered events in the system (or live events) will show you when a door is accessed. You will also often see more than one event logged per user when the user accesses a door. I’m not always sure why that is, but I have seen those.

Regards,
Jean