Alarmino is a device I’ve built, that connects to my home burglar alarm system, and sends SMS messages to my phone whenever the alarm is triggered.

By now you might be thinking “oh no, yet another one of these send-me-an-sms-when-my-alarm-goes-off devices”, right? But please wait. There’s one big difference; Unlike most other such devices, Alarmino’s SMS messages include all the details typically available only to a central monitoring station such as the number of the zone that was triggered and the type of the event (burglary, fire, water leakage, etc).

Alarmino is build with an Arduino-Uno board, a GSM shield and some custom electronics.

What does it look like?

Alarmino inside its box

Alarmino inside its box

This is a picture of Alarmino inside its plastic box. You can see the GSM shield (with its antenna on the right)  and the custom hardware. The Arduino-Uno is not visible here. You’ll just have to take my word – there’s an Arduino hidden there below the GSM shield.

Alarmino and alarm system mounted on the wall

Alarmino and alarm system mounted on the wall

Here are the Alarmino and the alarm side by side mounted on the wall. The Alarmino is inside the large box, which is made of plastic so it doesn’t interfere with the GSM signal.
BTW, this is how it looked when it was developed:

Alarmino development prototype

Why did I need Alarmino in the first place?

Like many other homes, mine has a burglar alarm system installed. Alarm systems are designed to be connected to a central monitoring station via phone. When an alarm event is triggered at my home, my alarm calls the central station and reports the event (more technical details below). An operator at the central station receives a notification of the event, and decides what needs to be done. Typically the operator would call me on my cell phone (or send me an SMS), and report the event. I can then decide what to do; e.g. ignore the event, rush home to see what’s going on, dispatch a security patrol, etc.
Here is a drawing depicting this arrangement:

Alarm connected to a Central Station

Recently I decided that I want my alarm to call my cell phone directly instead of going through a central station service. This is relatively simple – basically the alarm should be configured to call my cell phone instead of the central station. The big drawback of this change is that I only get a notification that an alarm was triggered. I don’t get any indication on the type of event. Specifically I want to know which of the many zones I have was the one that triggered the alarm. Basically each zone corresponds to an alarm sensor. The zone number is extremely important to me because different zones have different severity, and I tend to react differently to events triggered by different zones.
I realized that what I need is a device that will emulate the central station. It will receive the alarm’s calls, will ‘talk’ with the alarm and receive all the event’s details, and send me an SMS with all this information. And this is how Alarmino came to be.

What’s with this funny “Alarmino” name anyway?

I chose the name “Alarmino” following the popular tradition of naming all things Arduino with words ending with “ino”. And most importantly, it brings a nice Italian chic to the project, don’t you think?

Features

  • Connects to any alarm system that “speaks” the Contact-ID protocol (virtually any commercial alarm system in existence)
  • User interface is based on a build-in shell. The user controls Alarmino by connecting a PC to its USB port, and running a standard terminal application (such as PuTTY). Console commands include:
    • ? – Prints a help message describing all available commands and their syntax
    • S – Prints current system status
    • L – Prints event log
    • N – Program a new phone number
    • P – Set/change password
    • D – Set system debugging message level
    • T – Set system time and date
    • C – Check and prints the current credit situation with the cellular carrier (useful when using a prepaid SIM)
    • A – Generate an artificial ContactID msg and send a report via SMS messages to all configured phone numbers. Used for testing that the system is configured and operate properly
    • M – Connect terminal directly to the GSM modem. This enables the user to “talk” directly to the GSM modem by entering AT commands. It enables all sorts of ultra-geeky things
  • System status can be queried by sending an SMS from a phone to Alarmino. When Alarmino receives such an SMS, it responds by sending an SMS of its own with the required information. The reported status information include:
    • Remaining credit with the cellular operator (useful when using a prepaid SIM)
    • GSM signal quality. Admittedly this is not terribly useful, because obviously if you get this message, the GSM reception is good enough. However techies love this kind of data, and we’re all techies here, aren’t we?
    • Current temperature. Also for techies, so they can verify that the temperature doesn’t get too close to the maximum operating temperature allowed
  • Received SMS commands (such as status query described above) are password protected. Each such SMS message must start with a pre-configured password. Other received SMS messages are silently ignored
  • Alarmino stores alarm events in a log in its non-volatile memory (EEPROM). The last 16 events are stored. Every new event replaces the oldest one. For every event Alarmino stores the Contact-ID information (e.g. which zone triggered the alarm), and the date and time when it occurred

You can read more details about Alarmino in the following pages:

Hardware

Software

Ademco Contact-ID protocol

27 Responses to “Alarmino”


  1. 1 ka1axy September 18, 2012 at 5:10 pm

    I’m thinking of doing the same for my home alarm system. I considered tapping into the phone line, but that doesn’t let me enable and disable the alarm panel. So I hooked a serial analyzer to the line between my alarm panel and the control keypad. It’s serial data, has the same (actually more) information as what goes out over the phone line, and also allows me to arm and disarm the alarm system remotely (once I figure out what messages to send). Did you consider going this route as well?

    • 2 li0r September 18, 2012 at 5:41 pm

      Nice idea. I haven’t consider this approach.
      Certainly the ability to control the alarm remotely would be most welcome.
      I would love to hear how it goes for you.

    • 3 Corey J. Anderson September 18, 2012 at 6:30 pm

      Great article. I’m wondering about service for the GSM modem and what that costs the author?

      I’m also curious what type of alarm panel you have? I tried to do this with my Ademco alarm but ended up getting an ad2usb box (http://www.nutech.com/online-store/35.html) which does pretty much what you’re talking about. Basically you see all of the traffic on the bus streamed to a USB port. I wrote a program that listens to this data stream and can take appropriate action based on context, for example if the front door or side gate is left open too long, a shell script runs. This script could do anything such as an SMS message, but for now I have it run a scene in my home automation system which makes it speak “Door left open!”. I also use the alarm’s motion sensor data to automatically turn on entry way lights at night too. To prevent my kids from attempting to cool the entire state, I can disallow the air conditioner from being turned on, when too many doors or windows are open.

      I also never really arm the alarm itself, since I can set a virtual alarm in the home automation system and have it text me if sensors are showing fault when the virtual alarm is set.

      Tying your alarm system’s sensor data into your home automation system is very useful.

    • 7 Benjamin October 13, 2012 at 10:07 am

      Ka1axy – have you made any progress with this?
      Sounds like a good plan – I’m gonna investigate today!

  2. 9 Corey J. Anderson September 18, 2012 at 7:46 pm

    li0r,

    Ok. I’ll have to see what equivalent GSM service is available here.
    I have to rely on sending SMS messages via an email gateway which
    is fairly reliable, but occasionally messages get dropped. SMS messages sent in the this manner are subject to the whim of the carriers who might implement anti-spam measures on the SMTP gateway and interfere with delivery. I expect one day the carriers will try to profit from these gateways, and it’s expensive to do direct SMS over the Internet, so a GSM modem sounds like the right option.

    Thanks for the compliments on my home automation setup. It’s my own creation and I’m gearing up to release it as an open source project. I’ve really tried to create an interface for the system that appeals to non-programmers to make it stand out from the existing open source solutions.

    My alarm does have its own battery backup, and my HA server is
    on a UPS as well.

  3. 10 Benjamin November 7, 2012 at 11:11 pm

    Does anyone have any advice for decoding the serial protocol between the alarm panel and the keypad?
    I connected a USB to Rs485 converter in parallel, and I can now monitor the traffic but I’m not able to figure out how the protocol is structured……

    • 11 Matt October 24, 2014 at 8:47 am

      I think you will find that this is a tightly guarded secret. It would be a big security risk if anyone knew the details of this protocol as you would easily be able to disarm an alarm without knowing a code.

  4. 12 Tj Johnston March 31, 2013 at 3:58 am

    I am building something similar, with no gsm. The idea is to use if for testing of alarm dialers. I would be greatly interested in seeing your code and sharing ideas. I noticed you used the 8870 for dtmf decoding. Were you aware there is a DTMF library for decoding. Works pretty good so far for me. Having trouble with dialtone generation and off hook detection.
    TJ

    if interested… timothy(DOT)f(DOT)johnston(@)gmail(DOT)com.

  5. 13 wired home alarm window sensors June 17, 2013 at 7:57 am

    Your method of explaining all in this article is
    in fact good, all be able to without difficulty be aware
    of it, Thanks a lot.

  6. 14 bariumscoorge June 26, 2013 at 2:19 pm

    Hello,

    I’ve also created an alarm system based on Arduino.

    It’s communicating with a PC using USB (serial over usb) for external monitoring (web ui)

    More info :
    http://dev.kprod.net/?q=aalarm-v2-intrusion-detection-using-arduino-alarm-with-django-and-perl-en

  7. 15 brent September 8, 2013 at 3:08 am

    Does this also provide a kiss off to prevent the alarm system from generating a communication error?

  8. 20 brent September 8, 2013 at 8:05 am

    I can probably figure out how to send to a website address, but I would be very great full if you can help me receive the ContactID and provide a kiss off. Then I can create a fail safe to only provide a kiss off from some type of acknowledgement from the web server.

  9. 21 http://www.incaradvancements.co.uk June 11, 2014 at 12:43 am

    I almost never write comments, but i did a few searching
    and wound up here Lior’s projects. And I actually do have 2
    questions for you if it’s allright. Could it be just me or does it
    seem like a few of these responses appear as if they are written by brain dead individuals?

    😛 And, if you are posting at other places, I
    would like to keep up with everything new you have to
    post. Could you make a list of every one of all your communal pages like your twitter feed, Facebook page or linkedin profile?

  10. 22 Donovan Hubbart September 4, 2014 at 3:18 am

    This is what I am looking for and want to discuss building an app for my phone to be able to communicate two way to system as well as communicate with other devices.

    Please can’t act me to discuss a business opportunity and taking this further.

  11. 23 Peter September 25, 2015 at 2:01 pm

    HI Lior,

    I tried your circuit for fun to merge with my alarm system, but I don’t get the tone from the gyrator? I built it 3 times, and none give off tone to a phone, nor can I measure frequency off it – I must be doing something very wrong? Am I right to assume the gyrator can be tested separate from the rest. Any direction appreciated.

    Thanks,
    Peter

  12. 24 derfaq October 27, 2017 at 12:01 am

    Li0r, this is my first read of your post and i know that this will not to be the last time i read it. I really enjoy it and i want to do something similar. Thanks you, i will continue whith the lecture.

  13. 25 Chris Scuderi January 7, 2018 at 12:49 am

    li0r thank you for sharing your project, especially the details about the contact-id protocol. It inspired me to build a something similar for my own alarm system. Though instead of using an Arduino and custom hardware, I opted for a Raspberry Pi running software, and a USB MagicJack dongle to emulate the telephone line.

    More details here: https://github.com/scudre/alarm-central-station-receiver

  14. 26 Dror Harari September 16, 2018 at 12:47 am

    Hi Lior, long time no.. and with a measurable delay since the original post.

    I think that this kind of project is best done with an old Android phone. It can do the RS232, it already have the mobile stack including SMS and other stuff (e.g. you could send a WhatsApp message – better than SMS when you’re abroad) and it has a built-in UPS 😎 that can let it run long after the backup battery of the alarm system has died off. Not only that, if placed in a strategic place, it could allow audio-visual communication where you can shout at the burglar, take photos and do other effects (playing some soundbites from Hawaii-5-0). Best of all, you get 2nd hand phones for peanuts.

    As for analyzing the RS232 protocol of the alarm system, I reverse engineered my smart-home system display protocol (was built by a company that went the way of the dodo) and for that I used a cool gadget – EZ-TAP RS-232 Passive Tap Module. Lots of fun.

    שנה טובה

  15. 27 Tayfun January 7, 2019 at 3:49 pm

    Thank you very much. Best project. Are you write of electronic part list please. I do not see for capacitor voltage and resistor watt and and. My english is bad. Sorry..


Leave a reply to Peter Cancel reply