Despite offering top-tier automation provisions and support for smart home gadgets in all shapes and forms, Home Assistant is well-known for its simple UI. Rather than bombarding you with the typical toggles, settings, and menus, HASS provides an intuitive way to manage your smart devices.

But you shouldn’t let Home Assistant’s cozy interface fool you into believing that you can’t pull off some cool projects with it. From controlling your Proxmox home lab to setting up automations that go into effect as you’re done brushing your teeth, there’s a myriad of fun DIY ideas you can bring to life by pairing IoT paraphernalia with Home Assistant.

Since I had a spare ESP32 lying around, I tried building a smart dashboard that pulls metrics from the other smart devices in my home lab and outputs them to a screen. Now that I’ve completed the project, I wish I’d done it sooner, because it’s hands-down the best addition to my smart home space.

👁 Running Home Assistant on a Raspberry Pi 5
4 things I learned by turning a Raspberry Pi into a dedicated Home Assistant hub

I've been using my Raspberry Pi as a Home Assistant hub for months, and here are some lessons I learned along the way

Why should you build an ESP32 dashboard?

An affordable, customizable display for your essential HASS metrics

If you’re a seasoned HASS user, you may already be familiar with smart dashboards and control panels. However, smart dashboards tend to cost an arm and a leg, with the more feature-laden devices costing a few hundred dollars. While you could shuffle a couple of widgets around, they aren’t very customizable either. In some cases, you could even void their warranties if you try to jury-rig them to work with non-proprietary software – like Home Assistant.

That’s where a custom-built smart dashboard comes in handy. ESP32 boards are fairly inexpensive, and so are the display modules designed for microcontrollers. Heck, you could get a sleek ESP32-powered E-Ink dashboard up and running for less than $50. Then there’s the whole customizable nature of a self-assembled HASS dashboard. Toss the ultra-low energy consumption of ESP32 systems into the picture, and you’ve got a powerful dashboard that won’t hurt your wallet even if you run it 24/7.

Pairing the ESP32 and display combo with HASS

ESPHome makes this process a cinch

Before I could connect my ESP32 with Home Assistant and go ham with YAML scripts, I had to connect the display module with the microcontroller. Just so we’re clear, I initially created this project as nothing more than a proof of concept. So, the display module in my setup is just a $5 gizmo I found on Amazon, and it is far from the cool screens I plan to work with in the future.

Anyway, connecting the display with the ESP32 was as unnerving as ever, as a single incorrectly configured Vcc or GND pin is enough to send the devices to tech heaven. As such, I used the official pinout diagrams (since the exact connections may vary depending on your specific models) before heaving a sigh of relief when the display flickered to life after i hooked the ESP32 to my Proxmox machine.

While we’re on the subject, I’ve virtualized my Home Assistant setup inside my PVE server, as it not only makes backing up the HASS instance a lot easier, but also spares me from running yet another device in my experimentation lab. However, I had to rely on the ESP32 Home Builder plugin to connect the microcontroller to Home Assistant. I added the ESP32 as a New Device, entered the SSID and Password for my home network, and saved the Encryption Key to my Vaultwarden container, in case I need it later.

A USB connection is one of the easiest ways to pair the microcontroller with the ESP32 Device Builder, and thankfully, passing it as a USB device inside Proxmox did the trick. Sure enough, the ESP32 Home integration was able to detect the freshly-configured ESP32. Since I wanted to pull metrics from my HASS sensors, I granted it the privilege to perform Home Assistant actions inside the Integrations tab.

Creating a YAML file for the ESP32 dashboard

It's easier than it looks

With the ESP32 and display pair connected to my HASS instance, it was time to don my coding hat. You see, the ESP32Home Device Builder plugin lets me write code and flash it to the microcontroller, essentially serving as the Arduino IDE. But in this case, I had to deal with YAML files instead of the usual Python code, which made things a little easier.

The first thing I did was copy the code from the ILI9xxx TFT LCD Series webpage on ESPHome’s documentation. Since my display module has a CS pin, I added another entry called cs_pin. I also used the pinout diagram to assign the correct values to the cs_pin, dc_pin, and reset_pin fields. Since it’s a mere 120x160 screen, I specified these dimensions to ensure the ESP32 would output the data within the display's boundaries.

I also added some code for the spi interface, which comprised the interface: hardware key/value pair alongside the clk_pin, mosi_pin, and their associated GPIO pins. Next, I used the text_sensor field to pull the weather data from my HASS dashboard and created a lambda function that lets me output these values to the display. With that, I pressed the Install button to flash the code onto the ESP32. Soon, the display roared to life, triumphantly displaying the weather metrics the ESP32 grabbed from Home Assistant.

There’s a lot you can do with an ESP32 dashboard

While my current setup is nothing too grand, I plan to build up on this project in the coming weeks. A 5-inch E-Ink display sounds like the perfect upgrade for this setup, as the extra space will give me more leeway to pull the rest of the widgets from my HASS UI. Or maybe I should go with a touchscreen display, instead and use it to control my devices rather than merely displaying their statistics. And I can’t stop drooling at the thought of controlling my smart home gadgets and home lab equipment with a screen powered by a mere microcontroller.

👁 The Node-RED web UI
How I use Node-RED and Home Assistant together for the ultimate smart home

With the right setup, Node-RED and Home Assistant can make for a killer smart home combo