Introduction: Intel Galileo Garage Monitor

About: I like to tinker with just about anything, sometimes it works out in the end. Have fun looking at the projects, try tearing something open and let me know how it goes. cheers, -Joe

The intel Galileo is an amazing platform to make IoT devices. This is an example of using Python and a few sensors to create a garage monitor/alarm system.

Step 1: Parts

You will need the following parts:

-Intel Galileo

-Intel Galileo compliant Wifi card

- 2x Overhead Door Switch http://www.amazon.com/Potter-Amseco-ODC-59A-Overhe...

-1x Magnetic Door Switch https://www.sparkfun.com/products/13247

- 3x 1K resistors

- Arduino Proto Shield http://www.amazon.com/Arduino-Proto-Shield-R3-Asse...

- 3x Screw Terminals https://www.sparkfun.com/products/10571

- DuinoCase Enclosure http://www.amazon.com/duinoCase-G2-Quality-Metal-E...

-TMP36 Temp Monitor https://www.sparkfun.com/products/10988

- Terminal Block https://www.sparkfun.com/products/13061

Step 2: Assemble

Assemble your switches. I wanted to make this modular but also a production service, so I needed to move beyond the solderless breadboard.

To do that I used a Arduino Protoshield and screw terminals. This would allow me to open the case and tinker while also being hardwired.

Step 3: Case

I added a 6 screw terminal block to the outside of the DuinoCase to make wiring it to the switches easier.

Step 4: Switches

Install your switches at the door and attach it to the terminal blocks

Step 5: Software Prerequisites

You will need to install flask and gunicorn. To do that you need to use pip.

Pip relies on ez_setup, so install that first. If you have not installed PIP, follow these instructions.

curl https://bootstrap.pypa.io/ez_setup.py -o ez_seetup.py

python ez_setup.py --insecure

Then you must install PIP. curl https://bootstrap.pypa.io/ez_setup.py -o pip-8.0.2.tar.gz

tar -zxvf pip-8.0.2.tar.gz cd pip-8.0.2

python setup.py build install

pip install gunicorn

pip install Flask

Step 6: Code Overview

Now we get to the heart of the matter. This consists of 2 scripts, one which will run every minute to make DB entries and send emails. The other script is the flask web server.

The scripts can be downloaded from GitHub here: https://github.com/joemcmanus/galileoGarageMon

You want to read the door pins with mraa.

In python you will import mraa, define a pin, then read it.

pin=mraa.Gpio(7)
pin.dir(mraa.DIR_IN)

pinVal=pin.read()

Step 7: Door Code

The script that will monitor your doors for email purposes is called door.py. It will run as a systemd process and start on boot.

Edit the mailto and mailfrom lines to receive email.

Step 8: Flask

The web server is written in python using flask. You will want to copy the flask folder from git hub in to /data/flask .

There is a login page... although I am not doing anything with it in this first version.

Step 9: Startup Processes

You will want all of this to start on boot. In this IoT OS we will use the systemd unit files to get this working.

Copy the garage*.service files /lib/systemd/system/

Then add them to the startup process using systemctl enable .

systemctl enable garagemon.service
systemctl enable garagealert.service

Start it up!

systemctl start garagemon

systemctl start garagealert

Step 10: Email

Sample email shown. It will email if a door is open more than 5 minutes.

Step 11: Web Interface

If you browse to http://yourGalileo.local you will see the status of the doors. There is also a temperature read out... because why not?

Next version will allow you to edit the time frame for alerts and email info from the web.

Step 12: Done

I hope you enjoyed checking out an example of a garage monitor/alarm system using the Intel Galileo Gen 2 and python.