Paradox Alarm MQTT Hassio addon


#1

Hi all,

I’ve set up a very basic hassio add-on that will run an mqtt interface for the Paradox ip150 module, via the ip150 web interface. If you are interested, you can find it at https://github.com/alfredopironti/Paradox_IP150

You can try it out by getting ssh access to your hassio installation, then
cd /addons
git clone https://github.com/alfredopironti/Paradox_IP150.git paradox_ip150_mqtt
Then go to the homeassistant home page: click on hassio; then on the shopping-bag icon on top right; then on the circular refresh arrow top right, and the add-on should appear in the local list. Configure the IP address of your mqtt broker and ip150 module, set panel code and password, and you should be good to go.

The code is very rough at the moment, and there’s literally no documentation except for the above. I’m happy to keep polishing the code and adding some documentation if you find this add-on useful.

For the developers, you should also be able to use the python mqtt interface, and the ip150 python binding in other projects, if needed.

And yes, this piece of software does a very similar job to Tertiush’s ParadoxIP150, but I decided to re-implement the mqtt and ip150 logic, plus wrapped all the functionality into a hassio add-on.


Request for addon for Alarm panel Paradox IP150
#2

You are a Ledgend Thanks so much for working on this absolutely brilliant I haven’t yet tested but will soon and if I can contribute some how I will Thanks


#3

Thanks, great work. Any specific reason why you did not use V2 of Tertiush’s ParadoxIP150?


#4

Yes, in some countries you need the installer to get remote access to the IP150 module. They do that by using the binary protocol. Now, it turns out the IP150 module has a peculiar logic:

  • If a user is logged via the binary protocol, no web user can login, and no other user can log via the binary protocol.
  • If a web user is logged in, an additional binary protocol user can still log in (and no additional web user).

Hence, in my case using the web interface for hassio was the only workable option. V1 of Tertiush does a very similar job, but I opted to re-implement it to de-couple the web-interfacing module (ip150.py) from the MQTT interfacing module (ip150_mqtt.py).

I have plans of adding zone support, for MyCool use case, and have some ideas for optimizations of the hassio add-on, and should do some work on the documentation too.


#5

I guess this method is useless if iParadox app for iOS is used for arming/disarming. The moment app is logged in, there is an exception on the ‘Paradox IP150 MQTT Adapter’ log:

Exception in thread Thread-2:
Traceback (most recent call last):
File “/usr/lib/python3.6/threading.py”, line 916, in _bootstrap_inner
self.run()
File “/usr/lib/python3.6/threading.py”, line 864, in run
self._target(*self._args, **self._kwargs)
File “/ip150.py”, line 193, in _get_updates
cur_state = self.get_info()
File “/ip150.py”, line 87, in wrapped
return f(self, *args, **kwargs)
File “/ip150.py”, line 185, in get_info
res[table] = [(i, self._tables_map[table][‘map’][x]) for i,x in enumerate(tmp, start=1)]
File “/ip150.py”, line 185, in
res[table] = [(i, self._tables_map[table][‘map’][x]) for i,x in enumerate(tmp, start=1)]
KeyError: 8

Afterwards the MQTT broker stops receiving state until Paradox IP150 MQTT Adapter is rebooted.

Too bad IP150 does not accept multiple logins :frowning:

It would be amazing if HA had access to Paradox alarm state + the states of the motion sensors in each room… :robot:

EDIT:

There is something odd in the IP150 logs in the web portal.
Between all logins there is this log:

0000-00-00 00:00 IP150 firmware reset


#6

This is such a cool idea!!! I so much appreciate your work… :slight_smile:
I have 2 questions though. Will this work with an IP100 module? what do I need the MQTT for? I’ve just assumed it would work with IP100 for the sake of testing it, but I wonder if I need Mosquitto MQTT? Could you provide guidance?
tahnks :slight_smile:


#7

Even though my system has an ip100, I decided to go ahead and install Mosquitto and your addon. Installing Mosquitto is rather confusing and I’m not sure I got it properly installed… please, how can I review the logs of your addon? where do I find them?
If I can make this run with my Evo192 and the IP100 module, you will be my hero @alfredo!!
Many many thanks


#8

Hi All,

Apologies for the delay, I’m working on this in my spare time, which is very very scarce at the moment.

I’ve now released v0.2 of the addon. Please do the following to update:

  • stop the currently running addon
  • unistall it from hassio
  • run “git pull” in the addon directory where you previously git-cloned the addon
  • reinstall and re-configure the addon in hassio

I will work on making updates smoother in the future, by setting up an addon repository – just let’s go one step at a time :slight_smile:

In v0.2, you get the following new features:

  • PIR sensor detection (@MyCool this should address your use case)
  • Handling of alarm states “Ready/Not ready/Instant” (@Vans, @MyCool this should fix some crashes you experienced previously)

A few more details: PIR sensors work by publishing the “on” or “off” payload on the following topics paradox/zone/state/<PIR#> so that you can define binary sensors in HA. (The topic is configurable via the ZONE_PUBLISH_TOPIC config variable). Likewise for zones, each zone and sensor are identified by an integer. This should suffice for most use cases.

The support for Ready, Not ready, and Instant alarm states is simply to acknowledge and ignore such states. I still don’t fully understand their purpose, but it seems that regarding HA, they can be ignored. Please let me know if the addon should behave otherwise.

@kitus, I can’t say whether this addon would work with IP100, as I don’t have one at hand. In general, HA can’t talk to IP150 modules directly, but it can talk to MQTT-enabled alarms. This addon works as glue, by exporting the IP150 allarm state to MQTT, so that HA can read and control the alarm. Hence, you’ll need to configure an MQTT Alarm Control Panel in HA (https://home-assistant.io/components/alarm_control_panel.mqtt/) and then configure my addon to send and receive updates on the same topics. As for the MQTT broker, you can pick whatever suits you best. If you use HASSIO, you can use the MQTT addon that comes with it (this is my setup). You can alternatively install mosquitto separately (say, on a different machine), or you could consider using the mqtt broker that comes embedded into HA (https://home-assistant.io/components/mqtt/). Entirely your call.

As always, please let me know your mileage with this rough software, and we can take it from there!


#9

Hi @alfredo,

I’ve removed all the local code and git cloned again your repo. Whatever I do hassio keeps displaying v.0.1 (and with recent updates the look&feel has changed a lot - the shopping bag is now gone). Could you provide guidance here?

thanks


#10

Hi @kitus,

I believe I’ve experienced a similar pattern. Have you tired restarting hassio? There used to be a “rewind arrow” to refresh the repository, but with the new layout I can’t find that anymore.


#11

Yes, prior to posting I did restart hassio but I can’t refresh the local repo (can’t find where I should click).


#12

Hello @alfredo,

once again, many thanks for putting this together. I’ve today spent some time configuring your add-on following my heart and I think I’ve managed to “read” the state of the alarm at some point. For doing so, I’ve installed Google MQTTLens on my computer, connected to my hass.io and suscribed to the topic #. Once I did that, I managed to “see” a “Connected” message on the app (RETAIN flag seems to also be active), which makes me feel very positive this may lead to some positive results. However, regardless of whether I armed or disarmed the system, the MQTT app will always reflect “Connected”. It is worth noting that I used the following credentials to connect to the hass.io mqtt services:
ip address: hass.io LAN ip
username: ANOTHERUSERNAME
password: ANOTHERPASSWORD

Do you happen to have a guidance somewhere on how to configure this? There are some moving parts involved, and I’m not aware of any documentation that you may have published. If it exists, could you kindly point me to it?

This is what I’ve done:

  1. Installed the mosquitto add-on on my hass.io and configured it like this

    {
    “plain”: true,
    “ssl”: false,
    “anonymous”: true,
    “logins”: [
    {
    “username”: “ONEUSERNAME”,
    “password”: “ONEPASSWORD”
    }
    ],
    “customize”: {
    “active”: false,
    “folder”: “mosquitto”
    },
    “certfile”: “fullchain.pem”,
    “keyfile”: “privkey.pem”
    }

  2. I configured the configure.yaml file with this data

     mqtt:
       broker: xxx.cloudmqtt.com
       port: xxx
       keepalive: 60
       client_id: xxx
       username: CLOUDMQTTMYUSER
       password: CLOUDMQTTMYPASS
       discovery: True
    
     alarm_control_panel:
       - platform: mqtt
         state_topic: "Paradox/Events"
         command_topic: "Paradox/C/P1"
         payload_disarm: "Disarm"
         payload_arm_home: "Sleep"
         payload_arm_away: "Stay"
         code: MYPANELCODE
    
  3. modified the local file options.json like this

core-ssh:~# cat /addons/Paradox_IP150/options.json
{
“IP150_ADDRESS” : “http://LOCALIP_IP100:10000”,
“PANEL_CODE” : "MYPANELCODE,
“PANEL_PASSWORD” : “MYPANELPASSWORD”,
“MQTT_ADDRESS” : “mqtt://core-mosquitto”,
“MQTT_USERNAME” : “ANOTHERUSERNAME”,
“MQTT_PASSWORD” : “ANOTHERPASSWORD”,
“ALARM_PUBLISH_TOPIC” : “paradox/alarm/state”,
“ALARM_SUBSCRIBE_TOPIC” : “paradox/alarm/cmnd”,
“CTRL_PUBLISH_TOPIC” : “paradox/ctrl/state”,
“CTRL_SUBSCRIBE_TOPIC” : “paradox/ctrl/cmnd”
}

  1. In the configuration part of your add-on I used this:

    {
    “IP150_ADDRESS”: “http://LOCALIP_IP100”,
    “PANEL_CODE”: “MYPANELCODE”,
    “PANEL_PASSWORD”: “MYPANELPASSWORD”,
    “MQTT_ADDRESS”: “mqtt://core-mosquitto”,
    “MQTT_USERNAME”: “ANOTHERUSERNAME”,
    “MQTT_PASSWORD”: “ANOTHERPASSWORD”,
    “ALARM_PUBLISH_TOPIC”: “paradox/alarm/state”,
    “ALARM_SUBSCRIBE_TOPIC”: “paradox/alarm/cmnd”,
    “ZONE_PUBLISH_TOPIC”: “paradox/zone/state”,
    “CTRL_PUBLISH_TOPIC”: “paradox/ctrl/state”,
    “CTRL_SUBSCRIBE_TOPIC”: “paradox/ctrl/cmnd”
    }

Despite the fact that I think I managed to see some mqtt traffic on my laptop, which was allegedly originated in my alarm, I can’t help it but to have the feeling that one can configure things in two different places, and you never know where it is right, or what the system will pay attention to. This is the case for example for the MQTT add-on (and I know this is a standard add-on but it frames the case very well), because as you can see I’ve configured two different usernames and passwords and it seems it is able to connect (see ONEUSERNAME vs ANOTHERUSERNAME for example).

Same happens with your add-on. It seems to me that one can/?must? configure things in two different places. This is a point of failure as you can end up changing things on one file and not on the other one. Also, on your add-on there is even a third file called config.json, but I’ve left it with the default values.

At this point I have the following open loops:
i. I would like to verify my current setup and see where it not correct
ii. I would like to simulate activity and confirm hass.io has visibility
iii. I would like to be able to read the activity off the network, because I only see messages coming in in the app when I arm or disarm the system, but given that I have PIR sensors all around, I can very easily generate activity.

One other thing, hass.io displays the alarm entity as unknown like it is described in the documentation

If these messages are published with RETAIN flag, the MQTT alarm panel will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state will be unknown.

Is there any chance you could give me a hand with this? Apologies for the length of the post but I wanted to provide as much information as possible.

Many thanks in advance,


Request for addon for Alarm panel Paradox IP150
Paradox Security System
#13

Hello @alfredo,

You and @kitus motivated me to set up my connection to my Paradox IP150.

I used Mosquitto in stalled directly as Hassio addon.

Addon config:
{
“IP150_ADDRESS”: “http://192.168.1.26”,
“PANEL_CODE”: “xxxx”,
“PANEL_PASSWORD”: “*****”,
“MQTT_ADDRESS”: “mqtt://core-mosquitto”,
“MQTT_USERNAME”: “myusername”,
“MQTT_PASSWORD”: “*******”,
“ALARM_PUBLISH_TOPIC”: “paradox/alarm/state”,
“ALARM_SUBSCRIBE_TOPIC”: “paradox/alarm/cmnd”,
“ZONE_PUBLISH_TOPIC”: “paradox/zone/state”,
“CTRL_PUBLISH_TOPIC”: “paradox/ctrl/state”,
“CTRL_SUBSCRIBE_TOPIC”: “paradox/ctrl/cmnd”
}

configuration.yaml

mqtt:
broker: core-mosquitto
username: myusername
password: mypassword

sensor:

  • platform: mqtt
    state_topic: 'paradox/alarm/state/1’
    name: Alarm State
  • platform: mqtt
    state_topic: 'paradox/zone/state/1’
    name: Zone 1
  • platform: mqtt
    state_topic: 'paradox/zone/state/2’
    name: Zone 2

From outside everything looks ok, my Paradox IP150 is busy with the connection I cannot even log in on the web, because it is busy feeding Hassio, but even if I do Cotton Eye Joe dancing front of the PIRs they are always off. As @kitus mentioned I also checked MQTT with Google MQTTLens and I also see the PIRs, but they are off all the time.

I am not an expert in this, I am not sure what is wrong.

My Paradox details:
Panel
Type SP6000
Firmware version 4.94

EDIT: Looks like I was just not patient enough. It is working now. :slight_smile:


#14

Hi all, I am trying to install this on Hass.io.

I now managed to get to the point whereby I can see the Paradox IP150 MQTT adapter addon available for installation.

The problem is that when i hit install, the “install” button turns red and then back to the usual blue colour.

And the addon is not installed.

The system log shows this:

8-03-09 15:39:19 INFO (SyncWorker_4) [hassio.docker.addon] Start build local/i386-addon-paradox_ip150_mqtt:0.2
18-03-09 15:39:19 ERROR (SyncWorker_4) [hassio.docker.addon] Can’t build local/i386-addon-paradox_ip150_mqtt:0.2: Please provide a source image with from prior to commit

Any thing I can do to rectify?

Thanks


#15

Hi @grunwald, would you care to provide guidance if I contact you privately? I’m at a loss and I’m struggling to troubleshoot the problem. I’m stuck :frowning:


#16

Hi again, I really hope someone would take a look and let me know why the configruation is not working for me.

For a start, I have confirmed that if I start a mosquitto_sub in a putty window, I am able to receive the payload that is manually sent from hassio so that is telling me that mosquitto is setting up properly.

But the IP150 panel is just not sending the information to hassio.

this is what I have configured.

In Configuration.yaml

mqtt:
  broker: core-mosquitto
  port: 1883
  username: mqttbroker
  password: j4222949

sensor:
  - platform: mqtt
    state_topic: "paradox/alarm/state/1"
    name: "Alarm State"

  - platform: mqtt
    state_topic: "paradox/zone/state/1"
    name: "Zone 1"

  - platform: mqtt
    state_topic: "paradox/zone/state/2"
    name: "Zone 2"

  - platform: mqtt
    state_topic: "paradox/zone/state/3"
    name: "Zone 3"

  - platform: mqtt
    state_topic: "paradox/zone/state/4"
    name: "Zone 4"

  - platform: mqtt
    state_topic: "paradox/zone/state/5"
    name: "Zone 5"

  - platform: mqtt
    state_topic: "paradox/zone/state/6"
    name: "Zone 6"

  - platform: mqtt
    state_topic: "paradox/zone/state/7"
    name: "Zone 7"    

  - platform: mqtt
    state_topic: "paradox/zone/state/8"
    name: "Zone 8"

And in config of Paradox IP150 MQTT Adapter

{
  "IP150_ADDRESS": "http://192.168.1.8",
  "PANEL_CODE": "4204",
  "PANEL_PASSWORD": "j4222949",
  "MQTT_ADDRESS": "mqtt://core-mosquitto",
  "MQTT_USERNAME": "mqttbroker",
  "MQTT_PASSWORD": "j4222949",
  "ALARM_PUBLISH_TOPIC": "paradox/alarm/state",
  "ALARM_SUBSCRIBE_TOPIC": "paradox/alarm/cmnd",
  "ZONE_PUBLISH_TOPIC": "paradox/zone/state",
  "CTRL_PUBLISH_TOPIC": "paradox/ctrl/state",
  "CTRL_SUBSCRIBE_TOPIC": "paradox/ctrl/cmnd"
}

And in /addons folder of hassio, config.json is as follows:

{
  "name": "Paradox IP150 MQTT Adapter",
  "version": "0.2",
  "slug": "paradox_ip150_mqtt",
  "description": "Expose an MQTT interface for the Paradox IP150 web interface",
  "url": "https://github.com/alfredopironti/Paradox_IP150",
  "startup": "services",
  "boot": "auto",
  "options": {
	"IP150_ADDRESS" : "http://192.168.1.8",
	"PANEL_CODE" : "4204",
	"PANEL_PASSWORD" : "j4222949",

	"MQTT_ADDRESS" : "mqtt://core-mosquitto",
	"MQTT_USERNAME" : "mqttbroker",
	"MQTT_PASSWORD" : "j4222949",

	"ALARM_PUBLISH_TOPIC"   : "paradox/alarm/state",
	"ALARM_SUBSCRIBE_TOPIC" : "paradox/alarm/cmnd",
	"ZONE_PUBLISH_TOPIC"	: "paradox/zone/state",
	"CTRL_PUBLISH_TOPIC"    : "paradox/ctrl/state",
	"CTRL_SUBSCRIBE_TOPIC"  : "paradox/ctrl/cmnd"
	},
  "schema": {
	"IP150_ADDRESS" : "url",
	"PANEL_CODE" : "str",
	"PANEL_PASSWORD" : "str",

	"MQTT_ADDRESS" : "url",
	"MQTT_USERNAME" : "str",
	"MQTT_PASSWORD" : "str",

	"ALARM_PUBLISH_TOPIC"   : "str",
	"ALARM_SUBSCRIBE_TOPIC" : "str",
	"ZONE_PUBLISH_TOPIC"	: "str",
	"CTRL_PUBLISH_TOPIC"    : "str",
	"CTRL_SUBSCRIBE_TOPIC"  : "str"
	}
}

And lastly options.json also in /addons folder is:

{
	"IP150_ADDRESS" : "http://192.168.1.8",
	"PANEL_CODE" : "4204",
	"PANEL_PASSWORD" : "j4222949",

	"MQTT_ADDRESS" : "mqtt://core-mosquitto",
	"MQTT_USERNAME" : "mqttbroker",
	"MQTT_PASSWORD" : "j4222949",

	"ALARM_PUBLISH_TOPIC"   : "paradox/alarm/state",
	"ALARM_SUBSCRIBE_TOPIC" : "paradox/alarm/cmnd",
	"CTRL_PUBLISH_TOPIC"    : "paradox/ctrl/state",
	"CTRL_SUBSCRIBE_TOPIC"  : "paradox/ctrl/cmnd"
}

I have all the sensor bubbles on Hassio shown (i.e. alarm state, zone1 to zone 8) but none are changing states when the PIR is activated, etc.

What have I done wrong? This is driving me crazy because I think I have done exactly what the addon says.

Thanks a bunch.


#17

Hi @kitus,

To be honest I am not sure what is the magic. I did everything what I describe above, it didn’t worked. But next day when I came back, somehow it started working.

I think it is a good sign if you see, that your MQTT see the zones. I used the Google MQTTLens Chrome addon and the # sign. I was able to see all my 32 zones. Then the other good sign was, that I have seen, that the MQTT communicating with the Paradox alarm system, because I was not able to log in. (It doesn’t let you double log in).

So I was waiting and now it looks like this:

I did the icons by myself in the customize.yaml file. What I see, the system is still a bit buggy. Sometimes it frozen, sometimes working like a charm.

So ones again:

Paradox IP150 MQTT Adapter

Set up mqtt:

configuration.yaml

mqtt:
  broker: core-mosquitto
  username: mqttusername
  password: mqttpassword

sensor: 
  - platform: mqtt
    state_topic: 'paradox/zone/state/1'
    name: Living Room PIR`
  - platform: mqtt
    state_topic: 'paradox/zone/state/2'
    name: Living Room Glass   
  - platform: mqtt
    state_topic: 'paradox/zone/state/3'
    name: Kitchen Smoke  
  - platform: mqtt
    state_topic: 'paradox/zone/state/4'
    name: Kitchen PIR
  - platform: mqtt
    state_topic: 'paradox/alarm/state/1'
    name: Alarm State

customize.yaml

sensor.back_door:
  icon: mdi:door
sensor.bathroom:
  icon: mdi:walk
sensor.kitchen_smoke:
  icon: mdi:fire
sensor.living_room_glass:
  icon: mdi:image-broken
sensor.siren_error:
  icon: mdi:alert-circle-outline
sensor.upstairs_bath_window:
  icon: mdi:window

What I still don’t know yet, how can I arm and disarm the alarm. This part is not working for me and I don’t know, what is wrong:

 alarm_control_panel:
   - platform: mqtt
     state_topic: "Paradox/Events"
     command_topic: "Paradox/C/P1"
     payload_disarm: "Disarm"
     payload_arm_home: "Sleep"
     payload_arm_away: "Stay"
     code: MYPANELCODE

#18

Hi grunward, good to see your config. I checked that it is almost identical to what I had but mine is not working at all. Incidentally I also have a SP6000 panel.

Could you please tell me what is the firmware version of your SP6000 and IP150? I am wondering if the firmware version contribute to my current difficulties.

Thanks


#19

Hi @fliptoback, as you see in my previous post:


#20

Sorry grunwald for missing that info in your post.

Could you please give the firmware of your IP150?