Smart Home 2.0

Tracking our attempts to setup our new home

In 2023 we moved into a new home and started renting out our old house. Between building our old house, and building this new one, a lot had changed in terms of my priorities for home networking:

The following is a WIP, mainly to document for myself and Tina how the home is configured.

Table of Contents

The network map

Before moving into the house I planned out the following internal network diagram.

Architecture decisions

To KNX or not to KNX

Our first choice was whether to with KNX or not.

KNX is a wired approach to smart homes. If you are talking about the kind of automation a stadium or hospital needs, KNX is likely an approach that is appropriate. If money and foresight is unbounded, it’s the way to do automation. It focusses on physical wires. Our electrician said it would have cost more than 30k CHF extra on top of the costs of a normal wiring. And while KNX can integrate with other open source platforms via an IP module, the primary logic for KNX is trapped within ETS, which was far less open and accessible than I liked. Ultimately I decided against KNX as I’d rather spend the money incrementally, and focus on products that have nice APIs or integrate easily into Home Assistant.

Example of the features I want

  • Can control lights, shutters, marquees, and scenes via voice control
  • Know power consumption and solar generation for our home
  • Define a time/motion-based automation, like the kids bedtime audiobooks stopping and lights changing at a certain time
  • I want the house to react to the environment, for instance closing awnings if raining or having shutters closed based on the suns azimuth and intensity
  • Modify an automation based on context, e.g. corridor lights respond to motion depending on ambient light and/or time
  • Key events in the home to notify me (e.g. James and Tina have left the home but door it unlocked)
  • Know who approached my property (video/video doorbell with person detection)
  • I want presence detection in transitory spaces (e.g. turning on hallway and bathroom lights should always be automatic)
  • iphone, iwatch and tablet interfaces to pull in home and external information (external example being live public transport information)
  • Motion and light based lights were it’s useful (e.g. hallways)
  • Can open the door remotely
  • Set the oven to pre-heat (or stop it)
  • Receive and view the doorbell activity remotely
  • Be warned about humidity or temperature fluctuations in the house

The smart home components

Home Assistant

Home Assistant is an open source python library for home automation. I have it installed on a small intel NUC server, using the dedicated Home Assistant OS (HOAS). This machine is the central brain of the house, listening, translating and tracking what all the smart home components are up to.

Media server

Currently I run Plex as an app on a WD PR2100 NAS, with the drives configured in RAID 1, meaning I have data duplicated across two 2TB disks. The NAS is also doing incremental updating to an external cloud provider.

Lights, shutters and marquees

I wanted to move away from smart bulbs to smart switches, as it really annoyed me with Phillips Hue when a bulb is turned off at the wall. There are alternatives like putting a Shelly or Sonoff module behind the wall, but then I came across a Swiss company called Iolo that makes some good looking smart wifi switches called Dingz. There is a price difference between the Shelly’s (15 CHF per switch) vs the Dingz (265 CHF per switch), but as my upper limit was KNX the price seems very reasonable. The Dingz also come with a motion sensor, temperature prob, 4 buttons, and can take 2 shutters/marquees or 4 lights per Dingz.

Another consideration was a general fear of the cloud for my home’s brain. I wanted to make sure the core function of lights and shutters would work when the network was down. I also have two roborock vacuums, so have always been intrigued by how much data is shifts outside my home network. So the idea was to wire up each light to a single button on a Dingz (and each shutter or marquee to two buttons), and then use remaining buttons for scenes (e.g. a scene used every day in our old house is ‘morning’, which opens the shutters and turns on the dining and kitchen lights). This meant if the home automation server crashed, the scenes would stop working - but the core functionality of turning a light on or off, or moving a shutter up or down, would be working fine.

One pain point though after going with Dingz is that the Iolo company are terrible at documentation, and maintaining backwards compatibility. Initially I used the REST API for Dingz, and struggled with this poorly written documentation, but recently I’ve been able to leverage the fantastic work done by a group maintaining a homeassistant plugin that abstracts away needing to write your own code against the API.

Power management

  • Grid traffic To track energy use I Shelly 3EM CT clamp, that is installed over the three input phases to the house. Being attached to the 3-phases entering the house, this measures power use and also if generated solar energy is greater than consumed, returned electricity to the grid from our solar panels.
  • Solar generation Another 3-phase CT clamp is used to monitor the amount of energy being generated by our solar panel.

Appliances

We have wifi enabled appliances, like the dishwasher, dryer, oven and steam oven - but in practice we don’t really use this. The only relevant integration I could think of would be starting the dishwasher when it’s sunny, but it’s already easy to do that via the switches on the machine.

Dashboard

The main page of the dashboard has the core info we need day to day. As the dashboard screen turns on as you walk past, this makes the weather and calendar super useful.

Below is the dashboard as it looked when we first moved into our new house.

This is an evolving target though, and so as an example this is the dashboard 1 year after we moved in.

Home assistant is essentially just pushing up an HTML/js/css website as a dashboard, which means it can be modified freely. Here is the same dashboard, with some tweaks from ~3 months later.

Page 2 has the controls for the lounge, which is where we use this dashboard most of the time.

I am not showing page 3 as it shows a floor map of our home defined by the robot vacuums, and page 4 as it shows the cameras outside the house. But as a general guide - we can see a map of the house and send one of the robot vacuums to any location. And we have a live feed to 4+ cameras.

Page 5 has the sensor graphs. We have temp in every room thanks to the Dingz light switches, but in the dashboard only show key locations. We also track humidity, total number of lights on, and power use for my home assistant/plex server and my desk.

Lastly, as it’s a dashboard I can display anything. The Recipes and Freezer pages just display iframes for our family recipe website and a page that shows the contents of the freezer via a published gsheet.

James Black
James Black
PhD (Cantab)

James Black. Kiwi | Epidemiologist | Data Scientist | Engineering enthusiast.

comments powered by Disqus