Paradox Alarm MQTT Hassio addon

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

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!

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

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.

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

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,

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:

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

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:

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.

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

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

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

Sorry grunwald for missing that info in your post.

Could you please give the firmware of your IP150?

Hi all,

I’ve got an SP6000 and IP150 v4.10.
I’m trying to use the addon. It seems connect to the IP150, but the states don’t change. (Except the paradox/ctrl/state).
I googled a lot about this subject and I find an intresting thing.
My IP150 (firmware 4.10) web interface appearance not the same as in the paradox user guides. I don’t have menus.
Could it be the problem?

Thank you

I am finding the exact same thing with my IP150 too.

My SP6000 firmware is 5.19.
My IP150 firmware is 1.39.02, hardware 020

I am also wondering why the MQTT never work for me.

Hi, anyone has any further development on this one?

Still trying to find out what is the firmware version of IP150 for those of you whose mqtt setup works.

Thanks

Ciao @alfredo

I just discovered your add-on and I’m trying to configure it.

My HW is:

SP6000
Firmware version	5.18

IP module 150
Firmware version	1.39.02

the IP150 port are different than standard, and I use SSL, so even if I go to http://paradoxip:xx it switches to https://paradoxip:yyy

where xx and yyy are different than standard 80 and 443

the addon configuration is

{
  "IP150_ADDRESS": "http://192.168.0.23:xx",
  "PANEL_CODE": "panelcode",
  "PANEL_PASSWORD": "panelpasswd",
  "MQTT_ADDRESS": "mqtt://core-mosquitto",
  "MQTT_USERNAME": "mqtuser",
  "MQTT_PASSWORD": "mqttpasswd",
  "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"
}

I’m using Hass.io latest version with included mqtt broker

I’m getting these errors in log:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 601, in urlopen
    chunked=chunked)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 346, in _make_request
    self._validate_conn(conn)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 850, in _validate_conn
    conn.connect()
  File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 326, in connect
    ssl_context=context)
  File "/usr/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 329, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/lib/python3.6/ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "/usr/lib/python3.6/ssl.py", line 814, in __init__
    self.do_handshake()
  File "/usr/lib/python3.6/ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:777)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 440, in send
    timeout=timeout
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 639, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 388, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='192.168.0.23', port=421): Max retries exceeded with url: /login_page.html (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:777)'),))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "ip150_mqtt.py", line 123, in <module>
    ip_mqtt.loop_forever()
  File "ip150_mqtt.py", line 105, in loop_forever
    self.ip.login(self._cfg['PANEL_CODE'], self._cfg['PANEL_PASSWORD'])
  File "/ip150.py", line 129, in login
    '{}/login_page.html'.format(self.ip150url), verify=False)
  File "/usr/lib/python3.6/site-packages/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/lib/python3.6/site-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 506, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='192.168.0.23', port=421): Max retries exceeded with url: /login_page.html (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:777)'),))
probably since this error no sensors are shown.

Any suggestion on what I’m doing wrong?

Thanks

Ur MQTT u ask the driver to check @
“ALARM_SUBSCRIBE_TOPIC” : “paradox/alarm/cmnd”,
You tell HASS to send to :
command_topic: “Paradox/C/P1”

So your commands wont get executed by the driver

Very nice idea.
I am also trying to set it up, w/out much success.