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