This is one of the most serious projects that I have created (as of 2008). It's a physical alarm system. For example, when you arrive at your office your boss gets an alert over a text message or email that you have arrived. Or, if you have left on vacation and someone breaks into your home, you get an alert about this event (and security is dispatched to your home). It also has a web interface where you can see all the security event history.
It's closed source and runs on Linux to avoid licensing costs and possible virus and malware attacks. It's written in C with some parts in C++ and the web interface in PHP. It has a ncurses interface based on curses development kit for editing the guarded objects via shell. The data is stored in a set of gnu dbm databases.
The system has run for 7 years now without any issues and has sold numerous copies.
Here are a few screenshots from ncurses based part of the system (some parts blurred and edited out to respect privacy of customers). Here is the record for my place,
Ncurses interface for editing guarded objects.
A list of all objects (places that are guarded),
A list of all guarded objects.
It's also multilingual as it's used internationally,
Translations of short event codes.
Regular alerts for the previous day can be set up,
Here it says to send an alert for object #2 at 08:28am.
The other possibility is to set up alerts for a group of objects. For example, if you own a chain of shops, you'd like your security officer to receive a summary of all the stuff that happened in all the stores yesterday,
Here emails #1, #2 receive alert daily about all the objects at 09:00am and email #3 receives it only on Mondays at 9am.
The system also keeps the log files of everything that has ever happened. So, for example, I can find what went at my place in, say, November of 2005:
(Nov 01 2005, 09:35:18) mid='00', object='----', event='C2', email@example.com', mobile='-------', type='CLO', floc='pkrumins place', sloc='pkrumins', msg='mom close' (Nov 01 2005, 19:04:20) mid='00', object='----', event='B3', firstname.lastname@example.org', mobile='-------', type='OPN', floc='pkrumins place', sloc='pkrumins', msg='dad open' ... (Nov 29 2005, 10:42:56) mid='00', object='----', event='C2', email@example.com', mobile='-------', type='CLO', floc='pkrumins place', sloc='pkrumins', msg='mom close' (Nov 29 2005, 17:30:57) mid='00', object='----', event='B3', firstname.lastname@example.org', mobile='-------', type='OPN', floc='pkrumins place', sloc='pkrumins', msg='dad open'
The system also has a web interface where people who have their objects under alarm can see all the history in a much friendlier way,
The login screen for the alarm system subscribers with a demo for potential customers.
When the user logins, he or she is presented with overview of his objects,
I see that my place is currently open (means someone is in it) and the last state change was on Wednesday, February 2009, 11:57:15am.
Users can also see the history,
Selecting the history for my place for the period of November 1 - November 30, 2005.
The result is pretty neat looking,
History November 1 - November 30, 2005.
There is also admin part of the web system, where the admin can add and edit users,
Admin part of editing users.
I also made a custom boot CD for the system, in case it needs to be installed on a new machine. Then it's just a matter of entering a few commands and the installation completes itself:
After booting the CD you have two options either install the small system (without web service) or the big (with web service).
install big, the system with web server is installed in a couple of minutes,
Verbose output from the install program with the steps it took to install the system.
This pretty much sums up what this system is doing. It was fun making it. I made good money and learned a few new things, too.