๐
Home Assistant configuration for a smart-looking place!
by Renรฉ-Marc Simard ๐
Configuration for Home Assistant running Hass.io on a Raspberry Pi for a one bedroom apartment, offering convenience automations over lights and climate while providing multiple intuitive user controls.
Be sure to โญ๏ธ my repo if you find it useful! ๐
Wall-mounted interface using /appdaemon/dashboards/
.
Sensor /groups/
.
- TL;DR
- Overview
Goals | Agile development - Key features
Climate control | Weather report | Lighting control | Presence and basic security | Modes and scenes | General information | Additional human interfaces - Setup
Supporting hardware choices | Configuration | Systems and bridges | Physical devices | Software | Usage - License
- Thanks
This is a fully documented working configuration for Home Assistant, with screenshots, hints and comments. Browse the code to have a look! ๐
- Inconspicuous: I love tech alright, but like any good butlers it should stay out of sight yet stay summonable. Think Fiji villa, not server room.
- Modular: Both code and devices should be easily replaceable.
- Internet independent: As much local processing as possible for the essential features.
- Accessible through multiple ways: Computers, tablet (kiosk), voice, smart phones, wireless buttons, remotes.
- Intuitive user interfaces: One look at a group of sensors/switches should be sufficient for anyone to understand the current states and how to operate an interface. ๐ก
- Redundant controls: Multiple interfaces should be able to control devices without interference. State changes from manual interventions or dedicated manufacturer apps should be tracked whenever possible.
- No information overload: Provide just enough insights to get an idea of what's going on. And no need for data that's best consumed on more interactive devices (like stock prices, Steam community statusโฆ)
- Not everything should be networked: Bathroom fan, pantry and laundry room lights have their independent motion sensors and that's a good thing. Same independence goes for the smoke detector: I sure don't want to require extensive skin grafts because I forgot an extra space in a YAML file. ๐ฑ
- No Alexa/Cortana/Google Voice: I don't want to have advertising agencies, online stores, or other AI-feeding Big Brother tech-monsters listening in to everything we say and do just for the dubious convenience of toggling lights by voice command. Privacy-centered, offline voice-control solutions like Mycroft and Snips look far more appealing.
This configuration is built with an Agile-like methodology, lead by following main user stories:
- As a resident I want a reliable home automation platform to handle lights and climate that can easily be controlled and overridden in many intuitive ways.
- As an apartment dweller I want to have a discrete, non-permanent installation that takes as little space as possible.
- As a developer I want to use an open-source platform that is feature-rich, accessible, flexible and actively maintained.
- As a consumer I want to pick and choose which devices I wish to acquire without necessarily being locked into a closed ecosystem.
- As a couple we want to be able to operate lights and climate-control appliances as well as get quick overview of weather forecasts and public transit schedules through simple to use interfaces.
Tasks are defined in the issue queue and the development progress is managed using a lightweight Kanban board.
- Temperature monitoring, averaged and rounded to compensate for sensor calibration issues.
- Humidity monitoring, also averaged and rounded.
- Toggle dehumidifier when needed, based on humidity averaged from multiple sensors, and only during the afternoon so not to bother anyone.
- Turn dehumidifier off when windows/doors are opened, instantly for windows and after a few minutes for doors.
- Low/High humidity status and alerts, in case something is wrong with the dehumidifier or the humidifier.
- Mold conditions status and alert, in case dehumidifier is full/overwhelmed or someone transformed the place into a steam room.
- Easy to read status and forecasts using Dark Sky data and only showcasing parameters that actually matter, shown in obvious ways.
- Outdoor quality monitoring with numeric levels and human-friendly categorization for ozone, carbon monoxide, nitrogen dioxide, sulphur dioxide, 2.5ฮผm particulate matter and UV light, averaged from multiple surrounding public local stations.
- Weather radar and satellite maps for local rain and snow from Environment Canada and regional air masses from the U.S. National Oceanic and Atmospheric Administration.
- See
/groups/
and/appdaemon/dashboards/
.
- Control for all pluggable lights, smart ones at
/lights/
and basic ones using/switches/
. - Nanoleaf Aurora control:
- Manual theme selection.
- Automatically rotate through device-based themes based on time of day (unless manually selected above).
- LIFX Z bed underglow lights and ceiling wash lights control:
- Manual theme selection.
- Automatically rotate through cloud-based themes based on time of day (unless manually selected above).
- Automatically correlated colour temperature (CCT), for f.lux-like white temperature shift to gradually remove blue light based on a custom colour and brightness curve, not simply based on the sun โฆotherwise Canadian winters would be quite yellow!
- Motion-based nightlights, where strategic lights fade in, dimmed very low, when movement is detected at night, say when someone wakes up to go the bathroom โฆagain.
- See
/lights/
and/automations/
.
- Cellphone device sensing, to check who is currently home or away.
- Tamper monitoring, in case a perimeter device has been played with.
- Water leak monitoring, to be able to react quickly when a pipe breaks.
- Opened door alert, to know if someone left an exteral door open.
- Opened door indicators where a chime is played and a few lights change colour briefly and subtly when the front door opens/closes, say to indicate an oblivious showering partner that their better half has left or just came in.
- Mode based where unless a blocking mode is set, devices will turn on. Think of a river or a horse: tame it to keep it under control, but release the restraints and they will do their thing: ๐
- Quiet mode where noise makers know to stop or not to start.
- Nap time mode that fades out lights in and near the bedroom and enables quiet mode.
- Night mode fades out all lights outside of bedroom, enabling quiet mode too.
- Low-power mode where each room knows which device should be on or off to achieve a more economical and calm state.
- Smart rooms that know which devices should be on or off based on the modes above. No need for heavy centralized control, let local managers handle their teams!
- Good morning action that releases all blocking modes, allowing all lights to turn on gradually, and noise-making devices are allowed to run if needed.
- Smart global scenes based on
/scripts/
instead of scenes, to allow for sequences and conditions:- Movie scene turns on ambiance lighting and dims smart lights when playing a movie, then returns to standard automations when pausing/stopping.
- Daylight/Gaming/Romantic global scenes fade in and out different lights, select effects and change light colours to set a perfect mood.
- Local bus schedules with the next 3 departures. See
/gtfs/
for optimization hints. - Doomsday Clock in case egocentric psychopaths keep on playing Russian roulette with humanity's future.
- Network status monitoring for latency, upspeed, downspeed, and monthly consumption.
- Home Assistant status monitoring for geek cred with average load, RAM use, disk use, uptime, and update availability. ๐ค
- Daily audio greeting to start the day on a informed, uplifting note. See
/automations/notifications/
.
- Aeotec Minimote to quickly control global scenes and modes.
- Flic buttons on nightstand and in the kitchen for triggering modes and controlling localized lights, depending on current states and click types.
- HADashboard for wall-mounted tablet, featuring indoor sensors reports, transit schedules, weather forecast and radar/sattelite maps, wrapped in an obvious navigation scheme for much UX goodness. Have a look at
/appdaemon/dashboards/
, you'll like! ๐ - Home Assistant Companion iPhone app for full UI access in the palm of my hand. Muahahaha!
- HomeKit for using some key sensors and devices with iPhones.
- Ubiquiti router and access point because forking over some dough for reliable, rock-solid prosumer networking gear makes everything run smoothly. And because hearing one less complaint (dropped WiFi signal) from the girlfriend is priceless. ๐ค
- Uninterruptible power supply to ride over transient power failures.
- WiFi for its cheapness, omnipresence and non requirement of vendor-specific hubs.
- Z-Wave for reliability and guaranteed interoperability between vendors (unlike Zigbeeโฆ)
- Dedicated, firewalled VLAN (Virtual LAN) to segregate all IoT devices from other equipment โฆbecause I cannot trust that my vacuum cleaner won't go on a killing spree. Ever seen Runaway (1984) with Tom Selleck? Eek! ๐ฑ
- Local static IPs for all devices to minimize random drops.
- Local development on a local virtual machine using Docker, then pulled with GIT on a Raspberry Pi.
- Plentiful documentation, for my later self and to help out others.
- Shareable code with all identifiers kept in a non-committed, secrets file.
- Aeotec Z-Stick Gen5 Z-Wave USB dongle.
- Milight iBox2 WiFi Bridge for kitchen RF LED strip controllers, using LimitlessLED integration.
- NooElec NESDR SMArt RTL-SDR (software-defined radio) USB dongle for reading AcuRite sensors.
- Raspberry Pi 3 Model B+ running Hass.io.
- Raspberry Pi Zero W (x3), each managed through resin.io to run as simple, dedicated plug-in bridges for the following services:
- Airthings Wave radon detector bridge running airthingswave-mqtt by Herb Peyerl (@hpeyerl) in order to interface with this Bluetooth radon detector.
- CEC MQTT bridge by Michaรซl Arnauts (@michaelarnauts) to provide basic switching control and state sensing to a connected television.
- Flic smart button bridge to connect with these Bluetooth Low Energy buttons.
Lights ๐ก (see /lights/
)
- 24V 3014 Warm White Cool White LED Strip encased in custom cut and assembled light-diffusing aluminum profiles (x4), connected to Milight RF controllers below.
- Adalight [Ethernet] DIY 100-dots TV backlighting controlled by Lightpack+Prismatik on HTPC.
- DIY LED nightstand [WiFi] via TP-Link outlet.
- Fairy lights [WiFi] via TP-Link outlets (x3).
- LIFX+ [Z-Wave] A19 RGBWW light bulbs (x2).
- LIFX Z [Z-Wave] light strip without HomeKit as bed underglow (x2) and ceiling wash lights (x3).
- Milight CCT LED RF Controller [2.4Ghz] for white-adjustable undercabinet kitchen lights (x4), connected to appropriate UL-listed power supplies.
- Nanoleaf Aurora [Z-Wave] light panels kit. Pretty!
Sensors ๐ก (see /sensors/
)
- AcuRite 06044M Wireless Sensor [433Mhz] for cheap temperature and humidity monitoring inside a cigar humidor.
- Aeotec Door / Window Sensor Gen5 [Z-Wave] for front door.
- Aeotec MultiSensor 6 [Z-Wave] (x3) for temperature/humidity/presence detection.
- Airthings Wave radon detector [Bluetooth Low Energy] to keep an eye on this cancer-causing radioactive gas.
- Dome Leak Sensor [Z-Wave] (x2) in case the dishwasher breaks a seal, a shower curtain has not been closed properly โฆor a toilet has overflowed. ๐คข
- Ecolink Firefighter [Z-Wave] to warn those outside that the fire alarm has been triggered.
- Acer Iconia One 10" tablet [WiFi] with its 1280x800 IPS screen wallmounted as a kiosk. See
/appdaemon/dashboards/
. - Aeotec Minimote [Z-Wave] remote control.
- Flic [Bluetooth Low Energy] buttons (x2).
- Frigidaire dehumidifier via TP-Link WiFi outlet.
- Oscillating fan via TP-Link WiFi outlet.
- TP-Link Smart Plug Mini outlets [WiFi] to control dumb devices (x6).
- Docker on local machine (for development). True, Hass.io is Docker-based tooโฆ ๐
- Fully Kiosk Browser on wallmounted tablet for display and input.
- Hass.io on Raspberry Pi 3 Model B+ (production setup).
- LANnouncer on wallmounted tablet for simple audio and text-to-speech messaging.
- AppDaemon for HADashboard tablet UI.
- Mosquitto MQTT broker for standard IoT messaging.
- RTL_433 to MQTT Bridge to receive and decode AcuRite radio signals.
- Samba share for configuration file sharing.
- SSH server for command-line access.
- Custom UI elements to improve the display of sensors and jazz up the interface a bit.
- Display platform for integration with the Fully Kiosk Browser.
- Doomsday Clock component to track how close humanity is to a man-made global catastrophe.
- Horizontal line state card to visually separate long lists of sensors.
- Lightpack component to control TV bias lights.
- Raspberry Pi power sensor to warn in case of insufficient power supply.
- Text-only state card for wordy sensor states.
- Variable component for non-boolean values.
In an empty directory, type:
git clone --recurse-submodules [email protected]:renemarc/home-assistant-config.git .
echo "secrets.yaml filter=secret merge=keepMine" > .gitattributes
cp secrets-dummy.yaml secrets.yaml
cp appdaemon/secrets-dummy.yaml appdaemon/secrets.yaml
Actual secrets and auto-generated sensitive files are obviously kept off this repo! ๐
- Code and configuration is licensed under the Apache 2.0 License.
- Documentation is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License.
Kudos to:
- The dedicated core team that builds and manages Home Assistant. They work fast and humbly.
- The horde of volunteer developers of all components and add-ons.
- The vibrant community, always willing to help and share code samples.
- The BRUH Automation YouTube channel, Ben's videos got me hooked on using Home Assistant.
Thank you for all your dedication, helpfulness and valuable insights. Cheers! ๐ป๐
Don't forget to โญ๏ธ this repo! ๐