Introduction: House Alarm Internet Dialer for Aritech With Arduino
A very common Home and business Alarm used in many Europe countries are the Aritech series of alarm panels.
These were installed up to the early 2000 in their hundreds of thousands and many still exist in houses today - they are usually re-badged by the installers but they all have an easily recognizable keypad.
They are a fine system with many features - but, as they were developed before broadband, they lack the ability to connect to the Internet.
The image on this page is an animated image of the final system - it may not animate on mobile devices. Here is link to the animation
This project is about reverse engineering the alarm panel to add this missing functionality.
It will add the following:
- Ability to contact the panel and set/unset/view logs using any browser from anywhere eg. A Mobile Phone
- Have the Alarm system email you if the Alarm has gone off
- Allow you to enter engineering menus and configure the alarm panel remotely.
- Support CD34, CD62, CD72, CD91 and CS350 which are all the major models of this series.
Total cost of all parts will be much less than $20
Notes:
All photos and screenshots are original by myself (as per Instructables guidelines) - the code and circuit design were created by myself.
Step 1: The Plan
The plan was to get the Arduino to Emulate a Keypad.
The Aritech panel would think it was a standard keypad - but it would in fact be talking to an Arduino - this Arduino has no keypad or display - it instead has a webserver with which you can connect to over the internet.
The server delivers a website which uses websockets as the communication transport to give a very responsive emulated keyboard in html. Several key presses are buffered to give a response that rivals the original keypad.
The Arduino is installed at any point on the Aritech Bus - I placed mine inside the Alarm Panel cabinet - but you could attach to the Keypad end if your Ethernet connection is closer.
It is also possible to use an Ethernet to Wifi adapter if the Alarm Panel is a distance from any Ethernet connection - a wired Ethernet cable though, is much more preferable though for reliability.
Step 2: The Parts
The required parts list is:
- Arduino Uno R3 (amazon link £6)
- ie. a standard arduino - clones can be bought from $5 upwards - Arduino Ethernet shield (amazon link £7)
- Another standard Arduino part - Amazon sell them for aprox $10 upwards - DC-DC power supply (link or link) about $4
Used to convert the Panels 12Volts to a stable 5Volts
The following are optional depending on which circuit you build
- Two Transistors BC109 (or any similar general purpose NPN transistors such as 2N2222 or 2N2369)
- Resistors as specified in the schematic
- Diode
Any Diode (eg. IN4002 ) - Mini breadboard
You will also need the Engineer (Admin) Password for your Aritech Alarm.
If you don't have the password one option to consider would be to default the panel to factory settings and reconfigure it.
Powering the Arduino
The DC-DC power supply is the most critical component to get correct - don't be tempted to use cheap car 12V to 5V usb Adapters - the voltage of the cheaper adapters I tested contain a ripple voltage that can cause the Arduino to crash randomly.
I don't recommend using the Arduinos built in 9V socket when using the Ethernet adapter or using the Alarm Panels 5V power supply to power the Arduino - things will get hot! The DC-DC adapter specified above is very efficient and provides a very stable 5V without heating up - I apply this 5V to the 5V pin of the Arduino.
If you decide to power from a mains powered usb adapter (eg. phone adapter) and not the module above - you will need make sure this adapters output GND is connected to any of the Alarm Panels ground; as everything needs to share the same GND.
Breadboard Choice
I used a small mini-breadboard to prototype the system.
If you make it neat the breadboard is good enough to use as a solution - but after you are sure everything is working you may like to make up a soldered version using, for example, the small prototype shield shown in the last photo.
Step 3: The Build (breadboard Version)
Here are the two options to choose from.
1) Direct to panel.
This is the easiest method. Its very efficient and reliable. The only downsides are - it requires soldering 2 wires to the Aritech main board and some may not like soldering direct to the panel. Also, the two wires from the Arduino to the panel for this option should be fairly short (about 30 cm max is about right) so the Arduino will need be in or near the Alarm cabinet. This option is detailed on the next (optional) step.
-or-
2) Custom Arduino to Aritech Circuit
This involves creating a custom interface board to make the Arduinos outputs capable of connecting to the Aritechs 12v keypad bus. The circuitry is designed especially so that it will not interfere with any other keypads on the bus. It requires 2 transistors and a few supporting components. The wires can be as long as you like.
The circuit shown above is the interface required for the Arduino to connect to the 4 wire bus.
A photo is shown of the breadboard (second photo) for an idea on how to connect up - This breadboard was used for development- please refer to the schematic (first photo) when building up your circuit board or breadboard.
The Aritech panel uses a four wire keypad bus - you can connect to any point on this bus - eg. at either the Keypad end or the Alarm Panel end.
The third photo is added just for interest and shows a circuit simulator I used when designing the circuit. The goal was to keep the parts count to a minimum; where possible the same part types and values and to make sure currents were kept low so no unnecessary heat is produced.
Ask questions if stuck and I can try help - I've tested this on the several panels I own here (I've been picking them up in boot sales when I see them) - As always with these projects I cannot be not responsible for any damage.
Step 4: The Alternative Hardware Version (easy One Diode Version)
This is an alternative to connecting to the 4 wire keypad bus. You can wire the project directly into the Aritech motherboard.
This requires having to solder two wires to the Aritech panel - but the advantage that the whole circuit now becomes just the One Diode - no transistors, resistors or breadboard necessary!
Images above show the connection points for attaching the wires.
With this method you need solder two wires to the largest chip (named 78C17) on the panel and connect them to the Arduino Pins 0 and 1 - the Pin 1 connection to the alarm panel must have a diode with the striped end(cathode) of the diode going to the Arduino - the non striped to the alarm chip.
The Pin connection depends on the alarm model - refer to the images above for the connection.
If you find it tricky to solder to the Pins (they are a little tight) solder the back of the panel or you can look along the track route to find an easier spot to solder. Shown in the third image of this step is the connection points I used for a CD72/CD62. Secure the wires using tape, hot glue or if you look carefully at my board you can see I soldered a small loop of wire to hold my cable secure.
You still need to power the Arduino using the DC-DC converter module mentioned already (set to 5v).
The Aritech Chip is 5V - same as the Arduino - so they are perfectly compatible.
Some later panels (eg. some CS350) use a surface mounted chip (the chip is very small and square). For these, the previous circuit may be best - but if you wish to try you may find it possible to solder to another place along the track leading from the microchip. If you look up the pinout of the PD78C17GF chip in its datasheet - the pin names to connect to are are "PC0/TXD" and "PC1/RXD".
Some "solder braid" may be useful to have on hand to clean up soldering mistakes if you are not used to soldering and apply too much solder.
Of course make sure everything is powered off while soldering it - for your safety as well as your alarms'.
Step 5: The Software
The code is quite complex - it was a major effort, and many tricks needed to be employed to squeeze all this code (keypad emulator, HTML webserver, HTML pages, Email client, Websocket Webserver, DES encryption and Base64 libraries) all into the tiny Arduino 32K flash and ram space.
All the code is hosted here:
https://github.com/OzmoOzmo/CastleAritechArduinoRK...
I will update the project code every while - so be sure to Fork the project so you get notifications when there is an update.
Just download all the files (important: use the download zip button rather than one file at a time).
To compile:
Place them in the same folder - and open the .ino file in Arduino IDE.
There is a config file in the project config.h - this is where you set your IP address, your email address and other options. It is well commented with all the options to choose from.
Compile and Upload to to Arduino. You will need disconnect the Arduino completely from the Alarm panel to program it- as anything connected to the Arduino RX & TX (pin 0 &1) can block the usb programming progress.
Also its best not to have the 5V power supply connected to the Arduino And the USB connected to a PC at the same time as both will be trying to power the Arduino.
Developers
Customising the software
I've found a Leonardo or Mega to be good for debugging as you get two serial ports - one for connecting to the alarm panel and one for sending debug messages back to the PC. But for normal operation - these or an UNO are perfect.
An oscilloscope & digital signal analyser were great tools to decoding the protocols used - I may document more on how I reverse engineered the protocol if anyone wishes.
Step 6: Connection and Final Notes
Installing
To install this project - you need to tell the Aritech Alarm panel there is a new keypad on the bus - Enter Engineering mode and select the option from the menus to "Install RKP" (Install Remote KeyPad).
If you have wired everything up ok you should see a new keypad being registered. The display will show a K for each keypad the Alarm sees (eg. KK*** for two keypads). Accept and exit Engineering menu.
Each physical keypad is assigned an ID (0,1,2 etc) - the code has this project set to be the Second keypad in the system - if you already have two keypads in your installation, you can change the Arduinos' place in the config file to be third or fourth.
To uninstall at any time is easy- just enter Engineering menu, remove the Arduino and run the "Install RKP" procedure again.
Handy Tip: If the Alarm Panel sees a keypad not responding it will sound the alarm - so if you you want to remove the Arduino at any stage, to work on it etc. - please enter the Engineer menus while you do so - the Alarm will Not sound when you are in Engineering Menu - your neighbours will appreciate this tip also.
To Connect to panel. Browse to the IP address: Check the config for the address setting - in this version of the software I've defaulted it to "http://192.168.1.205:8383".
It works with most modern browsers and mobile phones.
External Access:
You can make this accessible from outside the home by port forwarding on your home router and optionally using one of the free Dynamic DNS services. Just consider increasing the security below.
Network Security:
Especially if you are opening up access externally to the house- consider these tips to increase the difficulty of anyone guessing your password.
Make sure the User and Engineer(Admin)Password on the Aritech Alarm Panel are not the default passwords.
At a minimum you should enable "Code Tamper" on the alarm panel that will lock you out for a minute after 10 or so bad guesses to prevent brute force guessing of the password.
Consider having an Alarm Panel password 6 digits long (default is 4 digits long)
You could also change the Port to some random number (default is 8383).
Future Work
I also obtained a "HKC Secure Watch" Security Alarm Panel - and I have ported this project to it. I also have a more generic version with limited functionality that should work on other brands of alarms. You can find these projects on my list of Instructables.
Let me know how you get on with it :)

Participated in the
Full Spectrum Laser Contest 2016

Participated in the
Arduino All The Things! Contest
48 Comments
1 year ago
Hello Ambrose,
I’m doing research for a while to make my aritech alarm connected and can’t believe I didn’t find your great instructions before. Do you have any idea if this would be compatible with an aritech cs-121 ?
Reply 1 year ago
It works ok on a CS-350. But Ive never worked on a CS-121.
This CS-121 looks to be a very different device. No display on keypad for one thing.
The electricals look to be the same - but Id say you would need some new code to get it working - as a first step, this project may be useful for ideas to get debugging enabled and see if you can get an arduino to dump the data being sent over the wire...see if there is anything you can use there
Reply 1 year ago
Thanks a lot Ambrose.
I will read all your 3 projects to see how I could start debugging. But I see you had to use an oscilloscope & digital signal analyser and I don’t have any of this nor the knowledge I fear to reverse engineer the protocol.
Perhaps my best bet is to disassemble the keypad and see if I could get the status of the zones and arm by hooking up with the leds there ? Or go with a voltage sensing method like this : https://www.instructables.com/Alarm-PIR-Movement-to-Home-Automation/ ?
Question 1 year ago
Hi Ambrose,
your project is very interesting to me.
The keypad of my Aritech CD95 alarm system is starting to have problems with some digits that no longer work well.
Unfortunately, the keyboards are no longer on sale, so your project would save me from having to replace the alarm control unit and its keyboard.
I have already ordered the necessary material, and I am waiting for it.
In the meantime I wanted to download the code, but going to the page https://github.com/OzmoOzmo/CastleAritechArduinoRKP
I can't find the "download zip button" to be able to download all the files.
Could you please tell me where I can find it?
Thank you
Regards
Antonio
Answer 1 year ago
Sure - It's a bit easy to miss all right and changes a bit sometimes - right now its the green button marked "CODE" - and "Download as Zip"
You can fix your existing keypad very easily as well
.
- go into engineering mode if you can (optional but this will stop bells ringing in step 2)
- open keypad (1 small screw at the bottom)
- remove the Rubber keys - it's one big sheet.
- clean the silver/gold contacts on the PCB under the keys (using Isopropol Alcohol or Windowleen window cleaner - or even a dry cloth or bit of clean printer paper - don't use water or anything too rough like sandpaper)
- reassemble - use a Toothpick to press the membrane rubber spikes into the pcb
- exit engineering mode.
Reply 1 year ago
Hi Ambrose,
Thank you for your answer.
As for the keyboard issue, unfortunately it's not about dirt.
I have already tried to clean the tracks of the circuit with isopropyl alcohol, but I have not obtained good results.
There has been some improvement with some keys, but a couple are not working at all.
Unfortunately, the carbon pad under the rubber membrane has worn out.
Until recently, replacement membranes could still be found.
Now you can't find even those anymore.
I have tried everything, to try to fix the problem.
At first I changed the code, eliminating from my code the digits that did not work well.
Then I tried to glue a piece of aluminum foil over the carbon pad.
it lasted for a while, but then it got ruined too.
I was considering coating the carbon pad with conductive paint.
Maybe I'll do it anyway, but when I saw your project, the light bulb went on!
I have decided that I will try to make your project anyway.
If I can get it to work, surely my alarm system will make a quantum leap.
Thanks again.
Regards
Antonio
2 years ago
Quick update - The ESP32 version of this project now supports Alexa voice commands too...
Question 3 years ago
Hi
Someone may be able to shed some light here. I've completed building and connecting the project. The alarm panel is seeing the arduino as an additional keypad and I can open the web page. The only issue is the web page does not show any output from the panel (box remains empty). I have tried 2 different arduinos with the same results. I have also built a temporary second unit on a breadboard and I have verified all cabling but still get the same results. Any suggestions greatly appreciated.
John
Just to add, I've been tinkering with this for a while this morning and am getting the following from the console:
(index):1 WebSocket connection to 'ws://192.168.1.199:8383/sock/' failed: Error during WebSocket handshake: Unexpected response code: 404
(anonymous) @ (index):1
ready @ m3GB3M:26
L @ m3GB3M:33
favicon.ico:1 GET http://192.168.1.199:8383/favicon.ico 404 (File Not Found)
I have changed the IP address as .205 is already in use on another piece of kit. I also seem to have an issue in that the Arduino is not appearing in my router (F2000) list of connected devices even though I can ping the 192.168.1.199 and can open a web page at that address. May not be related but just in case!
Answer 2 years ago
Please see my post above the two new ESP32 version if you want to try it - it may solve that problem for you.
Reply 2 years ago
Hi Ambrose
Many thanks for the response. I'll try it out and let you know how it went.
Cheers
John
2 years ago
1. Latest version for Arduino UNO
- it works well with latest Chrome Browser, Edge etc,
- Has support for using keyboard when on a pc.
- Some small fixes
- By default Email is Off - since Arduino cannot communicate with modern SMTP servers anymore since they all went SSL.
https://github.com/OzmoOzmo/CastleAritechArduinoRKP
2. A rewritten one using using an ESP32 Board (a more powerful, but cheaper device that works with the Arduino software)
This version of the code supports
https://github.com/OzmoOzmo/CastleAritechArduinoESP32
For the ESP32 version - I tested on a "D1 R32" which looks exactly like a Arduino UNO - and a Wemos Lolin32 which is an ESP32 with built in LCD display.
I am still testing on all the panels I have - but all seems ok so far. Let me know if you anyone tries it and has any difficulty with it.
Reply 2 years ago
<bumping to top of posts>
Question 2 years ago
Hello Ambrose,
thank you for your answers to my previous messages. I still need help. I couldn't achieve this using the FULL method. Like you adviced, I'm now trying with the soldering methods (less connections but with 2 soldering and 1 diode). I'm pretty sure I did everything like asked but... as soon as I connect the "-" of the 5V (out of the LM2596), the siren alarm turns ON and I get the following message in French on the keyboard : "Defaut alim" (which means "Power default"). If I turn my power switch ON (in other words, if I connect the "+" 5V out of the LM2596 to the Arduino 5V) as soon as I connect the "-" 5V too, the siren alarm turns ON but the Arduino turns ON too. I guess it means the connections of the Arduino are good. I don't understand. I'm lost. Any idea please of why I'm getting this message on the keyboard?
I did as many intuitive logical tests as I could do with my very little experience without getting the answer. You can find all the pictures and testing videos of my project here : https://drive.google.com/drive/folders/1iq8YJts1j...
I'm begging you. Please help
Fab
Answer 2 years ago
Please see my latest post above - hope it helps.
2 years ago
I have been using this on my cd92 pannel no problems.
But i can not get it to work on my cd95 pannel, it gives me te pannel version at start up v6.29
But in the rbd menu no keypad is found. Is there anyting in the programming i can try ??.
I am not great with arduino so any help is welkome.
i changed the layout a bit.
Reply 2 years ago
Please see my latest post above - it may help.
Question 3 years ago
Hi. I am approaching the software side of the Aritech internet dialler project and am wondering how to keep the arduino running while disconnecting it from the pc. Is it OK to connect panel power to the circuit after starting the code executing, but before disconnecting the USB lead? Also, in a power fail situation, if the battery runs flat, am I correct in assuming the arduino must be reconnected to a pc to kick start the process again. Regards and thanks in advance. John.
Answer 3 years ago
Hi- You can power the Arduino from the 5v and gnd pins (best option) or via the usb plug(ok) or 9v barrel jack(not good - gets hot).
The code stays in the Arduino flash memory even when power removed. Last code loaded will run again immediately power is reapplied. Once code is uploaded to it No PC is required to boot the Arduino. If you use the 14v from the panel as described above it will be powered from the alarm battery in the event of a brownout.
Great you are working on the software- remember that you only have only about 15milliseconds to reply to any of the alarm panels requests or it will give up waiting and report an rkp error - so avoid any long delays or slow libraries in any new code you write. All the best.
Reply 3 years ago
Many thanks for the reply.. I'm tinkering with email settings at the moment and will let you know how it goes. Really useful stuff on here. Keep it up!!
3 years ago
Is it right to say connecting to the GND of the Arduino / connecting to the B of the panel is the same? I guess yes but not sure.
--> In your diagram Q1 is connected through the ttransistor to the B of the panel.
--> In your new wiring example, the same transistor is connected to the GND of Arduino
GND Arduino = B panel = 0v ?