How to Build a Home Assistant Dashboard That Your Family Will Actually Use
You spent 40 hours building the ultimate Home Assistant dashboard. It has 12 tabs, live camera feeds, Grafana embeds, server monitoring graphs, and custom SVG floor plans. Your family refuses to use it and just asks you to turn the lights on.
Sound familiar? Here’s how to fix it.
The Golden Rule
If someone has to think about how to use your dashboard, it’s too complicated.
Your dashboard should work like a light switch — immediately obvious, one tap to do the thing. No scrolling, no searching, no “which tab was that on?”
Design Principles
1. One Screen, No Scrolling
Everything your family needs should fit on a single phone screen without scrolling. This means ruthless prioritization. Most people interact with 5-10 things daily:
- Living room lights
- Bedroom lights
- Thermostat
- TV/media
- Lock/unlock
- Maybe a camera
That’s it. That’s your dashboard.
2. Big Tap Targets
Tiny icons and text look cool on desktop. On a phone, they’re unusable. Make buttons at least 48x48 pixels. Prefer large cards over compact entity lists.
3. Status at a Glance
Show the current state clearly. Is the door locked or unlocked? Is the thermostat heating or cooling? What’s the temperature? Your family shouldn’t have to tap anything just to check status.
4. No Technical Jargon
“binary_sensor.front_door_contact” means nothing to your spouse. Label it “Front Door” and show “Open” or “Closed.” Use icons that match the physical thing — a door icon for doors, a lightbulb for lights.
The Family Dashboard Layout
Here’s what works. One view, four sections:
type: sections
title: Home
cards:
# Section 1: Quick status bar
- type: markdown
content: >
{{ states('sensor.time_of_day') }} ·
{{ states('weather.home') }} ·
{{ state_attr('weather.home', 'temperature') }}°
# Section 2: Quick action buttons (most used)
- type: horizontal-stack
cards:
- type: button
name: Goodnight
icon: mdi:weather-night
tap_action:
action: perform-action
perform_action: script.goodnight
show_state: false
- type: button
name: Movie
icon: mdi:movie
tap_action:
action: perform-action
perform_action: script.movie_time
show_state: false
- type: button
name: All Off
icon: mdi:lightbulb-group-off
tap_action:
action: perform-action
perform_action: light.turn_off
target:
entity_id: all
show_state: false
# Section 3: Room-by-room light controls
- type: grid
columns: 2
cards:
- type: button
entity: light.living_room
name: Living Room
show_state: true
tap_action:
action: toggle
- type: button
entity: light.kitchen
name: Kitchen
show_state: true
tap_action:
action: toggle
- type: button
entity: light.bedroom
name: Bedroom
show_state: true
tap_action:
action: toggle
- type: button
entity: light.porch
name: Porch
show_state: true
tap_action:
action: toggle
# Section 4: Climate
- type: thermostat
entity: climate.thermostat
Making It Look Good
Custom Cards Worth Installing
Install HACS first (Settings → Integrations → HACS), then add these custom cards:
Mushroom Cards — The single best dashboard upgrade. Clean, modern card designs that look great on mobile. Install the Mushroom collection and you get:
- Mushroom Light Card (beautiful light controls with brightness slider)
- Mushroom Person Card (shows who’s home with avatar)
- Mushroom Climate Card (clean thermostat control)
- Mushroom Chips (compact status indicators)
Example Mushroom light card:
type: custom:mushroom-light-card
entity: light.living_room
name: Living Room
show_brightness_control: true
show_color_temp_control: true
layout: horizontal
Button Card — For highly customized buttons with conditional styling:
type: custom:button-card
entity: lock.front_door
name: Front Door
show_state: true
state:
- value: locked
icon: mdi:lock
color: green
styles:
card:
- background-color: "rgba(0, 128, 0, 0.1)"
- value: unlocked
icon: mdi:lock-open
color: red
styles:
card:
- background-color: "rgba(255, 0, 0, 0.1)"
The lock shows green when locked, red when unlocked. Immediately obvious.
Conditional Cards
Show things only when they matter:
type: conditional
conditions:
- entity: binary_sensor.garage_door
state: "on"
card:
type: button
entity: binary_sensor.garage_door
name: GARAGE DOOR OPEN
icon: mdi:garage-open
tap_action:
action: none
This card only appears when the garage door is open. No clutter when everything is normal.
Mobile First
Most family members will use the HA companion app on their phone. Design for mobile first:
- Test on your phone — not your desktop monitor
- Use the
gridlayout with 2 columns for phones - Avoid wide cards like horizontal stacks with more than 3 items
- Set the default dashboard in the companion app settings
- Enable kiosk mode (through a HACS addon) to hide the sidebar and header on family members’ phones — fewer things to accidentally tap
The “You” Dashboard vs. The “Family” Dashboard
Create two dashboards:
- Home (default) — The clean, simple one. Set this as the default for everyone.
- Admin — Your nerdy one with all the graphs, logs, server stats, network maps, and 47 tabs. Only you see this.
Settings → Dashboards → Add Dashboard
Create “Home” as the default. Keep your detailed dashboard as “Admin” and set it to only show for your user.
What NOT to Put on the Family Dashboard
- Server CPU/RAM graphs
- Network monitoring
- Automation execution logs
- YAML configuration tools
- Entity lists with 50+ items
- Camera feeds that auto-play (kills phone battery)
- Anything that requires explanation
What TO Put on the Family Dashboard
- Light toggles for every room (tap to toggle, no sub-menus)
- Thermostat control
- Door lock status
- 2-3 quick action buttons (goodnight, movie, all off)
- Weather (glanceable, no interaction needed)
- Currently playing media (if you use media players)
- Grocery list or shared notes (if your family uses them)
The Test
Hand your phone to your spouse/kid/parent with your dashboard open. Say nothing. Watch what they do.
If they can turn on the kitchen lights in under 3 seconds without asking you anything, your dashboard passes.
If they stare at it, scroll around confused, or ask “where’s the kitchen light?” — simplify.
My Dashboard Evolution
My first dashboard had 8 tabs, a floor plan, live camera feeds, and a Grafana embed showing my server’s CPU temperature over the last 30 days. My wife used it exactly zero times.
My current family dashboard has one screen: 4 light buttons, a thermostat card, 3 quick actions (goodnight, movie, all off), and a weather card. My wife uses it daily. My kid can use it.
The admin dashboard still has all the nerdy stuff. I just stopped pretending anyone else cares about my Zigbee mesh topology.
Build for the people who live in your house, not for screenshots on Reddit.