23 January 2023

My Home Assistant setup (2023 edition)

Everything you've ever wanted to know about my Home Assistant setup!

By In Gear, Make 29 min read

For the past few years, I have been running Home Assistant to make my apartment a smart home. It’s become such a hobby of mine that I’ve even started coding add-ons for it. While there are other popular automation platforms, Home Assistant’s versatility blows the rest out of the water. It connects to everything I own, and will probably connect to anything you own. It keeps ranking in GitHub’s Octoverse roundup of projects with the most contributors. Basically: open-source developers love Home Assistant and contribute code to support the smart home devices they use, making it more powerful every day. If something is not supported yet, it’s just a bored developer away from being integrated.

Statistics from Github’s 2022 Octoverse roundup

On Twitter I regularly tweet about my Home Assistant projects. People sometimes ask about my setup and automations and I figured a blog post was in order! This is a work in progress though – just like my smart home. I’ll keep updating the post over time as the setup changes.

Full disclosure: As of August 1, 2023, I am an employee of Nabu Casa, the company that builds Home Assistant. This blog post was written before I started working there. My opinions on this blog are my own and do not reflect the views of Nabu Casa. Any recommendation of products here is of a personal nature and does not signal approval by Nabu Casa.


It’s unavoidable – your smart home is going to need a lot of hardware bits and bobs. Not just the server that Home Assistant will run on, but also all the devices that either pull in sensor data so you know what is happening inside your home, or devices that let you affect things in your home as a result of this data. Here’s a quick rundown of the stuff I bought to make it happen.

The official Home Assistant Blue case (source: Nabu Casa)


Home Assistant BlueOut of production1
Replace with: ODROID N2+Amazon0
Dresden electronics ConBee II Zigbee stickAmazon1
Home Assistant SkyConnectHome Assistant1
Amazonbasics USB-3 extension cable, 3mAmazon1

My Home Assistant installation runs on the limited edition Blue bundle, an ODROID N2+ board with a Home Assistant-branded case. The Blue version was fitted with 4GB RAM and 128GB eMMC storage, which is quite luxurious for a dedicated smart home system. Blue is no longer in production but you can still get the ODROID N2+ board and 3D-print the case.

Home Assistant Skyconnect (source: Home Assistant)

Zigbee is one of the most popular smart home standards, used by Philips Hue, IKEA Tradfri, and many other brands so their devices can communicate without being connected to WiFi. Dresden’s Conbee II USB stick was the best Zigbee stick available when I started. However, with the new standard Matter coming soon, I also bought Home Assistant’s SkyConnect stick. This will support both Zigbee and Matter and should future-proof me for the coming period. For now, I’m planning on running both sticks at the same time with Zigbee devices on the Conbee II – because if it’s not broken, don’t fix it – and Matter devices on the SkyConnect.

There are known issues with the Conbee and SkyConnect’s antennae (or any Zigbee stick, to be honest) being disrupted when plugged in directly to a Pi or other board with USB3 ports, which is why an extension cable is recommended. Use it to put your Zigbee stick somewhere where it won’t be jammed.


UniFi Security GatewayUbiquiti1
UniFi UAP-AC ProUbiquiti1
UniFi UAP-AC LiteUbiquiti1
UniFi Switch Lite 8 POEUbiquiti2
Unifi Switch Flex Mini Ubiquiti2

Strictly speaking, this is not part of our smart home setup but I did decide to upgrade to a Ubiquiti UniFi-based home networking setup specifically for smart home purposes. The cheap routers you get for free from your internet provider are often not capable of supporting more than a handful of WiFi devices at the same time leading to connection issues and data loss once your smart home grows. If you think you’ll use more than a few WiFi smart home devices, consider switching your networking gear to something more professional than what came with your provider for free. Doesn’t have to be UniFi, just has to be better than stock.

Ubiquity UniFi devices (source: Ubiquity)

The Security Gateway is our router, which has a wired connection to the rest of the apartment using the various UniFi switches. A UAP-AC Pro access point covers most of our apartment, while a single UAP-AC Lite covers a dead spot near our balcony that did not have WiFi reception with just the single Pro access point.

Weirdly, setup and maintenance of your UniFi system requires separate controller software that is not installed on the Security Gateway. Ubiquity instead sells the Cloud Key, a dedicated device that runs the controller. But because we’re using Home Assistant we can run the controller on that server as an add-on for free instead.


P1 Slimmelezer+Zuidwijk1
Shelly Plug (16A)Shelly3
Shelly Plug S (12A)Shelly9
USB to IrDA optical interface cableAliExpress1
HomeWizard Wi-Fi WatermeterHomeWizard1


Slimmelezer+ (source: Zuidwijk)

Almost all power company meters in the Netherlands and Belgium have been converted to DSMR smart meters, which can independently contact the power company and transmit power consumption data. Devices to access these power meters for smart home usage are colloquially known as ‘P1 meters’, as port 1 on the device allows consumers to access the meter data. The meter I use is designed and sold by Marcel Zuidwijk. It’s set up with ESPHome to get data into the Energy dashboard out of the box.

Additionally, I’m doing rough measuring of areas in our home using smart plugs from Shelly. While most people use smart plugs to control and measure the power use of one device specifically, I didn’t want to buy 80 plugs. Instead, I have a Shelly on each power strip so I can measure how much all the devices connected to that strip consume together, e.g. all devices in my media center (TV, amplifier, AppleTV, Playstation, etc.) are all on the same strip. The corresponding Shelly measures how much energy is consumed during an activity, like while we’re watching movies on the couch or playing video games. I just don’t know the difference between, say, the TV or the Playstation on that strip.

There are Zigbee plugs that can be used for the same, but I had severe issues with the first Chinese Zigbee plugs I tried that made me lose confidence in them. As I don’t want to accidentally burn down this entire complex, I opted for the highly-regarded Shelly WiFi plugs instead. I’m using both the Shelly Plug and Shelly Plug S versions, which vary in their max power rating. For high-load machines like the washer and dryer we have the 16A Shelly Plug, for everything else the 12A Plug S. If you want you can reflash these with ESPHome firmware and reprogram them from Home Assistant, but I simply set mine up using the Shelly app and have used them locally using the stock Shelly integration ever since. Works fine.

There are two big exceptions: I do not have the fridge or the freezer connected to a smart plug. There are scenarios in which any smart plug can turn itself off for various reasons, maybe a spike was too high and it goes into overload protection, or a bad configuration of your automation turns it off. For normal devices that’s not a huge issue, but with the fridge or freezer that can mean you have to throw away a lot of perfectly good food. I’ve been there and I can tell you, it’s just not worth the risk.

While almost all devices in the house are covered (in aggregate) by Shelly plugs, we do have some exceptions. For example, lights in ceiling fixtures that are powered directly from mains won’t be covered by smart plug measurements. For those, I use the PowerCalc integration which estimates the power consumed by smart lights and similar devices in their database, based on their current settings.


Landis+Gyr meter with optical probe attached

Our heat is provided by district heating in this complex. So while we’re not literally using gas ourselves, I do want to track how much heat is used in our apartment. Depending on your district heating provider you will have a certain heat meter installed in your home. We have a Landis+Gyr meter which helpfully already has a built-in integration in Home Assistant. To get data out of the heat meter you need an IrDA optical probe that connects to your server by USB, the optical head then attaches to the meter via a magnet that keeps the IR sensors properly aligned. Official probes cost several hundred Euros, but you can (of course) get one for far less from AliExpress.

Do note that Landis+Gyr heat meters work on an internal battery that is not user-replaceable and loses charge every time the meter is polled. Continuous polling is not a good idea as you’ll run the battery down in days. I highly recommend setting up an automation, as described in the documentation, to update the meter only once per day just before midnight. This will keep the data in your weekly and monthly graphs in the Energy dashboard accurate. You will, however, not have real-time feedback on heat consumption throughout the day.


We’ve recently installed a watermeter sensor and now have water data in our energy dashboard. We had a bit of a weird meter – a Honeywell, which is a rebranded Elster in a different casing – and I was worried that some of the projects we were looking at might not mount nicely to this meter. In the end, I picked the Wi-Fi sensor from Homewizard because it had an Elster-compatible mount. Apart from having to snip off 1 little mount pin that did not fit on my Honeywell casing, it works perfectly out of the box! You do need to make an account and install the meter using their cloud app, but from then on you can set up the meter’s local API and connect to Home Assistant.


Philips Hue Hub (in starter set)Amazon1
Philips Hue E27 AmbianceAmazon3
Philips Hue E27 WhiteAmazon9
Philips Hue GU10 White SpotAmazon6
Philips Hue E27 filament bulb (various sizes)Amazon4
IKEA Tradfri E14 Color Temperature LightIKEA3
IKEA Tradfri GU10 Dimmable LightIKEA3
IKEA Tradfri 10W LED DriverIKEA1
Osram/Ledvance Smart+ ZigbeeAmazon5
Elgato Ring LightAmazon1

We had a Philips Hue-based light system in our apartment before we ever installed Home Assistant, so that’s still what we use. Through the years we have tried using cheaper Hue-compatible Zigbee lights but for the most part, we’ve removed these from our setup. Once you’ve gotten used to Hue quality, it becomes frustrating to be confronted with the shortcomings of cheaper lights. In a few cases, we have made an exception for IKEA Tradfri bulbs but they still have their own little problems. For example, we had a bad batch of IKEA GU10 spots that had horrible coil whine you could hear in the next room. And our IKEA E14 bulbs still refuse to correctly switch to Hue scenes that change both brightness and color temperature at the same time – they will only perform one of the commands.

Philips Hue Starter Set (source: Amazon)

All of our bulbs are either warm white dimmable or color temperature bulbs. We do not use any full-color Hue lights, which are more of a fun gimmick than of any real use. Honestly, when I was at university I spent years running sound and light in our students’ pub and had a ton of fun with the PARs, moving heads, and scanners, but I really don’t see the need to relive those days at home.

One amazing quality-of-life upgrade we recommend is automated kitchen cabinet lighting. We mounted an IKEA LED strip underneath the kitchen cabinets, with a Tradfri driver to connect it to our Hue setup. Using Home Assistant automation and a motion sensor, this light automatically turns on when we’re doing anything near the kitchen countertop.

All of our Hue lights still run on the Philips Hue hub. We could transfer them to the Conbee II Zigbee stick, which would also improve the mesh network for all the Zigbee sensors running on the Conbee. But that would make the functionality of all lights dependent on Home Assistant. My Home Assistant is pretty stable now, but my first iterations of this setup had a lot of issues. Keeping the Hue system as a graceful fallback to control lights if Home Assistant was down was a key factor in getting partner approval factor (PAF).

Because I now work fully remote for Nabu Casa, I spend a lot of time on online video calls. To make sure people can actually see me, I bought an Elgato ring light to properly light my face. It’s an expensive ring light, but the main advantage to competitors is that it can be controlled over wifi and connects to Home Assistant.

Another legacy product we use in our house is the Ledvance (formerly Osram) Smart+ plugs. These were, back before we were using Home Assistant, the only smart plugs that worked with both Philips Hue and Apple Homekit. While very nice and affordable at the time, they’re now outdated and oversized compared to modern options.

Control devices

Philips Hue Dimmer switchesAmazon4
IKEA Tradfri shortcut buttonIKEA3
IKEA Tradfri wireless dimmerIKEA3
SONOFF NSPanelAmazon1
Logitech Harmony HubOut of production1
Home Assistant iOS Companion AppHome Assistant2

You might notice that there are no voice devices in the above list. That is not entirely true; we still have a few Google devices (Nest Mini, Nest Audio, etc.) throughout the house for audio playback. However, we have disabled the microphones on all of them and we’re no longer using them for smart home voice control. I was willing to give voice a chance for years, but it’s 2023 now and Google’s voice assistant still isn’t reliable enough. For now, we’ve returned to physical controls and mobile/desktop apps.

Light switches

Each room in our apartment has a Philips Hue dimmer switch for basic control of our lights, hooked up to the Hue hub. They’re attached next to the regular light buttons, which we keep stuck in the on position with some electrical tape. We have set up light scenes for all our common activities through the Hue app and all switches are programmed to cycle through those scenes. Optimally, the use of motion, presence, and light sensors feeding into automations should make it unnecessary to ever use physical switches. But in reality, you’ll find that you do actually need to override or modify the lights that are turned on from time to time. They’re also easier to use for guests or visitors who do not have the Home Assistant app installed. So while we consider them a fallback, they are an essential fallback to have.

Philips Hue dimmer switch (source: Philips)

Control switches

In some cases, a simple physical control is preferable to using a more extensive interface like the companion app. Especially in scenarios where we will be occupied with something else, it’s much easier to have something you can press quickly to start something predictable that requires no further interaction.

IKEA Tradfri Dimmer button (source: IKEA)

The IKEA Tradfri line has a variety of different Zigbee switches that I find an excellent choice for such simple controls. Our favorites are the Shortcut button, which has only one button you can press, and the Dimmer button, which has two sides you can press. These simple devices are very cheap, attach with either sticky tape or magnets, don’t have more functionality than needed, and are easily programmed in Home Assistant. The only downside is that they go through batteries quite a bit faster than other Zigbee devices we own, so it’s a good idea to keep some spares.

For example, we have a single Tradfri Shortcut button at the main door of our apartment. When we keep holding the button down for a few seconds, the hallway lights will flash to confirm and Home Assistant will then start shutting down the entire house. This goes further than the normal home-off sequence that you can find in apps like Hue, which is limited to just the Hue lights. This automation also shuts down everything that is not required to run when we’re not home, including all non-light devices like TVs, consoles, and peripherals that we may have forgotten on our way out. We can also trigger a similar shutdown sequence with Shortcut buttons near our bed.

In the kitchen, on the other hand, we have a Tradfri Dimmer button attached to the side of the cooking island. Pressing the 1 side of the button will start playing random music from our favorite cooking Spotify playlist on the Nest Audio that’s in the kitchen. While the music is playing, the two sides of the button become volume controls instead – press the 1 side to increase the volume, or press the 0 side to decrease the volume. If you hold down the 1 side you can switch to a different playlist, while holding the 0 side down stops the music. A very easy 1-click way to listen to music in the kitchen without having to start up the Spotify app, scroll around to select the music you want to hear, then go through the casting procedure to get music finally playing.

Similarly, in the bathroom, we have a Tradfri Shortcut button mounted to the side of the entrance. One press, as you walk in, will start playing music from one of our favorite Spotify playlists selected at random on the Nest Mini we’re using as a cheap smart speaker in the bathroom. Another press will switch to a different playlist, while a long press will stop the music. No matter how groggy we are, no matter how early in the morning it is, we’ll always be able to hit that button and wake up to some of our favorite music.

My last Tradfri Dimmer is used to control my Elgato ring light. As the light conditions in my home office change throughout the day, I can’t rely on a single default setting for the ring light. Instead, I’ve hooked it up to a button similar to my kitchen music controller. Press the 1 side to turn on the light, then press 1 to increase brightness or 0 to decrease brightness. If you hold 1 the light goes to full brightness immediately, while holding 0 turns it off.

Desk controller

The SONOFF NSPanel is not actually intended to be a desk controller. It was a kickstarted product from SONOFF to build a combined 1-gang dual light switch controller with a touchscreen interface. The problem is that for most people, their light switches are not actually at the height you would want a touchscreen to be. But you can convert the NSPanel to run on a USB cable, put it in a 3D-printed case, flash the firmware so it runs on ESPHome, and put it on your desk. I used Mark Watt’s guide on YouTube for step-by-step instructions to convert my NSPanel.

Mark uses an older ESPHome setup by Marc Fager for the NSPanel in this video, which required reflashing the device every time you wanted to change a setting. I have since converted my panel to use the setup by Blackymas instead. This is a very recent setup that flashes a single ESPHome firmware to the NSPanel once and then lets you configure all settings from a Blueprint in Home Assistant. This allows for far more frequent iterations as you experiment with the panel and find out what works for you.

Harmony remote control

Logitech Harmony Hub (source: Logitech)

An essential element of my smart home is sadly out of production now that Logitech has abandoned the Harmony line. The original Harmony was Logitech’s universal remote control for home entertainment devices and other gadgets that could be controlled via IR, replacing all the different remotes that otherwise clog up your couch. It was built around an all-in-one remote that could be programmed to control any device in Logitech’s immense database. The Harmony Hub extended the Harmony line by not having just that single remote but instead using a central IR hub that could be triggered to send commands via various controllers. It still had a separate remote, but you could also use mobile apps, and even an API, to control it. That last option is why this controller works so well: thanks to the integration this hub lets you control many non-smart devices over IR from the Home Assistant interface. I even used it to send commands and automate to an old dumb Eufy robot vacuum, which is not Wi-Fi connected but can still receive the Hub’s IR commands. I have since replaced the Eufy with a Roomba.

Mobile Apps

Our prime method of interacting with our Home Assistant installation is the official iOS app, with the official WatchOS app a close second. Our dashboard in the app is configured to provide us with the most important controls we need in every room while trying to keep data clutter to a minimum. It’s a tough balance to find, but it’s important to keep the app usable. Home Assistant gives us the flexibility to make every screen custom to our own whims – but it’s easy to forget that UI and UX design are well-paid specializations for a reason.

The other important control method in the iOS companion app is actions. This lets us configure ‘buttons’ in the app that we can use as shortcuts to Home Assistant controls and automation on the iPhone lock screen, in widgets, and on the Apple Watch. Many of my most often used automations – like power cycling all devices in the media center to try and troubleshoot connection issues between devices – are set up as actions on my Apple Watch so I can trigger them from my wrist.

Apple Watch face with Home Assistant complications

A neat trick with the Apple Watch and Home Assistant is that you can easily display information from your Home Assistant server as a watch complication. For example, in this screenshot, you see the Zigbee temperature sensor data of our main rooms in the lower right corner and a rain forecast graph in the top right. If you’re interested in this, I’ve written a guide on how you can accomplish the same!

We also use the companion app for location tracking and triggering of automation based on whether we are at home or not. The iOS location tracking is far from perfect, as apps only get periodic updates when there is a ‘significant change’ or when you enter a predefined zone. But for simple home/not-home automation this works pretty well.

Zigbee sensors

Various Xiaomi/Aqara smart devices and sensors (source: Amazon)
Aqara door and window sensorAmazon4
Aqara temperature and humidity sensorAmazon5
Aqara water sensorAmazon3
Xiaomi light sensorAmazon1
Aqara motion sensorAmazon6
IKEA Tradfri signal repeaterIKEA2

Our Zigbee sensor network is based mostly on cheap Xiaomi/Aqara sensors. Their low cost, especially when bought from China, makes them an excellent cost-effective method to roll out many sensors throughout the house. The Xiaomi/Aqara sensors are designed to connect to Xiami’s own hub, but they follow the Zigbee standard enough (though not perfectly) to be connected to the Conbee stick. A known issue with these cheap sensors is that they don’t handle changes in the mesh well, leading to potential connectivity issues if you connect them to the Zigbee network in one location and then move and install them in another. It’s best to add them to your Zigbee network in the location where you will install them, so they can already see the nodes around them to route their data through.


The door sensors from Aqara are simple magnet-based sensors that can detect if the doors and windows are open or closed by their magnetic contact. They’re fitted to all outside doors and windows here, along with some inside doors that require automation on opening. For example, opening the door to the closet holding our washing machine and dryer immediately turns on the light and turns it off again when the door closes. We also have automation running to remind us of doors or windows that we may have left open unintentionally.

Aqara Door and Window sensor exploded view (source: Aqara)

Because this sensor works by using a magnet in the secondary part to close a contact in the main part, you can also use just the main sensor part and a small magnet to achieve the same effect. This may let you install this sensor in small gaps or other locations where the full sensor doesn’t properly fit.


Aqara Temperature and Humidity sensor (source: Aqara)

The Aqara temperature and humidity sensors are a simple way to measure temperature throughout the house, which helps with regulating heating. Apart from temperature and humidity they also provide atmospheric pressure data. I have five of these sensors in rooms throughout the apartment, along with one mounted outside on the balcony in a 3D-printed case and one mounted inside the fridge in a 3D-printed mount. The fridge one has been a lifesaver already, as it revealed our old fridge was no longer cooling to spec and on default settings regularly became much warmer than intended for preserving food. Home Assistant now sends us an alert notification if the fridge warms up over 10° C. The balcony sensor, on the other hand, gives us a more reliable measurement of the outdoor temperature at our third-floor balcony, which is often different from the temperature at ground level the weather service provides. This is useful to keep our balcony plants alive.

Other Xiaomi/Aqara sensors also report temperature sensors in Home Assistant, but these don’t detect ambient air temperature. They instead measure the temperature on the sensor’s PCB, which will be much higher than the actual room temperature so you can’t rely on them.

Water leak

We once had a rather severe leak in the toilet in our apartment, which flooded the apartment below us. To make sure we never experience this again, we have Aqara water leak sensors in the corner of every room that has running water. If these sensors ever detect water, an emergency notification with an alarm sound will be sent to the companion apps on our iPhones. Really hope we’ll never trigger these, but better safe than sorry.


Xiaomi Mi Light Sensor (source: Xiaomi)

The Xiaomi light meter measures light in a room or, in our case, the outside world. It’s a very handy sensor to have as the light levels in a room can be used to adapt the settings of your smart bulbs or automation. We have this sensor mounted, using a 3D print, to a shaded window that is not directly in the path of the sun. It’s always looking out, sensing the light that is hitting the buildings across the street. This way our ambient outside light graph does not get intense spikes when the sun hits the sensor directly. Instead, the sensor will pick up more of an average brightness of the outside world, giving us a more reliable measure of how bright the day is. Ideally, as the most reliable measurement of ambient daylight, I’d want to point this sensor upwards through a skylight that doesn’t get direct sunlight. But since we don’t have a skylight, this solution will have to do. We mostly use this sensor in light automation.


The Aqara motion sensors are not very suitable for presence detection, as they require large movements for positive detection and have a long cooldown before they can be triggered again. We use WiFi EP1 sensors for presence detection instead. However, the Aqara sensors are excellent for anything that can be triggered by motion and then kept on for a longer duration. We use them for our kitchen cabinet lighting, where the sensor is aimed at the kitchen countertop. If you’ve got both hands full carrying a heavy casserole pan, for example, it’s really nice to have those lights turn on automatically when you’re trying to maneuver it in place. We also use them for our desk lamps with the sensors placed directly underneath our desks. Sit down at a desk and the desk lamps turn on automatically, ready for you to work. Our hallway is also rigged with these same motion sensors, which makes it easy to come home with bags in your hands without having to try and hit a light switch.

Aqara motion detection area (Source: Aqara)

It’s good to know that the Aqara motion sensors don’t have a symmetrical detection field, the ‘top’ is flat while the ‘bottom’ detects downward at a 45-degree angle. This means you can have some flexibility in creating detection zones simply by orienting the ‘top’ of the sensor to align with the edges of the zones you’re trying to make. We do this in the kitchen, for example, to make sure the cabinet lights only turn on when our hands are past the edge of the countertop and not when we’re just walking past the kitchen to another room.

Range extenders

Normally, a Zigbee network is a mesh. In theory, each device in a Zigbee network can talk to each other, passing sensor data to each other so it always makes it back to the server. However, that does require constant power for the Zigbee devices, which then function as routers. Battery sensors will only function as an end device in this mesh, not passing information through. In a normal Zigbee mesh the smart lights are the most common powered Zigbee devices that will work as routers… but in our setup, the lights are in a different Zigbee network because they’re hooked up to the Hue hub. That means the Conbee network exists almost entirely out of end devices. To compensate for this, we added two IKEA signal repeaters to the mesh. They have no function, beyond being powered and functioning as routers.

While this works fine, it’s been pointed out to me that any other powered Zigbee device would have done the same and have an actual benefit. So a pair of IKEA smart plugs would probably have been a more useful addition to this Zigbee mesh.

WiFi sensors

Awair ElementAmazon1
Everything Presence 1 mmWave sensorEverything Smart Tech2
Athom Human Presence sensorAthom Tech2
IKEA Vindriktning (ESPHome mod)IKEA / DIY1

Air quality

The Awair Element is our main air quality sensor. It measures CO2, TVOC, and PM2.5 along with temperature and humidity, combining these metrics into a single air quality score from 0 to 100. The story behind the purchase of the Element is rather amusing – for a while, it was used to mine crypto based on local air quality. This meant a lot of miners bought Elements thinking they would earn money for doing absolutely nothing. But then Awair stopped supporting this crypto, and all the miners sold off their Elements for bargain prices. This was definitely in our favor as we had wanted a good CO2 sensor for a while. Most cheaper sensors actually measure other air quality metrics to estimate the CO2. However, the Awair Element is one of the few sensors that use an NDIR sensor to measure CO2 directly.

Awair Element (source: Awair)

Our other sensor is a modified IKEA Vindriktning. This cheap PM2.5 sensor from IKEA can be used standalone, in which case it alerts you to air pollution using a traffic light LED scheme. But the sensor can easily be modified with an ESP board and ESPHome firmware to send data to Home Assistant. I’ve written up a guide so you can build one yourself. We use the Awair in the living room, where we spend most of our time and CO2 levels can rise quickly, and the Vindriktning in the office where the 3D printer also sits, to keep an eye on particulate matter levels.

Presence detection

Our Zigbee motion sensors are of the PIR type, which requires large movements to be triggered. If you’ve ever worked in an office where the lights automatically turn off and you’re left in the dark because it couldn’t see you typing, you’ve experienced the shortcomings of PIR first-hand. Presence sensors use mmWave radar to see far smaller movements – some mmWave sensors can even detect your breathing – though they tend to be slower to react than PIR. My main presence sensor of choice is the Everything Presence One (EP1), which is a kit made by Lewis from Everything Smart Home. It combines both a PIR and mmWave sensor in one, so you can have the benefits of both: the fast triggering of PIR on large movements, and the ability of mmWave to sense small movements.

We use the EP1 in two rooms: the office, where it turns the lights on when I’m working and off when I’m definitely gone. And the living room, where it turns our digital art on when we’re actually in the room to appreciate it. Before we had the EP1, our LED art and digital frames would turn on and off based on a timer that matched when we were usually awake. But they were also turned on when I was working in the office and not even in the living room! Now they’re only on when we’re in the room.

One of the main disadvantages of the EP1 is that Lewis only sells from the United Kingdom, which means your orders will be hit by customs if you’re in the European Union (thanks, Brexit). Tax, import, and handling fees from the courier service (fuck you, DHL) can really pump up the price. As a cheaper alternative, I also have two cheaper Human Presence Sensors from Athom Tech. They’re built very similar to the EP1 but use far cheaper mmWave and PIR sensor components. They’re not nearly as nice as the EP1, but they also cost far less. I currently use them to detect if we’re still present in the kitchen or the bedroom and turn off any forgotten lights if we’ve left that room for a few minutes. I don’t trust them enough to turn anything on, yet.

Bluetooth sensors

Xiaomi MiFlora plant sensorAmazon11
Xiaomi MiFlora Max / Vegtrug Grow Care Garden plant sensorOut of production1
ESP32 Bluetooth proxies (flashed via ESPHome)Amazon2

I am terrible at keeping plants alive. This is so widely known that my girlfriend’s first birthday gift for me was one of those sealed plant terrariums that only require sunlight and should be impossible to kill. Spoiler alert – I killed it. These MiFlora sensors from Xiaomi are a popular way to know how your plants are doing. Most importantly, they measure the moisture in the soil so you know if your plants need watering. They also measure temperature, light, and nutrient levels – but we don’t really act on those readings as much.

Xiaomi MiFlora sensor (source: GitHub)

The MiFlora’s white shells are kind of big and ugly, and they draw an obnoxious amount of attention in the pot. Still, it has helped keep our plants alive for far longer than we’re able to on our own. I do have one plant, a Strelitzia, that is in a large pot that doesn’t work well with the smaller MiFlora. Because they only penetrate about 6 centimeters into the soil, they would only measure the near-surface moisture content in big containers. As an alternative, we bought the MiFlora’s larger brother, the MiFlora Max – also known as the Vegtrug Grow Care Garden. This far larger sensor was originally designed for outdoor use and is more suitable for large plants.

Until recently we used the ESPHome Xiaomi BLE component on a dedicated ESP32 receiver. However, with the introduction of Bluetooth proxies, this is no longer necessary. You can now install multiple ESP32 boards flashed as Bluetooth proxies in Home Assistant, and they will function as remote Bluetooth sticks for your installation, passing on Bluetooth communications to your server via WiFi. This seriously increases the effective range of your Bluetooth network – you don’t even need an actual Bluetooth chip in your server, the proxies will add Bluetooth if you did not have this capability before – and is compatible with passive BLE (Bluetooth Low Energy) messages sent by the MiFlora sensors. We had avoided adding more Bluetooth devices to the apartment so far, but now that proxies are here, they’re back on the table.


NETGEAR Meural Canvas II 27″Amazon1
Samsung Frame TV 55″Amazon1
Google Nest HubGoogle2
Gledopto Zigbee LED driverAmazon1
Ulanzi TC001 Smart Pixel ClockAliExpress1

Last but not least, we’ve got art! The little things that maybe have no functional use in our smart home, but are so important to the quality of our life. The Meural Canvas II is the most advanced digital art frame currently available. My girlfriend and I are both photographers, so it feels quite amazing to display our own work on our walls. It’s far from perfect – I’m particularly annoyed that the screen does not have ambient color temperature correction, considering the price – but I’m still really happy we have this one in the house. I’m such a fan of the Meural that I’ve even written HA-meural, the integration to control your Meural in Home Assistant.

Meural Canvas II digital art frame (source: Meural)

The Samsung Frame TV comes from their Lifestyle collection and is like a big digital art frame that also works as a TV. When the TV is off, you can display your own photos or art curated by Samsung from museum collections. The downside is that Samsung wants to sell that art membership and has made the process for uploading your own photography utter hell – fuck SmartThings and the developers who work on it. Honestly, I don’t think I can recommend a Frame anymore. If you do have one, I recommend using this integration for it. There are other integrations for Tizen-based TVs but this one works best, especially to support the art mode on the Frame TV.

Google Nest Hub (source: Google)

The Google Nest Hubs were originally purchased because I thought I would use them as Home Assistant desk controllers using the dashboard cast method. But in the end, this was not reliable enough to use on a regular basis. Instead, the Nest Hubs have become some of our favorite casual digital frames! Where the Meural Canvas and Frame are filled with all of our ‘proper’ photography, the Nest Hubs are filled with all of our fun shots. Happy memories of things we did together, festivals and parties we went to, and friends we don’t want to forget. The Nest Hubs screens both adapt brightness to the ambient light and correct the screen for the ambient color temperature, making them look remarkably true to a printed photo. A black and white photo on the Nest Hub will be displayed with a yellow tint if the light hitting the Hub comes from a warm white bulb, making it look like the bulb’s light is affecting the photo. I really wish Meural would copy this functionality.

As the Hub does work as a Google Home controller natively, you can still control devices in your smart home even if casting the dashboard doesn’t really work. And with Home Assistant you can even extend this functionality to include any devices that are not natively supported in Google Assistant, by exposing them to Google through the Home Assistant interface.

Our last piece of art is an LED light sculpture based on the Gledopto LED controller. Inspired by the light sculptures by Reflektion, it’s a led strip mounted in a black aluminium frame. Because the Gledopto controller is Zigbee-based, it’s hooked up to our Hue hub and we can control it from Home Assistant. The colors change slowly over the day, flowing through our favorite colors, while the brightness is automated to adapt to the ambient light levels. Would you like something like this? We’ve written a guide on how to build your own.


You’ve come to the work-in-progress part of this blog post! I have a lot of ground to cover here, from HACS add-ons to ESPHome to Node-RED, but will continue writing that up at a later stage.

Midjourney’s interpretation of a developer experimenting with their smart home

Nabu Casa

People often wonder why you should pay for Nabu Casa when most of the functionality they offer can also be recreated yourself. There are two good reasons why you should pay: First, Nabu Casa takes all the effort out of setting up this functionality. I’ve tried making my Home Assistant available externally, and for someone who is not well-versed in the more technical security aspects, it’s not easy to do this safely. Second, I think the core developers deserve a living wage for building and constantly improving a system that I rely on every day. Nabu Casa employs many full-time developers who work hard on improving Home Assistant every day. If I can support that by paying $75 a year for a Nabu Casa subscription, that is money well spent.

Full disclosure: As of August 1, 2023, I am an employee of Nabu Casa, the company that builds Home Assistant. This blog post was written before I started working there. My opinions on this blog are my own and do not reflect the views of Nabu Casa. Any recommendation of products here is of a personal nature and does not signal approval by Nabu Casa.

What do you think?