Skip to content

Instantly share code, notes, and snippets.

@nickbalch
Last active November 30, 2021 21:04
Show Gist options
  • Save nickbalch/4712ee1d2871668767c58136efd2db2d to your computer and use it in GitHub Desktop.
Save nickbalch/4712ee1d2871668767c58136efd2db2d to your computer and use it in GitHub Desktop.
Home Automation architecture - Openhab, MQTT, CurrentCost, PYWWS, Moteino, Arduino, RFXCOM

Here's the home automation software I use : Openhab : http://www.openhab.org/ I am still running the V1.x release, not yet moved to Openhab2.

On top of control of devices, I use this to react to events via its rules engine - aiming for automation. For example, using presence detection to turn off lights, time of day and light levels to turn on certain lights, using geolocation to alert on open doors or windows when we leave the house etc.

Lights & Door/window/PIR sensors ($$) -> zwave: two way radio mesh technology

Door/Window/PIR Sensors (cheaper) -> Home-easy / lightwave (one way RF) using a usb device called RFXCOM which supports many RF devices & protocols - http://www.rfxcom.com/en_GB

Temperature (battery operated devices) -> Moteino (Arduino clones) [ https://lowpowerlab.com/guide/moteino/ ] - my GIST is here https://gist.github.com/nickbalch/81e46f41914360b67a770574b8e1deed

Design for a simple battery holder & case here : https://www.thingiverse.com/thing:2355869

People location (iphones) -> Owntracks (http://owntracks.org/)

Electricity usage monitoring -> CurrentCost and USB adapter to a small python program I adapted which then sends over MQTT. Includes some plugs that allow me to specifically monitor consumption of washing machine, dishwasher, tumble dryer, my 3d printer :-)

Weather data -> USB weather station from a local gadget shop and a python program called PYWWS

Some Sonoff (ESP8266 based) http://www.sonoff.cc relays for switching some appliances on and off, controlled over MQTT I am using homie for this: https://github.com/marvinroger/homie-esp8266

I use a program called MQTTWARN to help process and manipulate MQTT messages, for example, to send certain messages to influxdb (see below) in a usable format (values not text etc) - https://github.com/jpmens/mqttwarn

I run supervisor to ensure my python programs start up properly

I've just also added some webcams for outside the house. These are a mix of traditional Wifi cameras and also 2 Pi-Zeros with cameras. I am using motion and motioneye for monitoring these

Reporting and analysis I am primarily sending state changes and sensor data to influxdb - which is a time series database. https://docs.influxdata.com/influxdb/v1.2/introduction/ I use Grafana for visualisation. http://docs.grafana.org/features/datasources/influxdb/

I played around a little bit with Elastic Search, Kibana and Logstash - often called ELK - but I found dbInflux + Grafana to more suit my needs. I still send log files to my ELK instance and aggressively rotate logs on my Raspberry Pis

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment