TL;DR

AlertR is an open-source multi-purpose alarm system and monitoring system with a client/server architecture. This architecture allows you to either install everything on one host or distributed on multiple hosts in your network. Since sensors in AlertR are abstracted down to two states ("triggered"/"normal"), it can be used in a multitude of scenarios. If you want to build a home alarm system in combination with Raspberry Pis, AlertR is your system to go to. If you want to monitor your internal services, AlertR is your system to go to. If you want to keep track of stock and crypto currency prices, AlertR is your system to go to. If you just want things to happen on Host B when an event occurs on Host A, AlertR ... I think you get it now, do you? For developers, it offers interfaces that allows them to integrate their already written scripts and programs into the AlertR system (e.g., FIFO files, executing commands in an interval, ...). In addition to a state, the sensors are also able to hold data (e.g., a temperature, stock price, ...). AlertR offers a diverse range of ready to use modules such as monitoring Raspberry Pi GPIO pins as sensor, monitoring weather temperature/forecasts as sensor, monitoring network calendars (such as the Google Calendar) for reminder as sensor, getting a notification via D-Bus as alarm, getting an Email notification as alarm and many more. Furthermore, AlertR provides you with a push notification service that gives you the possibility to receive alarm messages on your Android device via the official AlertR App. This notification service keeps your sent data private by using end-to-end encryption.

The code and installation scripts can be found on GitHub as well as the documentation about the project on the GitHub Wiki page and lots of helpful tutorials to get started. A small community can be found on Reddit.

What is AlertR?

AlertR is a multi-purpose alarm system and monitoring system which targets developers, tinkers, privacy advocates, and all people that are interested in DIY solutions. Despite the obvious use as a home alarm system, it can also be used to help server administrators to monitor their services or used in any other cases in which you want that an event triggers an action.

Here is a short introduction video of AlertR as a home alarm system. The subtitles have to be activated in order to understand what is happening.

Screenshot of the Android App (version 0.5).

The home alarm system was set up with the help of Raspberry Pis to connect the physical sensors and alarms with the AlertR system. But AlertR is not limited to be only used via Raspberry Pis. Any other platform that runs Python can be used as well.

The vision for AlertR.

The vision for AlertR is to have a single service running that gathers all the information someone wants (like temperature data, service states, or bank account transfers) and provides the ability to react on them automatically. In addition, it should serve as single point to let the user look up aggregated information of his/her services. All this should be done in such a way that the user is always in control of his/her data and no one besides him/her is able to access them.

What is special about AlertR?

No Internet Connection needed.

Somehow it is sad that this has to be listed as "special". A lot of projects out there (this includes commercial products as well) need the Internet to be usable or to work at all. AlertR does not need the Internet to work. It is no problem to use it without an Internet connection. Of course, functionalities like "Email notification" will not work without an Internet connection, but the main functionality of AlertR is not affected. One principle of AlertR's design is to use the Internet only as a feature (like checking for a new version), but not as a main requirement.

Open-source and free.

It is published under a Free Software license and you have complete access to the source code of the project. This means you can check the code and even modify it if you want to. Unfortunately, a lot of projects advertise open-source with "enhanced security" because anyone can check the code. But this does not mean that anyone does (or at least anyone with security knowledge). The code of most projects are not checked once. And when someone does, it often does not look so good afterwards. AlertR is designed with security in mind and welcomes anyone who wants to take a look at the code or design. But to be honest, flaws in code will always happen and will so in AlertR. The difference is that I am aware of it and would never claim otherwise ;) .

MagicMirror Modules.

AlertR has two modules for the MagicMirror framework that gives you the possibility to display everything that is happening in your AlertR system. One module displays you the state of your sensors and the other displays you the last alarms that were raised in your AlertR system. This gives you the perfect integration of your alarm and monitoring system into your living space.

Picture of AlertR's MagicMirror integration.

Client/Server Architecture.

AlertR is designed in a client/server architecture. The clients are responsible to gather the data and to decide if an alarm by one of the sensors is triggered (sensor clients). Also, they are responsible to perform an action when a sensor triggers an alarm (alert clients) and to manage the state of the alarm system (manager clients). The server is responsible to organize the communication between all clients and to keep all clients in a consistent state.

Schematic of AlertR's network architecture.

This architecture gives you the ability to easily deploy the AlertR system on only one host (i.e., if you only want to monitor sensors on one host) or distributed in your network (i.e., if you want to monitor multiple sensors in your network). Even if the AlertR system is installed on multiple hosts, it will work together as one unified alarm and monitoring system. For example, a home alarm system does not need to connect each sensor to the same host (e.g., a Raspberry Pi). With this architecture, one can set up a host for each floor of the house to gather all the sensor data. As long as all hosts are connected to the same network, AlertR can be deployed. Even a host in the garden that is connected via WiFi or a host connected via the Internet is no problem at all.

Additionally, this architecture ensures a smaller code base. Since each client is specialized in performing its task, it has no need to have code that is not needed (e.g., the sensor client for FIFO files has no need for code that is needed to talk to Raspberry Pi GPIOs).

Integration.

AlertR sensors work with two states: "triggered" and "normal". Everything that can be abstracted to these two states (and additional data if needed) can be integrated and monitored by AlertR.

In order to make it easy to integrate things like already written scripts into the AlertR system, AlertR offers interfaces for them. This is especially interesting for all developers, server administrators and tinkers that already have written some programs or scripts that are doing a job for them like monitoring something. For example, one AlertR component offers sensors in the form of FIFO files. With their help, the existing tools can write into these FIFO files and trigger a sensor in the AlertR system.

Python.

I do not know if it is "special", but it is definitely cool (at least for developers ;) ). Most parts of AlertR are written in Python. This allows (most) people to understand the code easily and to improve it. Furthermore, in comparison to low-level languages, it can improve the security of the code. Why? Well, many alarm and monitoring system projects are written in C or C++ (open-source and commercial ones). The problem with these low-level languages is that they have many pitfalls and the developer has to know exactly what he/she is doing (and most developers do not). Low-level languages bring almost always security flaws in form of memory corruptions. And perhaps the only case in which using low-level programming languages is beneficial is when high performance is needed. Well, AlertR is not performance critical and can therefore be written in a scripting language like Python (the Python interpreter can have memory corruption issues of course, but this is out of scope for this article).

AlertR's console manager (version 0.4) written in Python using urwid.

Push Notification Service.

AlertR offers a push notification service to send messages to your Android devices via the official AlertR App. In addition to this cool feature in general, the service is designed to provide you with an end-to-end encryption. This means that only you are able to read the notifications and no one else. In order to use this service, you have to register an Alertr.de account. Further details of the architecture of the push notification service can be read on the corresponding Github Wiki Page.

Number of messages sent by the AlertR push service in the last 12 weeks.

Build for customization.

AlertR is build to be customizable to your needs. You can set up and configure AlertR to fit exactly your project.

Do you have AlertR in an alarm system context running and need to have multiple states in which sensors and alarms behave differently, such as, "Alarm System Activated" and "Alarm System Deactivated"? Perhaps you also need an additional state where you have only certain sensors in your alarm system active such as "Alarm System Activated and at Home"? Or perhaps you use AlertR in a monitoring system context and do not need to have sensors and alarms behave differently? AlertR is easily configured to work in these settings.

Does the normal sensor event processing not fit your project? AlertR offers you the possibility to instrument sensor event processing with your own scripts. This allows you to chain sensor events together and write complex rules, for example, an alarm is only triggered if Sensor A and Sensor B are triggered, but Sensor C is not, and we have currently weekend in the middle of the night. Furthermore, this also allows you to further filter sensor events, for example, only trigger an alarm if the calender reminder event contains the word "important" in its description field.

Where can I get it?

Perhaps some of you now think: "Ok you got me, I am interested!" (at least I hope that some of you will think this). If so, here are the links to get started with AlertR:

Number of active AlertR installations calculated from participants of the voluntary survey.

Supporting AlertR

If you like this project you can help to support it by contributing to it. You can contribute by writing tutorials, creating and documenting exciting new ideas to use AlertR (e.g., on Reddit), writing code for it, and so on.

If you do not know how to do any of it or do not have the time, you can support the project by donating or support me on Patreon. Since services such as the push notification service have a monthly upkeep, the donation helps to keep these services free for everyone.

Patreon:


Paypal:

Licensing and Commercial Use

AlertR is open source and Free Software and always will be. Everyone can use it freely. It is licensed under the GNU Affero General Public License v3.0 which allows you to also commercially use it. However, if you do, you have to disclose all changes to the Software also as open source. This is also the case if you provide network services with AlertR.

If you do not wish to open source your changes I can offer this Software under a different license (Dual Licensing). Please contact me to talk about the conditions.

Contact

If you want to reach me, have any questions, feedback or bugs, preferable use the GitHub Issues or Twitter. All other means of contacting me can be found on my personal website.