Custom Component: Crow Runner / Arrowhead AAP 8/16 Alarm IP Module

Hi Wibble,

Welcome to our community. I can answer your question on sensor change periods. It is almost instant; the IP module reflects any change on sensors via telnet and pushes the message to HA; so there is no polling. So; speaking on PIR’s the moment it captures the movement it sends the binary sensor ON, and the moment it loses the movement it sends OFF, there is no timeout; it is instant. You have to put timeouts to the automation on lights, if you are going to use it to control lights, otherwise the light will go on and off according to the PIR on/off pattern. If you ask me this is way better than battery operated 30-60 sec timeout movement sensors; because you have the full control on light timeouts.

In my case, the time it takes for the PIR registers the movement, sends message to HA and HA operates the light is a maximum of 1 sec delay.

There seems to be some weird stuff happening on my network configuration around midnight that breaks connection to the IP Module

2022-06-27 00:14:42 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'TimeoutError'
2022-06-27 00:14:42 ERROR (MainThread) [homeassistant.components.met] Error fetching met data: Update failed:
2022-06-27 00:16:15 WARNING (MainThread) [homeassistant.helpers.entity] Update of sensor.myip is taking over 10 seconds
2022-06-27 00:17:20 WARNING (MainThread) [homeassistant.components.dnsip.sensor] Exception while resolving host: (12, 'Timeout while contacting DNS servers')
2022-06-27 00:30:28 ERROR (MainThread) [pycrowipmodule.crow_base_client] The server closed the connection. Reconnecting...
2022-06-27 00:30:51 ERROR (MainThread) [pycrowipmodule.crow_base_client] Unable to connect to IP Module. Reconnecting...
2022-06-27 00:30:51 ERROR (MainThread) [custom_components.crowipmodule] Could not establish a connection with the Crow Ip Module
2022-06-27 00:31:14 ERROR (MainThread) [pycrowipmodule.crow_base_client] Unable to connect to IP Module. Reconnecting...

The integration is not able to reconnect after that and even restarting from developer tools fixed the issue. Restarting host fixed the problem, will switch to static IP’s to see if this solves the issue.

I can confirm this for my Elite ESL-2 system with the ESL 2 APP Kit module. Reaction seems instant as soon as the led on the sensor goes on the HA App on iPhone shows the detection

@Wibble
If you get an ESL-2 board then you need the ESL-2 APP POD instead of the IP Module.

Quote from AAP

Sweet, so for that one you would need to use the ESL-2 APP POD if you have an ESL-2 or the older IP-MODULE which was used on the old panels.

Make sure you don’t get your hands on the IoT-MODULE or ESL-2 IOT which is our new phone app module, the firmware will not work on these.

Not sure if a loom cable is required for the ESL-2 board my installer only had the DLINK cable which I borrowed to install the mentioned firmware.

Hey Dan, normally this component doesn’t require internet, however i feel like there was a problem with the DNS server or internet connection prior to ip module error? Btw, i always use static IPs for all devices in my home, i have had enough of DHCP. I make the static IP settings on my Unifi router, so that i do not have to work on each device settings seperately.

There could also be a problem if you do not use a separate VLAN for the IP Module…

Hi Erkan,
I setup a separate profile with own IP range and set the ports on the ubiquity switch to use this profile, according what I have read so far about ubiquity this should isolate traffic on that VLAN without having to tag the network interface. I now switched to a static address configured on the supervisor and see how it goes as I am not sure how ubiquity handles the static ip. I usually restrict dhcp range from x.x.x.100 - x.x.x.254 and use ip’s below for fixed ip’s. I will never use all these IP’s but starting from 100 is just easy to remember.

Hi guys!
Maybe someone can adapt this:

to an esp8266…
It would make an easy way to get connection to the alarm in a cheap and easy way…

@febalci

Looks like that in Python 3.10 the crow_base_client.py needs to be adjusted a bit…

Logger: homeassistant
Source: /usr/src/homeassistant/homeassistant/runner.py:96
First occurred: July 9, 2022 at 16:01:01 (1 occurrences)
Last logged: July 9, 2022 at 16:01:01

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File “/usr/local/lib/python3.10/site-packages/pycrowipmodule/crow_base_client.py”, line 195, in keep_alive
await asyncio.sleep(self._alarmPanel.keepalive_interval, loop=self._eventLoop)
TypeError: sleep() got an unexpected keyword argument ‘loop’

checking the file on version 0.27 it shows…

async def keep_alive(self):
    """Send a STATUS keepalive command to reset it's watchdog timer and latest status."""
    while not self._shutdown:
        if self._connected:
            self.send_command('status', '')
        await asyncio.sleep(self._alarmPanel.keepalive_interval, loop=self._eventLoop)

I opened an issue on github on your repository…

Hey @acdcnow , i uploaded pycrowipmodule v0.28 to PyPi. I removed the “loop” parameter as per your reminder, since Python3.10 removed this parameter.
In order to use 0.28, you should change the “pycrowipmodule==0.27” to “pycrowipmodule==0.28” in “manifest.json” file under “custom_components/crowipmodule” folder and restart HA. Please let me know if it works or not.

For others who do not use HA 2022.7.x yet, don’t change anything yet.

I have faced the same error, but after upgrade to v0.28 it looks like it´s gone. Thanks!

Two other things that I would appreciate to have some help to explain.

  1. Then an alarm is raised or restored I get an error in the log, but I don´t understand the reason. Is this a “real” error, or is it done on purpose to get a prestistant log?
Logger: pycrowipmodule.crow_base_client
Source: /usr/local/lib/python3.10/site-packages/pycrowipmodule/crow_base_client.py:277
First occurred: 15:40:17 (1 occurrences)
Last logged: 15:40:17

ALARM RAISED !!!
Logger: pycrowipmodule.crow_base_client
Source: /usr/local/lib/python3.10/site-packages/pycrowipmodule/crow_base_client.py:283
First occurred: 15:40:27 (1 occurrences)
Last logged: 15:40:27

ALARM RESTORED...
  1. Is it possible to read the status of the two key-switch inputs that can be attached to the tamper-circuit by using resistors like the regular zones?

Hi @Pjoms ,

  1. As far as i remember (I am an old man :sweat_smile:) it was done on purpose.
  2. It should be possible in theory. If you dewire the 2 wires from a magnetic contact and wire them to a dry contact switch, it is basically the same thing. But that switch should not have anything else connected to it in any way, especially mains power or lights. Then, i really do not get what will be the purpose of it?

I have mounted a contact in my front door that closes then the door is locked. I use that contact as one of the “key switches” in the tamper circuit to arm Area B (the garage) then I lock the front door for the night.
I would like to be able to read the status of the key switch to indicate if the door is locked or not and send a notification if the door is unlocked at bedtime.

If you already connected that to a tamper circuit of a zone you can check the “tamper” attribute of that zone. I am not so sure if i implemented that. But alternatively you can connect that switch to a regular zone on the panel instead of tamper circuit or the secondary zone with the required resistors. So, the key switch will act as a regular zone and you can write an automation on that for arming Area B.

I have that door-lock switch connected and configured since many years. I did a workaround to indicate if the door is locked by checking the armed/disarmed status of Area B.

changed it and works out of the box.

test on:
→ Binary_sensor still got constantly updated, door and window open / close work.
→ The rest on status as well as arm and disarm works as well.

No issue on the requirement change.
thanks

Hi, I am interested to know if your custom component could be updated to support RS232 interface with the AAP / Crow systems as it looks to be the same command structures.

I have written my own flows in NodeRed to send/receive data via RS232 to my AAP alarm and then relay that information via MQTT into HA… this all works great but seems a bit messy.

Basically my setup is as such:

  1. AAP RS232 RS232-BD - Accessories - Alarm Systems - Arrowhead Alarm Products
  2. Serial to USB adapter, plugged into HA host
  3. NodeRed for logic flows to send/rec data via Serial to AAP and via MQTT for HA

Another benefit of adding serial support to the custom component would be the ability to have both Crow/AAP standard IP Module (with mobile apps) and the Serial board for integration with HA

If you think its possible I would be happy to test

I’ve read this thread and others but I’m not sure I’ve got this custom component installed properly.

Here’s what I’ve done…

  • Home Assistant 2022.8.7
  • Loaded the custom telnet firmware onto the IP Module of my Arrowhead alarm
  • Downloaded the files from Github
  • Created a directory under custom_components named crowipmodule
  • Placed the files from Github in this folder
  • Edited /configuration.yaml and added section named crowipmodule: and added host and port information.

I can see a couple of entities but no Integration nor any Device. I am lost at this point and can’t find any documentation to point me in the right direction.

Can anyone help? Is there any documentation on installing this custom component?

Thanks

Hey @sfrasernz,

What you did was right. It sounds like the connection can not be made. Are you sure you installed the custom firmware Ver 2.10.3628 2017 Oct 20 09:48:43 ? After that you have to make the settings from the IP Module web page and give it a static IP address.

Also, you have to define the areas and zones in the configuration.yaml.

You’re right - the firmware is not correct. I’ve tried to flash again using their IAP2.0.0.35 flash tool and D-Link cable adapter but no matter what I try it won’t update. I tried restarting the IP Module to no avail. It does connect and I can see it reads data from the Module but when trying to Update it disconnects. I’ll contact AAP tomorrow for assistance.

In the meantime one question I have on the configuration.yaml - where/how do I configure the PIN Code for one-button disarming? I tried entering Code: ‘1234’ but it says Code is not valid.

crowipmodule:
  host: 192.168.1.106
  port: 5002
  code: '1234'
  keepalive_interval: 60
  timeout: 20

Check out the sample configuration file in the sample_configuration.yaml . The code should be under “areas:”. If you only use one area then you still should write areas: section with only one area name and code.

Hey Everyone,
Have not been around for a while and unable to do much HA stuff but just trying to pick back up now.

I am having difficulty getting any automations to work.

Does everyone just write the YAML in file editor or are you using the GUI automations in settings?
I have the standard alarm trigger message automation and the power cut and resume but I have never got them to work.
Any examples of what people have done would be greatly appreciated.