Raspi@Home – Domotics with a Raspberry Pi


Introduction

Hi, this is a project I’ve worked on for some time. It consists of a raspberry pi connected to several sensors + wifi internet, which alerts me on my Android phone of several events. The reasons I decided to start this project are: – I wanted to learn a little of electronics, the practical way (I’ve come to love it!) – I’m a little bit hard of hearing, enough to miss from time to time the intercom/doorbell sound – It’s fun! :)

Software

All the server-side software is written in python. The setup is the following. The raspberry pi is connected to the entrance door of my house, two doorbells, the intercom, a PIR of my home alarm system, and temperature sensor. It runs a server based on web.py. When a doorbell, intercom or door are triggered, the raspi saves the event to a sqlite database, and sends the event to the phone through GCM, where it’s received by my application and I’m notified. Also, when the door is opened, the raspi interrupts the circuit that connects the PIR to the home alarm. So, if the alarm is enabled, it detects the PIR as disconnected and is triggered. The server on the raspi monitors at regular intervals the cpu temperature and an external temperature sensor, saves the data to a sqlite db, and graphs the last 24 hours to an url-accessible image file.

Hardware

A common door switch is used to monitor the door status. A custom built circuit connects the raspberry pi to the two doorbells (mains 220V AC) and to the intercom (~24V AC). These are optoisolated to ensure my raspberry pi doesn’t fry. A 2 channel 5V opto-isolated relay board connects the raspberry pi to the PIR. I used a NC (normally closed) relay so that in case of power failure the PIR is kept connected to the alarm. Wireless sensors use Moteino boards and a custom built wireless protocol.

What’s next

I’ve bought a Zoom 3095 modem, and once it arrives I plan to connect it to the raspi, and get notified when someone calls home. The Android app should be able to check whether the number is in the contacts list and display the name. I’ll also try to implement a blacklist-based call filtering, and auto-close calls if possible. Call recording would also be a nice feature, but it’s probably impossible to do with that modem and is subject to local laws.