/Home-Assistant-Config

Config files of my Home Assistant Installation

Primary LanguagePython

DataMonkey Smart Home
Smart Home Configuration

This repo serves mostly as my backup of the configuration I use in my home-assistant setup.
How I installed it is described in this other repo over here: (https://github.com/Data-Monkey/HomeAutomation)

But I am happy for this repo to be inspirational for other Home Automation enthusiasts and if you can find some usefull code here, feel free to adapt it to your needs. Most likely I found it in somebody elses repo anyway :-)

The new file structure has been heavily influenced by Frenck and his HA Config structure. While this README is influenced by CCOSTAN and the Bear Stone Smart Home.

Please make sure you ⭐ this repo to keep up to date with the progress.

Why?

Really, the question should be "Why NOT?!"
Why wouldn't you want to automate your home? But then, what is home automation? I didn't want to replace a light bulb with a smart light and as a result I now have to find my phone, open the app and change the status every time I want to switch on/off my light.
Home-Automation needs to make life easier!
So I was looking for tasks that I can actually automate. Thinking back now, one of my earliest home-automation was to buy a harmony remote. One to rule them all :-) So now I don't need 2 or 3 remotes anymore, just to switch on the TV, change the input, switch on the DVR and browse to the recording or channel. Other simple automations that are now running in our appartment are looking after some lights. The ensuite light and wardrobe light are fully automated. More challanging tasks are still in the making. Don't let the TV be switched on until todays chores (homework mostly) are done!

How?

This is what you are here for, so lets just dive in!
Home Assistant and most of the other software used for home automation are installed in docker containers on an unRAID server. The build of this server is discussed in the unRAID forum.
The unRAID server is called TOWER and is the backbone of most things happening in our appartment. It serves as Media Server via Plex as well as a backup for all our laptops and photo library. And it also hosts all the software required for our Home Automation.

Software

As mentioned the unRAID TOWER runs docker with the following containers relevant to home automation
Home Assistant
dockerhub
Home Assistant is the software that holds everything together. It is an Open Source project supported by a great communityt and this REPO is all about how I configured my HA instance.
MQTT
dockerhub
MQTT is a lightweight protocol that lets devices communicate with each other. I use it to let my devices communicate with HA.
I am still trying to come up with a topic strucutre that makes sense and is supported by my devices. See this post MQTT Topic Design
InfluxDB
dockerhub
InfluxDB is where I store a time series of some of my HA entities
Grafana
dockerhub
Grafana is used to visualise the data stored in InfluxDB.
DuckDNS
dockerhub
DuckDNS is a free Dynamic DNS address service. I use it to find my home network from the outside. The public access is required for my Google Assistant integration.
Let's Encrypt
dockerhub
The Let's Encrypt docker provides me with my certificates.
This specific docker also comes with it's internal Nginx webserver and reverse proxy.

not in use anymore:

Hardware

  • HA is installed in a docker hosted on an unRAID box

  • Xiaomi Gateway (x2) shop with a few

  • Logitech Harmony Hub (not integrated yet)

  • Sonos Playbar + Sub

  • Chromecast + Audio Cast

  • Efergy Energy Monitor (demo: https://engage.efergy.com/dashboard)

  • Google Home (x2)

  • RasPlex (not realy any integration)

  • Google WiFI (no integration yet, but keeps all my IoT devices from accessing Internet as they are all paused in the family feature)

  • Sonoff to autoamate bathroom exhaust fan

  • Smart Lights (Yeelight linked to Xiaomi Body Sensors)

  • PiVPN (currently not used, need to work out integration with Google WiFi)


Some of my hardware has been retired for various reasons:
  • Roku2 (replaced with RasPlex as PLEX was not updated on ROKU)

Naming Standards

I am writing this down mostly for myself, as I seem to change the standard every time I sit down to change something!

every entity should follow this convention entity_type.where_what_extra entity_type is given, nothing I can change here. But if it already says sensor, I don't need to repeat that in the name. where is the location or the device name what is what it is doing, measuring, sensing .... extra is just in case I need to make it unique So the temperature sensor in the hallway should be: sensor.hallway_temperature and the battery data for that sensor would be sensor.enviro_hallway_battery

some more examples Xiaomi Button: sensor.button_x_click , sensor.button_x_battery