Over the last few months I've been refining and debugging my home automation system. I've written about it earlier. The design criteria may be a little different from normal.
- I don't need to automate my fridge, lights or toaster.
- Information has to be handled locally, no external network.
- Keep it simple and cheap (and fun).
What I need it to do is tell me when my mail is delivered and when someone arrives at my gate. It is a long-ish walk to the mailbox. Similarly I like to know when visitors arrive, ie when the gate opens. It isn't a security issue in our area, but it is nice to go out and welcome them instead of having them knock on the door.
I also have a few vermin traps about the place and I like to monitor when they are set off. While the gate and mailbox are immediately interesting and need to set off something like an alarm, the vermin traps just need to log that they tripped so I know to go and clear them.
The system I've set up relies on ESP8266-01 boards which you can get for under $US2.00. So adding more sensors is inexpensive. The ESPs transmit WIFI messages to a Beaglebone, a small Linux machine on a single card that needs no disks, no fans and very little power. You could use the better known Raspberry Pi just as easily, or any Linux machine you are happy to leave running 24/7, as long as it connects to your home WIFI network.
On the Beaglebone I have Nginx installed with some PHP files that maintain a simple text log of events generated by the sensors and also serve it up on a web page. The information is all stored locally, not accessible to the outside world. So I can check the log when I am home but not when I am out. This is by design.
Some events, such as from the mailbox and gate in my case, invoke the Beaglebone's GPIO feature to trigger a chime. One chime for the mail, two for the gate.
Apart from adding more sensors for the vermin traps (they don't all have sensors attached yet) this project is complete.
Much more detail on github.