Ajax alarm system

Wait what!? Are you saying that without any additional hardware I can read the Ajax alarm status in HA? If so this is amazing! I love my Ajax alarm but wish I could get the status in HA (armed, disarmed, intrution detected). Are these three states the ones that you get and it is updated every minute?

I have been in contact with Ajax and IFTTT is something they are working on (again) so that will hopefully be amazng too.

1 Like

:slight_smile: yes, the code needed is made by CheaterDev and can be downloaded from here:


All SIA codes supported by the SIA protocol can potentially be used. CheaterDev has not developed for all of them but fire, leak and burglar alarm status works. And if the alarm is armed or not.

Also, see my modified code in the posts above to get support for multiple zones and especially the TR code which is needed to properly reset the alarm state after a triggered alarm.

Amazing! Thanks! I don’t have Home Assistant yet so just needed to be sure I understood this correct :grinning:

1 Like

The only thing you have to do it type in the IP address and the port on Ajax HUB of your homeassistant so Ajax connects to HomeAssistant as a control central.

yeah that is perfect, I don’t want my alarm system controlled by HA exactly because of security considerations, just want to read status. And my system should arrive today!

I sorry for my English…I’m trying to setup mu Ajax hub whit home assistant but I receive this error

Setup failed for sia: Invalid config.
23:51 setup.py (ERROR)
Unable to import sia: No module named ‘sseclient’
23:51 config.py (ERROR)

this is my configuration

port: 8250
- name: casa
account: AAA

where the port is the port of my home assistant and it is configured in the surveillance station of Ajax app whit the ha ip and ha port.
can you help me please thank so much

Hi all, I’ve taken @CheaterDev s repo and set it up to work with HACS, so you can add the custom repo with this link: https://github.com/eavanvalkenburg/sia as an Integration, to get the component through the community store. I also plan to further develop the component since I now have an Ajax system, so feel free to put in issues and PRs there!


hi all, I’ve made some major updates to the component, same link as before, watch out because the config is very different as well. It now has the ability to specify zones with specific sensors in each (for instance if you have a zone with and without a smoke detector). But it will also auto-discover sensors once your system sends a message that is mapped to a particular type of sensor. The very least you get is a sensor.hubname_last_heartbeat which shows when the last RP messages came in, and it will put into the attributes YG messages. If there are other message types that should do something let me know of create an issue or PR in the repo. In the repo a doc with all SIA protocal messages is also present. Have fun!

A full config here:

  port:  port
    - name: hubname
      account: account
      encryption_key: password
        - zone: 1
          name: zonename
           - alarm
           - moisture
           - smoke

Amazing stuff! Good work! I will test this out as soon as I can.

Hi, i don’t know where else to ask but i will give it a try here, i don’t have an ajax alarm home but in our office we do and is 100% compatible with a regional monitoring station to receive signals from the AJAX alarm using the SIA protocol. Is it possible from my home assistant by utilising the same protocol to connect to the monitoring station from my HA instance ? i am very happy with HA as alarm since i have every sensor imaginable integrated i just need an alert to the monitoring station if the alarm is triggered. sorry if i am way off topic.

Hi Eduard, this is great.
I got it to work and have the following ‘issues’

  1. Each minute my log says:
    “2019-09-26 21:11:56 ERROR (Thread-2) [custom_components.sia] subsection not found”
    Any idea where this is coming from? I did at first not have any zones configured in the hub, but when I did and added the ‘zones’ part in the config, the issue persists, so that does not look related. Despite the ‘subsection not found’ it looks like is is working though.

  2. When homebridge restarts it forgets the entity (alarm_control_panel.ajax_1_alarm in my case). The only way to have it available again is to ‘arm’ the system once. However the ‘smoke’ alarm sensor is also not listed. I do not plan to create a fire to get the entity :slight_smile:
    I did not had this issue with the ‘Cheaterdev/sia-ha’ version.

(encryption is anabled with 16 characters, and ping interval is set to 1 in the hub and ha config)

Hi @mandark, Thanks for trying it, I’ve been working on a major rebuild and that is in the Beta branch on github, that has a fix for the subsection error, but since I haven’t finished testing all the other improvements, no guaranteeL on other errors! I noticed in my own setup the same so I’ll have to look into that, but I’m traveling so want be able to do that until next week, prob Thursday.

1 Like

Hi Eduard, I have installed the beta version, and added as a quick workaround for the second issue to the end of ‘def init(self, hass, hub_config)’ in the file “init.py” the following:

sensor_id = self._upsert_sensor(1, DEVICE_CLASS_ALARM)
self._states[sensor_id].state = STATE_ALARM_DISARMED
sensor_id = self._upsert_sensor(1, DEVICE_CLASS_SMOKE)
self._states[sensor_id].state = False

(I do not have the flood sensor)
I think a more permanent solution would be to read the zone section from config file and set the default values of the defined sensors to their ‘clear’ states.

Hi @mandark and others, just released a new version, should have many fixes, and I’ve also improved the debug logging to make it a bit easier to track when something goes wrong. v0.2!

Hi everyone! It’s Cheater.dev here.
I’m really glad that someone took my work to improve.
I have not so much time to make this integration with such quality as @eavanvalkenburg did it. Also, this was my first attempt to python :slight_smile:
As i’m using my integration from the beginning - i have an issue that i can’t understand how to properly fix: under heavy local network load on same machine(like torrents at 600+mbit/s) - something happens, and Ajax hub stops sending events and doesn’t reconnect. Only HA restart fixes the problem - so there is so strange code in my network acceptor code. Did anyone had same issue?

Also some people were saying to me that there is a opportunity to send back to Ajax hub some codes to change alarm state with ofiicial SIA API. I can’t find anything about that in documentation…


Dear @eavanvalkenburg , I installed your component using HACS: It works!


1 Like

Ok, maybe I’m stupid or something but after installing this with minimal config I get the sensor.ajax_last_heartbeat. But nothing is added after that, even arming/disarming.

Edit: Ok so I am stupid, had the wrong IP in Ajax app so now it is updating heartbeat entity,

I don’t understand how to set up the full configuration - what is the zones? I don’t have any zones in HA and neither in Ajax. Is it the same as rooms? In Ajax app the Monitoring station reports “Not Connected”.

Edit: Still don’t understand the zones. Tried to randomly add zone 1 as in the example and now my hub and one of the smoke detectors show up.

Any tips?

After reboot home assistant, the alarm_control_panel state is always disarmed.
How to restore the real state ?

In my case I needed to install ‘sseclient’ manually to fix unable to import sia errors:

pip3 install sseclient

I’m using Home Assistant in a virtual environment on a Raspberry Pi.

@eavanvalkenburg kudos for your efforts! I see you are eager to respond and update the implementation, which is wonderful! After 1,5 years I finally have states from my AJAX system. Next to HA I also have a Homey which I can now populate with these states, awesome!

1 Like

The Ajax alarm system has support for multiple zones. This means that you can split your alarm into different zones such as one for your home and another one for e.g. the garage. You can then control the alarm state independently for each zone so that the garage zone is armed but the home zone is disarmed. Everybody has at least one zone and since you do not know what zones are you probably only have one.

The original sia-ha code did not have support for multiple zones which meant that it didn’t work for everyone with more than one zone. Now we have the possibility to define how many zones we have which is great.