AAP (Arrowhead) ECi Alarm Binding

Anyone out there using an AAP (Arrowhead) ECi Alarm module, who would be interested in assisting with the design/development or testing of a binding for this Alarm?

Courtesy of ‘Winter’ which seems to have started 6 months early this year :slight_smile: I have started building a prototype (with the help of some vibe coding), and at this stage I am just focusing on status of items (i.e. Read only).

So far, I have the following working:

  • Connectivity:

    • TCP connection
    • Handling of user/password, where set in the alarm
    • Reconnection handling
    • Keep-Alive
    • NO Serial connection (Not sure I will bother, given this unit comes with Ethernet/TCP Control Port onboard base unit)
  • Base Panel ‘Bridge’ Thing:

  • Alarm Panel Health Thing

With a few channels for starters:

  • Zone Thing

Also with a few channels for starters:

Note I have 3 switch channels for various states, but also a combined Zone Status String, which reflects the last zone status from the Alarm. Not sure how useful this is, but I figure why not give people the choice.

  • Area Thing

And just one basic channel in there for testing for now.

All of the above actually works just fine in basic integration testing both using the ncat (to emulate the alarm panel) for more extensive test scenarios, than my neighbours would appreciate with the action alarm going off !!, and then used the actual alarm panel to test more basic scenarios.

Connection, Authentication, Re-connection, Thing Status propagation, Item updates etc seems to work ok so far.

Where to from here?

I might not have a lot of time to significantly progress this much in the next few months, but what I am keen on is to find a few people who are interested in pursuing this, and may be able to help with design, peer-review, testing etc.

Right now, before I commit a lot of time to elaborating it into a more feature-rich prototype, I am keen to get some input on the design/layout/naming of things & channels.

I had considered providing all Alarm zones as channels on a base-thing, but with up to 248 zones, and various switches for each channel, I thought it would be messy, so went for a thing for each zone instead.

For now, I have not worried about Output & Zone expanders, as the alarm abstracts that complexity for us, but maybe in future could add a thing just to pick up the tamper channels etc available on each expander.

Staying away from discovery, as there is no real command available to show you all configured zones etc, but perhaps in future, a real basic version which ‘discovers’ a zone (or output) when an ID comes though from the alarm, which is not yet configured as a thing.

And then maybe mid this year we can get a ‘Alpha’ version out there for testing into Marketplace (few things I need to figure before I can publish it!!)

Any input welcome.

Ok - I did manage to get a bit further than expected, and have an initial ‘Alpha’ version of the binding ready for initial testing:

  • Primarily read-only at this stage, to bring alarm status into OpenHAB (presence detection, alarms, system failures etc)
  • If you must, there is an (untested) 'Write Command Channel’ available on the Panel Health thing:
    • You can use that to push through commands to the panel, until the binding is extended to support specific control channels.
    • Use with caution, as there is no vetting of the raw commands you may choose to send
    • Especially stay away from the ‘KEYS’ command, as other commands may be sent intermittently from the binding, and end up interspersed with your KEYS sequences
  • This was built and tested against 5.2.0-SNAPSHOT
  • I have only focused on using TCP for connections to the panel. Given the panel ships with this capability built-in (Has an Ethernet port on-board), and serial requires purchase of an additional module, I cannot really see the point of supporting serial at this stage

Some things to note:

  • The Alarm Integration Virtual Keypad Mode must be set to ‘4’ to work with this binding
  • The Default ID for the virtual Keypad is 32. Make sure this keypad has the correct privileges, and is assigned to the Area(s) you want to monitor (will probably be more important when we start building control functions)
  • Warning: If you do have another device connected to the serial port of the Alarm, connecting to the TCP port stops updates being sent to Serial Port, and commands being received via there, until you drop the TCP connection
  • This is not an officially provided or supported binding for the ECi alarm.

The binding will read-in the above innformation, and display it in the thing-properties, along with a configuration error, if you have the wrong mode set on the Alarm:

Testing/Prototyping:

There are also some utilities for testing purposes (in the dev-resources directory), the first being rebuild_elitealarm.py, which creates a whole bunch of test things, and items, and also builds a MainUI Dashboard for testing purposes:

This is only intended for running against a test OpenHAB instance, given it deletes/creates things/items, but it is a very effective way to build up a test environment for this binding from the ground up. Just create a token, and add it to config.json (see config.json.sample for format).

The other utility is ‘server.py’ which emulates a AAP ECi alarm panel. Simply run this (python3 server.py) and it will be listening on port 9000 on your local server (Same as the ECi alarm), waiting for connections from the OpenHAB binding.

Then you can connect to its Web Front End (default Port 8081), and you can then manipulate scenarios from this, which are sent to the binding, and should be reflected in the above test page:

There is also a window which shows sent commands to the binding (white) and commands received from the OpenHAB binding (red). These are delayed by around 2-3 seconds.

You can also simulate disconnects, where the TCP connection is forcibly dropped, or timeouts etc.

Clicking on the various buttons will make the respective function active, and send the state to OpenHAB (And also are sent in response to subsequent STATUS requests).

Source can be found here:

And a pre-built jar for 5.2.0-SNAPSHOT here:

Have a play, and any feedback/suggestions would be welcome, but as I mentioned in the original post, this is part-vibe-coded, but has been tested thoroughly, so still may not be quite ready for you production system yet ….Your call !!

Cheers