Integrating GE Concord alarm system

I know this an old thread but it seems to have most of the knowledge and people who may know what I have either done wrong or, not yet done.

I have just started on the journey to integrate my GE/Concord system into HA. I bought the serial adapter GE/INTERLOGIX SECURITY Superbus 2000 Automation Module 42-400 Rev G and have installed this with just 4 wires (+12V, GND, BUS A and BUS B). Is that right? There are six screw terminals.

I am using a Pi 4 2GB as the remote Concord232_server running Buster. I have the line
sudo concord232_server --listen 127.0.0.1 --serial /dev/ttyUSB0 # becaue it really is ttyUSB0 in crontab so that it starys at boot.

When I type: ‘concord232_client summary’ I get a screenful of error messages each time I run it.

I am accessing the Pi via ssh since the concord and the Pi are in my walk in closet. So far I have not progressed to even trying HA. I need to fix this first.

Here the error messages I am seeing each time. Any help is most welcome.

Thanks
Pete

pi@Sec:~ $ concord232_client summary
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 162, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw)
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 80, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 70, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 354, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3.7/http/client.py", line 1264, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1310, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1259, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/lib/python3.7/http/client.py", line 974, in send
    self.connect()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 184, in connect
    conn = self._new_conn()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 171, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fb036ce80>: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 399, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=5007): Max retries exceeded with url: /zones (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fb036ce80>: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/concord232_client", line 135, in <module>
    main()
  File "/usr/local/bin/concord232_client", line 128, in main
    do_summary(clnt, args)
  File "/usr/local/bin/concord232_client", line 63, in do_summary
    for zone in sorted(clnt.list_zones(), key=lambda k: k['number']) :
  File "/usr/local/lib/python3.7/dist-packages/concord232/client.py", line 13, in list_zones
    r = self._session.get(self._url + '/zones')
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 548, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 535, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 648, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=5007): Max retries exceeded with url: /zones (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fb036ce80>: Failed to establish a new connection: [Errno 111] Connection refused'))

Can you make sure you pushed these changes? I too want to be able to trigger my concord4 alarm over Home Assistant. I grabbed your changes from your repository and it still did not work. Note: My repository is at GitHub - whittin3/concord232

I tried your repo and the install failed.

I tried it twice and got the same error both times.

I have had some success with Jason Carter’s https://github.com/JasonCarter80/concord232 tool but conneot make it provide utput via concord232_client summary I am not sure why since concord232_client arm-stay --host xxx.xxx.xxx.xxx:5007 and disarm both work fne now.

I can issue the same commands from both the Pi 4 connected to the Concord4/Automation Module or from the HA server with the same results. AT least it is consistent!

I also have no HA entities showing so I cannot put the alarm on a Dasboard. If anyone can help here I would be much obliged.

Yes, I know the Concord 4 is very old but it came with my house and so far has worked flawlessly - It just does not seem to wish to integrate.

Hey guys. It is all fixed and working perfectly. My Concord 4 is now integrated.

Hey Pete, I’m encountering similar struggles to ones you mentioned, I’ve been trying to use Jason Carter’s repo but I can’t seem to get the server up without encountering errors. Any chance you could share what worked for you?

Ok, I hope a few of you (@ConcordGE and others) are still lurking here.

I’ve had my Concord4 working with other home automation servers for 10 years via the bus. Just now switching to HA. I installed HA on a little piece of hardware I have that has built-in serial ports. I couldn’t find clear instructions on what to do, so this is what worked so far:

  1. It took a few hours of messing with the HAOS cli, but I managed to launch concord232_server in a venv on my HA server. I don’t want to break the system-wide-break, so I did it in a venv. Running concord232_client summary works PERFECT, so all of what I thought was the hard part works great. Relays that open and close are updated in the summary, and if I --debug I can see the feed in realtime. Yay.
  2. I am able to then “bg” run the server in the background and deactivate the venv (which doesn’t actually deactivate it, it just bumps my cli to the main level instead of inside the venv). Running “ps” still shows that the concord232 is humming along nicely in its virtual environment.
  3. This is where I fail: I add the alarm panel to my config yaml and all I get is an HA error on restart:

    The concord232 says its starting a webserver and everything normal:

    So, it seems to me that it should be running just fine, yet somehow it’s blocking connection requests from HA.

Any insights here? My YAML is pretty basic

alarm_control_panel:
  - platform: concord232

I tried manually adding to the YAML 127.0.0.1 as host, and 5007 as port, and all that does is give me a weirder HA message in the system log where it says I failed to specify a platform (which makes no sense, since platform is clearly specified). But that shouldn’t be necessary anyway since localhost and 5007 are already the defaults.

Thoughts?

Note: I know basically nothing about linux. So, maybe the issue is I’m running the server in a venv and I need to buck up and system-wide-break install it from the main cli outside of the venv. The google machine says that shouldn’t matter, but… ??

I continue to struggle with this. I can see that concord232 is listening on the right port (PID 404) per this:

and with the 0.0.0.0 I believe that represents all known “localhost” addresses. But I continue to get “connection refused” errors. I have manually put in the host and port using localhost, 127.0.0.1, 0.0.0.0, and still no dice.

Here’s the error I continue to get:


I wonder if the error is because it’s using localhost, the server is attempting to use just the local URL, so just “/partitions” instead of localhost:5007/partitions? I can see online that people say Flask servers referencing localhost should just drop everything but the relative directory, which maybe is causing the request to no longer use the correct port either? I don’t know. I don’t know what the response is supposed to look like from the Flask server, but when I attempt http://:5007/partitions from a browser on a different device on my network, I get the same “Connection Refused” error in Chrome. Not sure if that should work or not anyway, so I’m not as worried about that…

–EDIT—
SOLVED!! LOOK HERE if you’re trying to run the concord232 server on the HA hardware instead of on a separate device!

Ok, my last post was really close to the mark. I don’t have a way to prove it, but I’m 95% sure that concord232 is using relative URLs when the host is “localhost”, which means it’s dropping the actual host/port and trying to pull the data from “/partitions” alone which doesn’t work. I think it does the same thing when using “127.0.0.1” as well. Curl GET requests made from CLI to either localhost or 127.0.0.1 work perfectly, so I needed to somehow force the alarm_control_panel to NOT use a relative link.

To test this theory, I found that when I start up concord232_server (as shown in the screenshot of my first post above), the server was mounting to several IP addresses including this weird one 172.30.33.0. I have never seen that IP, it’s not part of my LAN subnet, and as far as I know it is not a stand-in for “localhost”. Sure enough, when I put that IP address as host in the alarm_control_panel YAML it must have tricked Flask into thinking it is NOT “localhost”, so it made the GET request without truncating it to the relative link, and VOILA! It worked. I haven’t tested it, but I assume i could have used the server’s LAN IP address as well and probably would have had the same result.

I doubt anyone is maintaining this server, so this will just have to work for people who need it. Although, the fact is, these panels are becoming dinosaurs so it probably doesn’t matter…

This is my concord configuration section:

Concord alarm system integration

alarm_control_panel:

  • platform: concord232
    host: 192.168.1.253
    port: 5007

binary_sensor:

  • platform: concord232
    host: 192.168.1.253
    port: 5007
    scan_interval: 1

perhaps setting the IP will help.

So as of HA version 2024.08.0 Concord232 is turned off in HA. Can anyone provide instructions how to integrate with the concorddd mentioned earlier in this thread instead?

1 Like

I came here to look for the same answer. I upgraded to 2024.08.0 and my concord no longer showed up. I restored back and it works fine. I don’t really want to switch over to Konnected.io just to keep my alarm panel integrated. Any guidance on how to keep my panel integrated with the new HA would be much appreciated.

Concord232 is turned back on in 2024.08.2 I haven’t tried yet, but it appears others have been sucessful.

Thanks for the tip. I moved to another project yesterday to integrate, but am having a few issues. Maybe I’ll make the jump back.