In This Post...
For those who want to dive deep into the Internet of Things, home-assistant.io provides an incredibly powerful platform for monitoring and automation. In my home, we use magic spellbooks as controls around the house. We even have it set up in the van, tracking our travels with integrations to the car itself.
The Home Assistant community has plenty of examples for setting up interesting integrations. In this spirit, I’ve open-sourced both my home configuration and van configuration. Below, I share some of my favorite features and ways of using Home Assistant.
Building Good Habits with Lighting
One of the beginner examples for Home Assistant is using motion detection to turn lights on for a short period of time. This is handy in hallways and bathrooms, especially at night, to avoid fumbling for a light switch. I also find it convenient to turn on the hall lights when the front door is opened, which helps when carrying things in the house.
My favorite sensor is the Aeotec Multisensor 6, because it can detect practically everything: motion, temperature, humidity, light, UV, and vibration.
The first easy change I made to the examples was to change the brightness of the light based upon the time of day. This way, when heading to the bathroom at night, the light is not so bright as to wake us up.
Thinking about lighting, I noticed how we often left closet doors/curtains open. At the same time, the light switches for the closets were in awkward places in the room. I decided to use the same motion detection strategy, placing the detectors inside the closet this time.
Because the light only turns off when there is no motion detected, the act of closing the door/curtain also ensures that the light will turn off. At the same time, leaving the closet open means that the light will stay on as people move around the room.
I turned all of this into a general motion package for Home Assistant.
Again, the Home Assistant examples demonstrate how to know when someone is at home with presence detection. One simple use of this is to turn off lights/music automatically when nobody is at home.
For more fine-grained control, it’s possible to detect if someone is in a particular room in the house. Simple GPS coordinates probably won’t do the trick, though. They’re often too inaccurate, and don’t work well with multi-story houses.
The best solution I know of is using BTLE (Bluetooth). With the Raspberry Pi spellbooks in each room, I can detect how close a given phone is to each room. I adapted the Espruino Hub project, which reports BTLE signal via MQTT, into a docker container for Tiny Cluster. The RSSI (signal strength) is converted into a sensor to determine which room each of us are in.
Perhaps the best use of this information is climate control…
Climate Control (without Central Air/Heat)
Where I live in San Francisco presents an interesting challenge.
Though we technically have central heat, it is a single zone for the entire house — which means we cannot heat rooms individually. It’s not a large apartment, but is four stories tall… so the temperature difference between the bottom and top floors can be up to 20 degrees (F). No matter what temperature we set the thermostat to, some rooms will probably be uncomfortable.
We installed two portable A/C units, and one portable space heater and use smart power outlets to control the on/off state (for simple, cheap units like ours). More expensive portable heating/cooling units may be able to integrate directly into Home Assistant, or use a remote IR thermostat that can connect to Home Assistant.
When combined with the Room Occupancy, above, it’s easy to imagine creating an automation that keeps every room at the perfect temperature depending on who’s home (and where).
Airbnb Guest Automation
When we leave town in the van, we sometimes have guests. I created a simple toggle for “guest mode,” which turns off automations that might not apply to guests.
I also like changing the door code for every guest who is not a close friend. For that, I created a simple input_text and script to change the guest door-code.
Remote Control Kiosks
I already mentioned the magic spellbook kiosks. These devices are locked to the Home Assistant main screen, so that users can only navigate the prescribed UI. They are further secured by not having an active USB port, nor any way to click into the home assistant admin menus. This is achieved with a kiosk script that hides the navigation bar.
Guests can come to my home and control the projector, music, TV, etc. all without logging in to any secure systems. I only give out the password to the guest network, so all the home automation stays enclosed in the private network.
There are many things I didn’t cover here. I played around a lot with UI customization, for example. I also enjoy some of the mood lighting automations (such as turning on the fairy lights only when the patio is occupied at night).
I also will be covering my use of Home Assistant in the van separately, where I track fuel usage, temperature, internet bandwidth, and other interesting things.
There are a number of things I’m still experimenting with. I hope to one day build an automated garden with Raspberry Pis, as well as reduce energy usage even further.
The Home Assistant platform has been moving pretty fast. Up until late 2019, it was quite common to see breaking changes. Things seem more stable now, and I’m just starting to explore some of the more creative uses.
By popular request, here are the parts I’ve used. These are mostly plug-and-play Z-Wave devices, rather than cheap and/or DIY alternatives. I’ll be exploring such DIY approaches (and writing more about my uses of Raspberry Pi and Arduino), but for now…
- Aeotec Multisensor 6
A little pricey, but nice for all the sensors it provides.
UV light can help with automatically setting the lighting levels.
- SmartThings Door Contact Sensor
Samsung isn’t cheap, but I came to Home Assistant by way of SmartThings.
Contact sensors can be used as warnings when doors are left open.
- Yale Assure Lock (Touchscreen Deadbolt)
Supports programming many user-codes remotely via Z-Wave.
Works with my script.
- Aeotec Z-Stick Gen 5
Plug-and-play Z-Wave + Zigbee via USB dongle on the host machine.
Works well with my Kubernetes Helm deployment.
- Samsung Smart Outlet
Again, I came from SmartThings.
Good for turning on/off the heat and AC units.
- GE Dimmable Smart Outlet
This is recognized as a light…
Plug in a simple lamp and have full dimmable brightness!
- Outdoor Smart Outlet
Waterproof with 3 plugs, for the patio heater & fairy lights.
- EliteScreens Electric Projector Screen + Logitech Harmony Home Hub + BenQ Projector
Make the screen go down & projector turn on at the same time.
- AmazonBasics Window-Mounted AC
I like how “dumb” this is.
It can be controlled entirely by the smart wall plug.
Controlling dumb appliances with a smart plug is a pretty easy way to go. However, watch out for anything that has a remote. Physical knobs on the device indicate that it has no memory, which is good because it will resume the last state when turned back on. By using a smart plug, you’re basically cutting off power to the device… it needs to not reset itself when turned back on, or else you may end up with the default settings again.