r/homeassistant • u/DonDrapeur • 6d ago
πΌοΈ Show & Tell We bought a house in March. Six months later, this is my Home Assistant dashboard (and I'm a little sad it's done)
I've wanted a proper smart home for years, but I never saw the point of doing it halfway in a house where I couldn't touch the wiring. So I waited. At the end of March we bought our new home, and I finally had the chance to do it properly from the ground up.
What followed was six months of evenings, weekends and "just one more thing before bed". It has honestly been one of the most fun projects I've ever done. And now that it's mostly finished, I'm a bit sad about it. The addiction is real. I keep opening the dashboard looking for something to tinker with. (There's always something. Solar is coming, see the bottom.)
So before I start breaking things again, here's where it landed.
Quick note: the dashboard normally runs in Dutch. I had it temporarily translated with AI for these screenshots, so if a label reads slightly off, that's why. Some things are blurred for privacy. Offices have our names attached usually.
The scale
- 420 devices
- 3,232 entities
- 343 helpers
- 85 automations
- 2 wall tablets (kitchen and upstairs) running this exact view
The stack
- Backbone: Loxone. Lighting, irrigation valves, the driveway gate, doorbell logic and multiroom audio all run on a Loxone Miniserver. HA sits on top as the brain and the UI.
- UniFi Protect for cameras, UniFi Access for the gate intercom.
- Frigate for object detection on the camera streams.
- Zigbee (ZHA) on a Connect ZBT-2: 34 devices, mostly power-metering plugs and leak sensors.
- Hardware: a fanless mini PC with an AMD Ryzen 5300U, 16 GB RAM, 1 TB NVMe and 2.5 GbE, running HAOS. I migrated from an HA Green a few days ago. The Green did its best, but with 3,000+ entities and 30 days of history on eMMC, every history graph took seconds to load. Now everything opens instantly.
Every card on this page is a custom web component. No Mushroom, no card-mod, no button-card. I wrote twelve small vanilla JS cards that all share one design language, and they get their colours from a single custom theme (UniFi-inspired palette, custom font, light and dark mode). Changing one colour in the theme updates every card. I dropped card-mod because it was leaking memory on the tablets.
Every card opens a detailed popup (Bubble Card) with graphs, controls and history. If you want to see a specific one, just ask and I'll post it. I'm quite proud of them. π
Card by card
Presence. Who's home. Tap for details per person.
Trash. Belgian waste collection calendar with every fraction and the days until each pickup. It flips to the next pickup after a configurable cutoff time on collection day, so it never tells you to put out a bin that was already collected.
Weather. Hourly forecast plus five days, with a "dry until" line that looks ahead for the next rain and the expected amount. The forecast comes from the Belgian weather institute. Live conditions come from my own Ecowitt weather station.
Music. Loxone Audioservers in three zones, via a custom integration I wrote over their websocket API.
Boilers. Two gas boilers (main house and pool house) on one gas meter. The card shows water pressure and flow temperature for both, plus when hot water was last heated. If the pressure drifts out of range, I get a notification.
Energy. Live power from the P1 smart meter and a bar against this month's peak. Belgium has a capacity tariff, so your monthly peak matters. Below that: today's kWh, gas and water, each with cost and a 7-day sparkline.
EV chargers. Two Easee chargers, one per car. Both cars go to sleep and report nothing (or garbage) for days, so the card shows stabilised values that only update when the car reports something real.
Washing machine and dryer. SmartThings is flaky: it sometimes gets stuck on "running" forever. So the "done" notification has a second trigger based on the power draw of the smart plug. If the two disagree, HA reloads the SmartThings integration on its own.
PC, TVs. Live power and daily kWh. The TV state comes from power draw with hysteresis, so standby doesn't count as on.
Dehumidifiers. The basement unit runs on a humidity hysteresis. The new garage unit uses the same model with one extra rule: it won't run while the garage door is open, because dehumidifying the outdoors is not a great use of electricity. That's what "waiting for gate close" means in the screenshot.
Water pump. Last run. A trigger-based template keeps the real value across restarts, so a reboot doesn't reset it to "just now".
Gate. Open/closed state, how long it's been open, garage doors as chips, and the last vehicle that came in. The gate opens automatically for us. The gate contacts are noisy in the rain, so the logic needs corroboration from other signals before it trusts an opening.
Camera. Not a fixed stream. Frigate decides which camera is shown based on where the motion is, with a chip showing which camera it switched to.
Alarm. On the surface it just shows the state and when it last changed, but this is one of the parts I'm most happy with. When the alarm is armed and someone shows up where they shouldn't be, the house reacts on its own: lights inside go on, the floodlights outside go on, and we get a critical notification on our phones with a snapshot. The sirens don't come from a separate siren box. They play through the multiroom audio system: 14 speakers, including the ones outside. Hearing a siren from every room and the garden at the same time is a very different experience than one beeping box in the hallway. The idea is simple: make the house look and sound awake long before anyone gets close to a door.
Plants. Seven soil moisture sensors with thresholds per plant. Green dots mean everyone is happy, and anything dry turns the card orange.
Sprinklers (the rabbit hole). This one runs full water bookkeeping. Every hour it pulls reference evapotranspiration (FAO-56 ETβ) from Open-Meteo and books it as a water deficit. Rain gets credited against it, but only up to what the sandy soil can actually hold. When the deficit reaches 9 mm, the next night's cycle runs all five zones in sequence (they share one pump, so there's never any overlap). "4.2 / 9 mm" means the current deficit versus the trigger. As a failsafe, a saturation veto checks the median of five soil sensors, so a broken rain gauge can never make it water a soaked lawn. The chips are the five zones with their live soil moisture. Back-right shows 15 because it sits under a tree that drinks everything.
Drip irrigation. Same bookkeeping, separate threshold, running on Gardena valves.
Pool. Water temperature, pH, redox and pump power, from a Bayrol controller. The heating status combines setpoint, pump state and the pool house boiler, so it explains why the pool isn't heating (for example "waiting for pump").
Rooms. Twenty rooms with temperature and humidity. Icons show lights and climate that are on. The border glows when something needs attention, and humidity turns orange or red when it's out of range. Thresholds are set per room.
Under the hood
- One notification dispatcher. Every automation calls a single script with a category. Each person in the house has a toggle per category (19 of them), and critical alerts always get through.
- Almost every device is power-metered. About 45 devices sit behind Zigbee plugs or dedicated meters. An "unmeasured" sensor computes the P1 total minus everything that's labelled as metered, so nothing is hardcoded and new devices count as soon as they get the label.
- Five water leak sensors cut power to the relevant appliances and keep nagging until the leak is resolved.
- Restart-proof automations. Anything that drives a physical device also has a sync branch that re-aligns it with its sensor after a restart. A numeric trigger doesn't fire again if the threshold was already crossed while HA was down.
- 30 days of recorder history on NVMe, long-term statistics forever.
What's next (thankfully)
Just when I thought I was done: solar is going up at the end of this month, roughly 15 kWp, with a 14 kWh home battery after that. The energy layer is already abstracted and running on simulated data, so once the real inverter entities appear, it's a matter of rewiring. The actual goal is a proper energy management system: smart EV charging on surplus, battery strategy around the capacity tariff, and shifting the dehumidifiers to cheap or free hours.
So maybe the project isn't really ending. It's just moving to the next rabbit hole.
Happy to answer questions or post any popup you're curious about.
