Guide to setup of a NX584E alarm serial interface with HA

Wow! Thank you so much! I used your guide extensively and have achieved success with a nx-8e panel and the built in serial. i used a 10 pin IDC to DB9 cable that was of the intel/DTK pinout, and hooked up to a usb-serial and that did the trick in terms of making the connection. I was using “/dev/ttyUSB0”.

I am running ubuntu with ansible (ansible-nas) controlling everything, including running HA through docker and portainer. I used a docker stack in portainer (using a tweak of the provided docker compose) but I had to edit my container to assign a device (in my case “/dev/ttyUSB0”) after that I was ale to start it cleanly and able to run Nx_584_client summary in the nx584 container console and get feedback on the zones! I was not able to arm and I didn’t try to much via the docker container console.

But then I added the alarm panel and binary sensor to my HA config file and voila, I was able to arm via HA! Haven’t tried disarm yet - family sleeping to don’t want to wake them up,
In my stack i added a mount for the config file /mypath:/config and in my env variable for config I used /config/config.ini

I was just cleaning things up and noticed as you did that I seemed to have to restart HA to reset the connection when the nx-584 restarts.

What are folks using via lovelace for this?

I started using the alarmo HACS integration and it seems good, like an easy way to configure a manual system. I have had to do a couple of things in order to get the foundational pieces where they need to be.

I added these scripts to my scripts.yml, and of course the secrets yml for my code:

  alias: "alarm nx8e disarm"
  - service: alarm_control_panel.alarm_disarm      
      entity_id: alarm_control_panel.nx584
      code: !secret nx8e_code

  alias: "alarm nx8e arm home"
  - service: alarm_control_panel.alarm_arm_home      
      entity_id: alarm_control_panel.nx584
      code: !secret nx8e_code

  alias: "alarm nx8e arm away"
  - service: alarm_control_panel.alarm_arm_away      
      entity_id: alarm_control_panel.nx584
      code: !secret nx8e_code

From here I should be able to integrate my nx panel into the alarmo system by triggering the scripts to arm/disarm as actions within alarmo. Maybe there is a better way to integrate? I haven’t fully tested yet but I am confident it will work.

I also had some input_booleans for my nest camera integration (nest hub max) that alarmo wans’t picking up. In my config yml, in the binary sensor section I used this to turn them into binary_sensors that alarmo was able to pickup, motion and person detected.

  - platform: template
         friendly_name: nest motion on
         value_template: "{{ states.input_boolean.nest_motion_detected_switch.state == 'on' }}"
         entity_id: input_boolean.nest_motion_detected_switch
         device_class: motion
         friendly_name: nest person on
         value_template: "{{ states.input_boolean.nest_person_detected_switch.state == 'on' }}"
         entity_id: input_boolean.nest_person_detected_switch
         device_class: motion
         friendly_name: garage open
         value_template: "{{states.cover.secord.state == 'open' }}"
         entity_id: cover.secord
         device_class: motion

One thing I did notice is that the disarm function in HA stops working when the system has been tripped and wants to be deactivated. For example, if it is armed and I set off a zone, like my front door, that doesn’t trigger the alarm right away but instead asks for me to disarm for X seconds before triggering the full alarm with siren, i can’t disarm from HA.

I need a little help. I know that my pynx584 install is correct because Homebride can conect to it and see all 30 Zones and I can activate and deactive the alarm.

I am trying to get it to now work with HA.

pynx584 is running on my raspberry pi at
I connect to my alarm system over a serial-TCP connect at

I set up my config file to have the following:


  • platform: nx584
    port: 5007


  • platform: nx584
    port: 5007

    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    1: opening
    2: opening
    3: opening
    4: opening
    5: motion
    6: opening
    7: opening
    8: smoke
    9: opening
    10: opening
    11: opening
    12: opening
    13: opening
    14: opening
    15: opening
    16: opening
    17: safety
    25: opening
    26: opening
    27: opening
    28: opening
    29: opening
    30: opening

Unable to connect to NX584: HTTPConnectionPool(host=‘’, port=5007): Max retries exceeded with url: /zones (Caused by NewConnectionError(’<urllib3.connection.HTTPConnection object at 0x7f9df0e370>: Failed to establish a new connection: [Errno 111] Connection refused’))

Any help would be appreciated.

Hi, I am close to getting this working but I am running into a roadblock. I can use nx584_client summary on the pi I have pynx584 installed on and works fine. However, if I try to connect to the ip address I get an error. Same error when HA tries to connect, as follows:

Unable to connect to NX584: HTTPConnectionPool(host=‘’, port=5007): Max retries exceeded with url: /zones (Caused by NewConnectionError(’<urllib3.connection.HTTPConnection object at 0x7eff93c276d0>: Failed to establish a new connection: [Errno 111] Connection refused’))

I am using the following for the client:

nx584_client --host summary

WIthout the host argument, it works fine. IP address is correct. I haven’t changed the default port but it doesn’t seem to respond on this port. nx584_server is running using the nx584.service file and seems to be working properly through the localhost address.

Any help would be appreciated!

Hi Moto,

If you need jumper leads to start your NX then you’re in serious trouble. :slight_smile:
But seriously hard to tell what you are showing, refer to my initial notes. the rp3 to NX serial interface needs to convert true RS232 levels (transmits with +/-12V signal leves) at the NX end to TTL levels at the RP3 GPIO end. Hope this helps, plenty of off the shelf RS232 to 3.3 TTL converters on the market.

1 Like

So I have this working properly I think. At least my devices showed up and get updated. I am having the following issues / not understanding:

  • If I use the alarm panel card in the dashboard, I can’t seem to arm with a code … not sure if there is something additional that needs to be set
  • For certain sensors that don’t normally trip (leak, glass break, door an motion sensors until they trip), the status shows up as “unknown.” If I go to the RPi and use the pynx584 client it lists these as FALSE. Not sure why the status does get set correctly in HA.

Any help would be appreciated.

So I have the alarm panel working and can arm. However, still have the issue with the leak/glass break sensors where they are always “unknown.” Anyone else have this issue or found a workaround?


  1. Enter [9]-[1]-[5]-[#]-[Exit]-[Exit], and wait 12 seconds. (this performs the enrolment process)
  2. Immediately after you press the last [EXIT] key connect the NX584E KB DATA back and ensure it has a good connection at this point it enrols the NX584E

when you say after you press the last [EXIT], connect the NX584E KB DATA back; this is within the 12 seconds of the enrolment process?

Hi guys, I’m trying to use this setup for my Aritech CS575 Panel that works in a very similar way of NX Series. I have made all the setup described above by Robert and got the serial communication working. I’m receiving the following message every about 2 seconds: “002D00031C1433000032ADFC7337”


Have you any idea what the message stands for?

Moreover, running nx584_server it is not possible to get any reading other than the previous mentioned message. Any suggestion?

Thanks for this forum. I was ready to trash my NX8E which is used before with SmartThings with a custom Alarm Bridge made by my LeeFL. Was already thinking about getting the Konnect.

Then saw this forum and found some ideas that I can actually just replace that alarm bridge with something like Serial to TCP/IP. So I bought one on Amazon and gladly report that is working pretty well. The binary sensors are very quick to respond.

Here is the custom add-on

I forked it from ivmarkov/

hi, how is everyone detecting if the alarm is going off with this?



Hey Raptor,

By checking the state of alarm_control_panel.nx584 states are Disarmed and Armed. Without waking everyone up to find out what the state is when triggered, pretty sure it was Alarm.

Many thanks, it looks like it was “triggered”

I’m still getting used to home assistant

New to Home Assistant, coming over from a slowly dying VeraPlus. I’d like to thank everyone for all the great support and addons!!

I have a pretty good understanding of this setup since I’ve been using a serial server to access my NX584 through VeraPlus with the Caddx plugin for many years, however I’m having some issues getting it going on HA.

My HA is running in a VM on a Synology, and I was able to pip install the pynx584 server on my HA VM. I can launch the server using --connect serialserverip:port but I get nothing when I query the summary on the client side.

If I specify a config with zone names, the client summary shows those, but the bypass column is all blank and Status column is all false.

Seems I’m getting connected, but perhaps the server isn’t happy with the format of the data stream from the serial server?

The serial server is set to TCP mode, and it works fine with the Vera Caddx Plugin, so I’m leaning towards an issue with message formatting here?

Id first check you’ve got serial comms happening using a terminal comms as noted in my first post.

Well, serial data is definitely flowing, as I have the TCP stream working just fine in VeraPlus. The serial server allows multiple connections to the stream, but for testing I just unplugged the Vera and started the nx584_server on HA.

I’ve confirmed the connection is live in the serial server from the HA ip, and the nx_584 server doesn’t timeout and it even shows that some frames are discarded.

The serial server is set for 9600,8,N,1 and I’ve tried nx584_server --connect IP:port with and without --baudrate option to no avail.

HA and my alarm panel are too far away to use a direct serial connection to the NX584.

Revisited this today and wanted to provide an update.

I went to my keypad to verify the NX584 configuration

*8 + Program Code
72# for NX584 address
0# for option flags location

Found option 1 was off, which is binary and not ASCII. I had tried

use_binary_protocol = True

In my config but I just got discarded message errors and disconnects in the log, so I went back and changed my NX584 config to ASCII and now everything seems to be working fine.

1 Like

Hi all. I have an NX-8E panel that I basically thought was useless until I started mucking about with Home Assistant and ran across a reference to integrating with the panel. I bought a serial cable and an RS232-ethernet box and installed the pynx584 package on an old Raspberry Pi 3B. When I boot up the server, I get:

$ nx584_server --connect
2024-01-30 16:43:31,847 main INFO Ready
2024-01-30 16:43:31,867 controller INFO Loaded extensions []
 * Serving Flask app "nx584" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
2024-01-30 16:43:31,884 _internal INFO  * Running on (Press CTRL+C to quit)

When I connect via another ssh session and run the client summary, I get:

$ nx584_client summary
| Zone | Name | Bypass | Status |

And the server returns the following:

nx584_client summary
2024-01-30 16:29:17,041 _internal INFO - - [30/Jan/2024 16:29:17] "GET /zones HTTP/1.1" 200 -
2024-01-30 16:29:17,055 _internal INFO - - [30/Jan/2024 16:29:17] "GET /partitions HTTP/1.1" 200 -
2024-01-30 16:29:31,754 _internal INFO - - [30/Jan/2024 16:29:31] "GET /zones HTTP/1.1" 200 -
2024-01-30 16:29:31,768 _internal INFO - - [30/Jan/2024 16:29:31] "GET /partitions HTTP/1.1" 200 -

We haven’t touched the alarm system since we moved in (in fact, I unplugged it so the motion sensor lights would turn off) and I don’t know the state the previous owner left it in. I’m sure they were using a monitoring company, but not sure if they cleared the programming of the system when they left.

Can someone tell me if the client and server responses indicate I am connecting? Where should I go from here?


Since you haven’t touched the alarm system, I would suggest reviewing the NX-8E manual and reviewing/setting the alarm panel config from the keypad based on this:

I think the manual may have the default program code, or it might be found searching the web. If you’re unable to gain access with the default program code, and a monitoring service was used, then it’s likely you’ll need to contact the monitoring company and let them know that you’d like to reset the NX-8E and manage it yourself. This happened to me when I bought my house, and fortunately the local monitoring company was very helpful and just walked me through resetting the program code over the phone. This saved me from having to reconfigure all the zones from scratch.

What was also helpful to me was printing out the configuration worksheets from the manual, then reviewing the settings at the keypad and writing all my settings down. Other than the lack of partition management, I am pretty happy with my setup. It allows me access to all the alarm sensors for automations in HA.

Thanks for the reply. Turns out the default code was overridden, which was smart from a security standpoint, but basically eliminates any chance of reprogramming without reseting to factory defaults. What I’ve read online suggests that is daunting, so I am just going to replace it with a Konnect board and move on with my life :slight_smile: