Skip to content
A home automation project for raspberry pi. Main features: the UI as a one page app, a powerfull IFTTT system and extensibility
Python CSS JavaScript C++ HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
arduino-sketches
python-server
remote-speaker
screenshots
ui-onepageapp
weather-predict
.gitignore
README.md

README.md

Home automation project

This project will give you more control over your house and you'll going to have fun building it :) It's strong points are easy integration of very custom hardware which you can build yourself and keep the price down and integration with ready made devices like ZWave and WeMo.

Also a strong visual rule IFTTT (if this than that) interface that can trigger actuators and emit alerts. (see below)

It's a DIY project for makers and hackers and it's based on a raspberry pi (or another linux compatible board), arduino boards IOT devices and other electronics.

Some youtube videos of how the project will look like:

Controlling led strips with zwave here

Automating electric shades here

If you find this project useful in any way i will appreciate it if you give it a star. Thanks.

For those who want to donate something to my effort of developing free software, you can do so using this ripple address: rNVMinyJysATxyMiFK1Tfnv5mCEk1RAvbT or using this bitcoin address: 1B58XeAJQC3kxBW7DM4TwkoTggvbqTitKt

Summary

  • Screenshots
  • Feature list
  • Project overview
  • IFTTT (if this than that)
  • Estimative component prices

Screenshots

  • The rooms page

home_automation_main.png

  • Sensors graphs

sensors.png

  • Rules

ifttt.png

  • Login

ifttt.png

  • Configuration

ifttt.png

Feature list

  • Supports customizable rules from the UI. For example let's say you want in the morning to open the courtains, and if your're home to hear what's the weather outside. Or maybe if the air quality dropped and somebody is home open an electric fan to get fresh air from outside
  • Supports custom hardware (over bluetooth or serial) and commercial hardware: WeMo devices, Zwave devices
  • New devices can be added by extending the code
  • unlock a electromagnetic door through the press of a button on the app or through fingerprint
  • open / closes various types of electric curtains
  • control remote wall sockets
  • use a speaker to emit voice alerts
  • supports voice remote control from the android application
  • open / close lights
  • monitor with different sensors: temperature, humidity, light level, air quality, PIR sensors, air pressure and more
  • power consumption monitoring for the house
  • display charts with sensors data
  • email notifications if the alarm is set and someone enters the house
  • burgler mode (lights are randomly toggled on and off and voices are played)

Project overview: This project uses the following technologies, concepts and tools:

python 3x with tornado web framework, reactJs, coreUI, arduino, redis, pubsub, raspberryPi, bluetooth, raspian (basic linux configuration), arduino IDE, electronics

To get started you'll need a background in programming, electronics and thinkering.

  • First the python server (project brain) located in python-server. For more technical documentation check the links below.

  • Second the arduino sketches located in arduino-sketches. The sketches are for custom devices that control various actuators and collect data from sensors. Some sketches have skematics.

  • The UI located here

  • The android application located here.

  • A text to speech server here

IFTTT

With this module complex rules can be added in the web-interface to be executed by actuators or / and enable voice alerts.

Expressions:

  • Equality: eq(a,b) -> true if a == b
  • Greater than: gt(a,b) -> true if a > b
  • Less than: lt(a,b) -> true if a < b
  • Between: btw(x,a,b) => true if a <= x >= b
  • OR: or(a,b) => true if a is true or b is true
  • AND: and(a,b) => true if a is true and b is true
  • Current time: TIME => returns current time
  • Literal time: 14:25 => value of literal time
  • True: True => literal true
  • False: False => literal false
  • Actuator: A(actuator_id) => value of the actuator who's id is actuator_id
  • Sensor: A(sensor_id) => value of the sensor who's id is sensor_id
  • Literal int: some_int_value => literal int value

Examples:

  • The courtains are open and the time is 7:12:
and  ( eq(A[livingCourtains], On), eq(TIME, 07:12))
  • Phone is home sensor is True and pollution sensor is greater than 55. This can be used to emit a voice alert of the pollution danger.
and( eq(S[phoneIsHome], True), gt(S[airPollution_living], 55) )

Rules can be more complex than this, they can respond to sensors data, time and actuator states.

  • The following rule(fictive) will check if the actuator "livingCourtains" is off, and either the time is greater than 8:45 or temperature in living is between 21 and 22 degreeds
and  ( eq(A[livingCourtains], False), or(gt(TIME, 08:45), btw(S[temperature:living], 21, 22) )

In the following example i'm mixing a block of text with sensors values to announce some sensor data.

Wake up sir, the temperature outside is S[id_of_outside_temp_sensor] and humidity is S[id_of_outside_humid_sensor] 

Estimative component prices:

  • The PI, case, SD card and power adapter will be around 70 dollars
  • Custom made. Each custom made controller composed of arduino, case, bluetooth device or HC-12 device, power adapter, sensors etc and will be around 20-30$
  • The custom fingerprind sensor will cost around 70 dollars.
  • A Livolo light switch will be around 20$ on here
  • An electric strike lock starts from 23$ here
  • A WeMo power socker is about 40$ here
  • An electric roller blade will start from 50$ here
  • Some Zwave devices prices here
You can’t perform that action at this time.