📓
Bench Notes
Tier 1 · Home Automation Series
Bench Notes · Home Lab Series · Vol. 2

10 Things to Do
First in Home
Assistant

A practitioner's checklist for getting your smart home right from the start — before bad habits become hard-to-fix automations.

Home Assistant OS Automations Backups Integrations Dashboards
Published by Bench Notes · benchnotes.net · © 2025 All rights reserved
🏠 zigbee wifi 💡 🌡️ 🔒 📷 🌡️ BENCH NOTES · VOL. 2
benchnotes.net · Home Lab Series · Volume 2 of 3 © 2025 Bench Notes · Personal use only
📓
Bench Notes
benchnotes.net
© 2025 Bench Notes. All rights reserved.
Home Lab Series · Volume 2 · First Edition
❌ Not Permitted
🚫Sharing, forwarding, or gifting this file to others
🚫Reselling, redistributing, or uploading publicly
🚫Reproducing content for your own products or courses
🚫Using as AI training data in any form
🚫Removing or altering Bench Notes branding
✅ Permitted
Personal use in your own home lab setup
Printing a personal copy for reference
Using included YAML and code samples in your own HA
Referencing this guide when helping others (link, don't share)
Free Updates: Purchased this guide on Etsy? Future updates to this volume are free. Check the HomeLabGuides shop for the latest version, or email us with your order number.
Questions about licensing? Contact us at hello@benchnotes.net
Purchased via Etsy? Your order confirmation contains your access details.
Table of Contents
If You Only Follow One Path, Do This 8 steps, no decisions, no branching — the direct route
Golden Path
How to Install Home Assistant Install methods compared — which one is right for you
Start Here
01
Set Your Location, Timezone & UnitsGet automations to fire at the right time, every time
Config
02
Set Up a Backup Before You Do Anything ElseAutomatic backups to a second location, on Day 1
Critical
System View — How Your HA Fits TogetherThe architecture diagram — understand the system before you build it
Diagram
03
Add Your Integrations SelectivelyThe Day 1 integrations worth adding — and what to skip
Setup
04
Assign Static IPs to Every Device You Care AboutWhy your automations will break without this
Network
05
Name Your Entities Before You Build AnythingThe naming convention you'll thank yourself for later
Setup
06
Build a Simple Dashboard FirstPrinciples that prevent you rebuilding it in 3 months
Dashboard
07
Write Your First 3 AutomationsThe automations every house should have on Day 1
Automations
08
Set Up Notifications That Actually MatterMobile alerts, ntfy, and the art of not over-notifying
Alerts
09
Secure Remote Access Without Opening PortsCloudflare Tunnel or Nabu Casa — the right choice for you
Security
10
Enable Automatic Updates (Carefully)What to auto-update, what to hold, and how to test safely
Maintenance
📝
Notes From the FieldWhat a power outage taught me about startup automations
Experiential
Start Here

If You Only
Follow One Path

Don't want to read the whole guide right now? Do these 8 things in order. No decisions. No branching. Just the path that works.

1
Flash HAOS and set BIOS to "Always On" Install section
Use Balena Etcher. Then enter BIOS before you do anything else and set power restore to "Always On." This step saves your first Sunday afternoon.
2
Set location, timezone, and units Thing 01
Settings → System → General. Get this right before adding a single device. Wrong timezone = automations that fire at the wrong time, forever.
3
Enable auto-backup to Google Drive Thing 02
Install the Google Drive Backup add-on. Authenticate. Enable daily schedule. Takes 10 minutes and is the single most important thing you'll do today.
4
Reserve a static IP for your HA server at the router Thing 04
Log into your router → DHCP reservations → add HA's MAC address with a fixed IP. Do this before anything else references HA by address.
5
Install the Companion App and create your rooms Thing 03 + 05
Install on every phone. Then Settings → Areas → create a room for every room in your house before adding any devices. Name convention: room_device_qualifier.
6
Add 3 integrations, no more Thing 03
Weather (Open-Meteo), Companion App (auto-added), and your device protocol (ZHA for Zigbee or your Wi-Fi brand). Stop here for today.
7
Build one dashboard and write your sunset lights automation Thing 06 + 07
Status strip at top, one card per room. Then one automation: sun.sun sunset trigger → turn on porch light. Run it manually to verify it works.
8
Set up remote access and test it off Wi-Fi Thing 09
Nabu Casa if you want zero config. Cloudflare Tunnel if you want free + full control. Turn off phone Wi-Fi. Verify HA loads. You're done.
💡
Everything else in this guide is the "why" behind these 8 steps

Read the full sections when something isn't working, when you're ready to go deeper, or when you hit a decision that isn't obvious. The guide is designed to be a reference — not a linear read.

Prerequisites

What You'll
Need

Get this list sorted before you start. The guide assumes you have a host device, a router you can log into, and a phone. Everything else is optional or addable later.

Hardware

ItemWhat to GetRequired?Skip If...
HA Host DeviceThe machine HA runs on Budget (~$35–60): Raspberry Pi 4 (4GB) or Pi 5 — great for most homes
Mid (~$100–200): Intel NUC, Beelink mini PC — more headroom, runs other services too
Repurposed: Any old PC or laptop (x86-64) — see Vol. 1 for full setup guide
Required You already have a machine you plan to dedicate to HA
StorageWhere HA lives Pi: High-endurance microSD (32GB min) — or better, a USB SSD boot drive
NUC/mini PC: Any SSD already inside the machine is fine. 32GB minimum free.
Required Your host already has adequate storage installed
Zigbee CoordinatorUSB dongle for Zigbee devices Recommended: SONOFF Zigbee 3.0 USB Dongle Plus (~$20) or Electrolama zzh!
Only needed if you're using Zigbee devices. Skip entirely if using Wi-Fi smart devices.
Optional All your smart devices use Wi-Fi or you have no smart devices yet
Ethernet CableWired connection for HA host Any Cat5e or Cat6 cable long enough to reach your router or switch. HA on Wi-Fi works but is less reliable for automations and remote access. Required Your host is physically next to your router already
USB Drive or NASOff-device backup target A USB drive (32GB+) plugged into the HA host works fine. A NAS or second server is ideal. Google Drive via add-on is the easiest path if you have neither. Optional You'll use the Google Drive Backup add-on instead

Accounts & Software

Balena EtcherFree

Flash the HAOS image to your drive. balena.io/etcher — Windows, Mac, Linux. Download before you start.

☁️Google AccountFree

For the Google Drive Backup add-on. Any existing Google account works — you don't need a new one.

🌐Domain Name~$10/yr

Needed for Cloudflare Tunnel remote access. Register at Cloudflare Registrar. Optional if using Nabu Casa instead.

💡
First Smart Device Recommendation

If you don't have any smart devices yet: start with one Zigbee smart bulb (IKEA TRÅDFRI or Sengled, ~$10) and a Zigbee contact sensor (~$8). These validate your coordinator, give you something to automate on Day 1, and are cheap enough to replace if something goes wrong during setup.

Prerequisites

Networking
Quick Guide

You don't need to be a network engineer. But you do need your network to be set up correctly before HA will behave reliably. Here's exactly what matters and why.

What HA Needs From Your Network

RequirementWhy It MattersCovered In
Wired connection for HA host HA polls devices constantly. Wi-Fi packet loss causes phantom "unavailable" states and unreliable automations. Run a cable if at all possible. This guide
DHCP reservation for HA server Every integration references HA by IP. If the IP changes, the Companion App, remote access, and tunnel configs all break simultaneously. Thing 04
mDNS / local hostname resolution Allows homeassistant.local to resolve on your network. Enabled by default on most routers. Required for easy initial setup. This guide
No port forwarding needed HA does not require open inbound ports if you use Cloudflare Tunnel or Nabu Casa. Never forward port 8123 to the internet — that's a security risk. Thing 09
VLANs for IoT devices Isolates smart devices from your main network. Not required for basic HA, but recommended as your device count grows. Requires a managed switch. Vol. 1
SSH access to your HA server Needed for advanced config editing, log access, and recovery. Not required to get started, but becomes essential for a serious setup. Vol. 1

Basic Network Topology for HA

🌐 Internet ISP 📡 Router DHCP + DNS 🏠 HA Server wired · fixed IP Smart Devices Zigbee · Wi-Fi · Z-Wave 📱 Phone Companion App ☁️ Tunnel Cloudflare / Nabu 💾 Backups local + remote no open ports
📖
Vol. 1 Goes Deeper

The Bench Notes Home Lab Playbook (Vol. 1) covers SSH setup, VLANs for IoT isolation, AdGuard Home for network-wide DNS filtering, Cloudflare Tunnels in depth, and running a dedicated server alongside HA. If you're planning a full homelab alongside your HA setup, Vol. 1 is the companion guide. Available at the HomeLabGuides shop on Etsy.

Visual Reference

Your First HA
Architecture

This is the shape of a well-configured Home Assistant setup. Every component in this guide maps to something in this diagram. Keep this page handy during setup.

🏠 Home Assistant HAOS · wired · fixed IP 📡 Router DHCP · local network wired 🌐 Internet / ISP 💡🌡️🔒 Zigbee Devices lights · sensors · locks USB dongle 📷🔌📺 Wi-Fi Devices cameras · plugs · TVs local ☀️🗺️🔔 Cloud Services weather · maps · optional outbound 📱 Your Phone Companion App · presence local + remote ☁️🔐 Remote Access Cloudflare Tunnel or Nabu Casa no open ports local Local connection Cloud / outbound HA is the hub — everything connects through it
💡
The Shape of a Good Setup

Everything flows through the HA server. Devices connect locally (Zigbee or Wi-Fi). Remote access goes out through Cloudflare, never in through an open port. Backups go both local (NAS) and cloud (Google Drive). Your phone talks to HA both directly on your home network and remotely through the tunnel.

Before You Begin

Quick Start
Queue

This is your first-hour checklist. Don't skip ahead. Each item enables the next one. Check these off in order before exploring anything else.

⏱ First 30 Minutes
Flash HAOS to your hardware and boot to the onboarding screen~10m
Set BIOS power restore behavior to "Always On" before walking away~2m
Complete onboarding — create account, set name, location, and timezone~5m
Reserve a static IP for your HA server at the router before anything else moves~5m
Create your first manual backup immediately — Settings → System → Backups~3m
⏱ First 2 Hours
Enable automatic scheduled backups with an off-device target (Google Drive or NAS)~10m
Install the Companion App on every phone in the house~10m
Add weather integration and your home's primary device protocol (Zigbee or Wi-Fi)~15m
Create all your rooms in Settings → Areas before adding any devices~5m
Name and assign every device as you add it — entity ID, friendly name, areaongoing
⏱ First Evening
Build one simple dashboard — status strip + one card per room~30m
Write the sunset lights automation and test it manually~15m
Set up one notification — test it fires and arrives on your phone~10m
Set up remote access (Nabu Casa or Cloudflare Tunnel) and verify it works off Wi-Fi~20m
Take another backup. You now have something worth protecting.~2m
Reference

First Weekend
Queue

A day-by-day plan for your first weekend with Home Assistant. Follow this sequence and you'll have a stable, backed-up, secure setup by Sunday evening.

☀️ Day 1 — Foundation
Flash and boot HAOS
Set BIOS power restore
Static IP for HA server at router
Manual backup + auto backup enabled
Companion App on all phones
Location, timezone, units confirmed
Rooms/Areas created before devices
3 integrations added, no more
🌤 Day 2 — Build
Naming convention decided and applied
All current devices named + assigned to areas
Static IPs reserved for all HA-connected devices
First dashboard built (status strip + room cards)
Sunset lights automation live and tested
Away mode automation started
One mobile notification tested end-to-end
🌙 Day 3 — Harden & Expand
Remote access set up and tested off Wi-Fi
Notification hierarchy mapped (critical / important / suppress)
Auto-update policy set for add-ons
HA Core on manual update (backup first)
Final backup taken and verified
Notes made on what to tackle next week
💡
The Rule That Keeps Weekends Fun

Add one new thing at a time, test it fully, take a backup, then add the next. The people who end up with a broken HA and no idea why are always the ones who added 12 things in 90 minutes on a Saturday afternoon.

Fast Path

If You Only Follow
One Path, Do This

Skip the decisions. Follow these 8 steps in order and you'll end up with a solid, working system. Everything else in this guide is context and optimization.

1
Install Home Assistant OS (HAOS) — flash to dedicated hardware, set BIOS power restore to "Always On"
2
Set location, timezone, and create your account — get this right before adding any devices or automations
3
Enable automatic backups to Google Drive — 10 minutes now saves hours later
4
Reserve a static IP for your HA server at the router — do this before anything else references HA by address
5
Install the Companion App on every phone — enables presence detection, notifications, and remote control
6
Add 2–3 integrations, no more — weather, your device protocol (Zigbee or Wi-Fi), and companion app
7
Build one simple dashboard and one automation — status strip + room cards; sunset lights trigger
8
Set up remote access and test it off Wi-Fi — Nabu Casa (zero config) or Cloudflare Tunnel (free + full control)
This is enough. You now have a working, backed-up, remotely accessible smart home. Read the rest of this guide when something breaks, when you're ready to go deeper, or when you hit a decision that isn't obvious.
Start Here · Before Everything Else

How to Install Home Assistant

There are four ways to run Home Assistant, and the choice matters more than most guides admit. Two of them will quietly limit you later. Here's the honest breakdown.

Method What It Is Add-ons? Best For Verdict
HAOS
(Home Assistant OS)
Dedicated OS image — runs HA and nothing else on the machine Full Dedicated hardware (Pi, old PC, NUC) ✓ Best
Supervised HA supervisor on top of an existing Debian OS Full If you need other services on same machine ✓ Good
Container
(Docker)
Just the HA core in a Docker container None Experienced Docker users only ⚠ Limited
Core
(Python venv)
Raw Python install in a virtual environment None Developers / advanced users ⚠ Advanced
🏠 Use HAOS if:
You have dedicated hardware for HA (most people)
You want full add-on support out of the box
You want automatic OS updates and official backups
You're new to HA — start here, never regret it
🐳 Use Supervised if:
You need other services running on the same machine
You're on Debian and want to keep your existing setup
You still want full add-on support (unlike Container)
You're comfortable managing a Linux OS yourself
📝
Notes From the Field

I ran HA Container for six months before switching to HAOS. The moment I wanted to add the Zigbee2MQTT add-on, I hit a wall — Container doesn't support the Supervisor or add-on ecosystem at all. I had to migrate my entire config. Start on HAOS and you never have to make that call later.

Recommended: Flash HAOS to a Dedicated Machine

For most people — especially if you have a spare Raspberry Pi, Intel NUC, or old mini PC — HAOS is the correct choice. It gives you full add-on support, automatic OS updates, and the official snapshot backup system.

⚠️
Critical: BIOS Power Setting

Before you walk away — go into your machine's BIOS and set Power Restore Behavior to "Always On" (sometimes called "Restore AC Power Loss"). Without this, a single power blip takes your entire smart home offline and keeps it there until you physically press the power button.

Thing 01

Set Your Location,
Timezone & Units

This sounds trivial. It isn't. Half of all "my automation fires at the wrong time" complaints trace back to this step being skipped or set incorrectly during onboarding.

Home Assistant uses your location for two things that power a massive chunk of useful automations: sun position (sunrise/sunset triggers) and time zone (time-based conditions). If either is wrong, your "turn on the porch light at sunset" automation fires in a different time zone, or at the wrong time because HA is using UTC internally.

Where to Set It

Settings → System → General → Home location. You'll see a map. Drop the pin to your actual address — not a city center. HA uses this pin to calculate precise local sunrise/sunset times.

🌍 Location Required

Set to your actual home address. HA uses this for sun calculations, weather integrations, and zone automations like "when I get home."

🕐 Time Zone Critical

Set this even if HA seems to detect it. Confirm it matches your local time. All automation triggers, logs, and history are stamped with this zone.

📏 Unit System Personal

US Customary vs Metric. Set this before adding temperature sensors — changing it later means all your historical data logs with mixed units.

💱 Currency Optional

Used by the Energy dashboard if you track electricity costs. Set it now so the energy panel shows correct cost-per-kWh math from the start.

💡
Pro Tip — Use sun.sun Triggers

Once your location is set correctly, sun.sun becomes one of your most reliable automation triggers. "Turn on outdoor lights 30 minutes before sunset" will work perfectly and automatically adjusts every day of the year without any maintenance.

✦ Section Validation
✅ Success Looks Like

The HA overview shows your local time correctly. Sunrise/sunset times in Developer Tools → States for sun.sun match your actual local times.

⚠ Failure Signs

Automations trigger at the wrong time. Sun-based triggers are off by hours. HA logs show UTC times while your clock shows something different.

🔍 2-Min Validation

Developer Tools → States → search sun.sun. Check next_rising and next_setting — they should match today's actual sunrise/sunset for your city.

Thing 02

Set Up Backups
Before You Do Anything Else

Seriously — this is Thing 02 because it should happen before you add a single integration. HA's built-in backup system is excellent, but it only helps if you set it up before you need it.

Home Assistant OS has a first-party backup system that creates complete snapshots of your entire installation — config files, integrations, automations, add-ons, dashboards, everything. The default configuration stores backups locally on the HA machine. That's a single point of failure. You need at least one copy elsewhere.

The Two-Step Backup Setup

💾Google Drive Backup Add-onEasiest

Install from the Add-on Store. Authenticates with your Google account. Copies every backup automatically to Drive. Free up to 15GB — more than enough for years of HA backups.

🗂️NAS / Network ShareBest for Homelab

If you already have a NAS or another server on your network, add it as an SMB network location. Backups write there directly without cloud dependency.

📝
Notes From the Field

I learned this the hard way. I had weeks of integration config, Zigbee device pairings, and dashboard layouts in HA when my SD card on a Pi died. No backup. I had to re-pair every single Zigbee device from scratch — that alone took a full Saturday. Backups with Google Drive took 10 minutes to set up. That SD card failure would have been a non-event if I'd done this on Day 1.

How to Restore From a Backup

Settings → System → Backups → pick your snapshot → Restore. For a full disaster recovery on a fresh install: complete the onboarding wizard (just click through), then immediately go to Backups and restore your snapshot before configuring anything else.

✦ Section Validation
✅ Success Looks Like

At least one backup exists in Settings → Backups. A second copy lives somewhere other than the HA machine itself. Auto-backup schedule is active.

⚠ Failure Signs

Only local backups exist. Google Drive add-on installed but not authenticated. No backup schedule set — only a manual snapshot.

🔍 2-Min Validation

Settings → System → Backups → confirm at least 1 backup exists. If using Google Drive add-on, open it → check the last sync timestamp is recent. Try a manual restore flow on a test backup.

↩ Rollback If a backup fails or is corrupt: Settings → Backups → select a different snapshot → Restore. For a full disaster recovery on fresh hardware: complete onboarding, then immediately restore your most recent snapshot before touching any settings.
System View

How Your HA System
Fits Together

Before building anything, understand the shape of your system. This is what you're creating — and why each step in this guide matters.

Home Assistant Architecture — Simplified
CLOUD Internet / Remote Access NETWORK Router · DHCP · Fixed IPs 🏠 Home Assistant the hub — everything connects through here 💡 🌡️ 🔒 📷 Local Devices Zigbee · Z-Wave · Wi-Fi 📱 Your Phone Companion App · local + remote remote
Key idea: Home Assistant sits in the middle. Devices talk to it locally over your home network — nothing needs to go out to the internet to control a light. Your phone connects directly when you're home, and through a secure tunnel (Cloudflare or Nabu Casa) when you're away. No open ports. No cloud dependency for local control.
Thing 03

Add Your Integrations
Selectively

HA supports 3,000+ integrations. The instinct is to add everything you own immediately. Resist it. Add these on Day 1, then slow down and be deliberate about everything else.

Zigbee vs. Wi-Fi — Pick One Protocol First

⚡ Use Zigbee if:
You want local control with no cloud dependency
You're buying new devices (better long-term investment)
You have 5+ devices to add
You want the lowest latency automations
📶 Use Wi-Fi if:
You already own Wi-Fi smart devices
You want plug-and-play without a USB dongle
You have a smaller number of devices (<10)
Your router handles IoT devices reliably

Day 1 Integrations — Add These First

📱
Home Assistant Companion App Day 1
Install on every phone in the house. Enables presence detection, location zones, and mobile push notifications. Also your remote control when away from home.
☀️
Weather Integration
Open-Meteo (free, no API key) or AccuWeather. Powers weather alert automations, condition-based triggers, and the weather card on dashboards.
🔗
Zigbee (ZHA or Z2M)
If you have any Zigbee devices, pick one protocol and commit. ZHA is built in and simpler. Zigbee2MQTT gives more device support. Don't run both.
📡
MQTT Broker (Mosquitto)
Install Mosquitto from the Add-on Store, then add the MQTT integration. Powers Zigbee2MQTT, ESP devices, and dozens of other integrations.
🌐
Local Network Devices
HA auto-discovers routers, NAS devices, smart TVs on your network. Accept what's useful, dismiss what isn't. Disable cloud polling integrations when a local option exists.
Energy Dashboard
If you have smart plugs or a whole-home energy monitor, connect it immediately. Historical data starts accumulating from the moment you enable it — you can't backfill.
⚠️
What to Avoid Early On

Don't add cloud-dependent integrations (SmartThings, Google Home, Alexa) until you understand your local setup. They add polling overhead, can cause HA to slow down if their cloud APIs are flaky, and often duplicate entities you already have from local integrations. Add them later, intentionally.

✦ Section Validation
✅ Success Looks Like

Companion App shows phone as a device in Settings → Devices. Weather entity is populated with current conditions. No integrations showing yellow warning badges.

⚠ Failure Signs

Companion App device_tracker shows "unavailable." More than 5 integrations added on Day 1. Any integration showing a persistent auth or connection error.

🔍 2-Min Validation

Settings → Devices & Services — count your integrations. If more than 5, stop and evaluate. Developer Tools → States → search your phone name — confirm device_tracker shows "home."

Thing 04

Assign Static IPs to
Every Device You Care About

This is infrastructure work, not HA work — but it's the most common reason automations mysteriously break weeks after you build them.

Home Assistant references devices by IP address in many integrations. When your router's DHCP lease expires and reassigns addresses, the device at 192.168.1.42 is suddenly at 192.168.1.87 — and HA loses it silently. No error. Automation just stops working.

Do This at the Router Level, Not the Device

Every router has a DHCP reservation feature — it permanently assigns a specific IP to a specific device's MAC address. This is better than setting a static IP on the device itself because the router's DHCP server still manages the address, and it works even if you reflash or reinstall the device.

📌What Gets a Reserved IP

Home Assistant server itself · All Zigbee/Z-Wave coordinators · Smart TVs and media players · IP cameras · Any device with an HA integration · Your NAS or server

🔄What Doesn't Need One

Phones and laptops (HA uses the Companion App, not IP) · Guest devices · Devices with no HA integration · Battery-powered sensors on Zigbee/Z-Wave (no IP at all)

Building a Device Registry

Once you're assigning IPs, make a simple reference list. A text file, a spreadsheet, a note — anything. Recording the device name, MAC address, assigned IP, and what it does takes 2 minutes per device and saves hours of debugging later.

device_registry.txt # Home Lab Device Registry
192.168.68.60 netmon # Main server (Intel NUC)
192.168.68.65 ha-nuc # Home Assistant server
192.168.68.71 printer # HP LaserJet M452dw
192.168.68.57 mycloud-nas # WD MyCloud NAS
192.168.68.52 firestick-lr# Living Room FireStick
📝
Notes From the Field

I use a naming convention of 192.168.68.x for everything. All my cameras are in the 50s, servers in the 60s, IoT devices in the 70-90s. When I look at a log entry or a ping, I know immediately what category of device it is. Takes 20 minutes to plan upfront and saves a lot of "wait which device is that?" moments later.

✦ Section Validation
✅ Success Looks Like

HA server has the same IP after a reboot. Your router's DHCP reservation list includes at least HA + any devices with integrations. You have a reference list of reserved IPs.

⚠ Failure Signs

HA server IP changed after a router restart. Devices show "unavailable" in HA after a network event. You're not sure what IP your HA server is on right now.

🔍 2-Min Validation

Log into your router's DHCP reservation page and confirm HA's MAC address is listed with a fixed IP. Ping that IP from another device. Reboot HA and verify it comes back on the same address.

Thing 05

Name Your Entities
Before You Build Anything

Entity names are the bones of your HA setup. Renaming them after you've built automations and dashboards is tedious — HA doesn't cascade-rename entity IDs. Do this once, do it right.

When HA creates an entity, it generates an entity ID from the name. light.living_room_lamp_3 happens automatically if you don't intervene. If you rename the entity later, the entity ID stays the same — and now you have a lamp called "Living Room Lamp" with ID light.living_room_lamp_3 forever.

A Convention That Works

[room] _ [device_type] _ [qualifier] light.living_room_lamp_east
Naming Cheat Card — Good vs. Bad
✅ GOOD ❌ AVOID light.living_room_overhead light.0x00158d001a23f4b switch.kitchen_coffee_maker switch.smartplug_1_2 sensor.bedroom_temperature sensor.temperature_1 binary_sensor.front_door_contact binary_sensor.aqara_d1 media_player.living_room_tv media_player.samsung_tv_2 ✓ room first · device type · qualifier if needed · lowercase · underscores ✗ MAC addresses · brand names · auto-numbers · abbreviations

Where to Rename Entities

Settings → Devices & Services → Entities. Search for any entity, click the gear icon, and set both the Display Name and the Entity ID. Do this before you reference the entity anywhere.

💡
Use Areas from Day 1

Settings → Areas, Zones, & Labels. Create a room for every room in your house before adding devices. When you add a device, assign it to an area immediately. This enables area-based voice commands ("turn off the bedroom"), and keeps your dashboard organized as your device count grows.

✦ Section Validation
✅ Success Looks Like

Every entity ID follows your chosen pattern. No entities named with MAC addresses, auto-incremented numbers, or default integration names. All devices assigned to an area.

⚠ Failure Signs

Entity IDs like light.0x00158d001 or switch.smartplug_1_2. Multiple devices assigned to "No area." Friendly name and entity ID don't match your convention.

🔍 2-Min Validation

Settings → Devices & Services → Entities. Sort by entity ID. Scan for anything that doesn't match your naming pattern — fix it now before it gets referenced anywhere.

Thing 06

Build a Simple Dashboard
First

The default "Overview" dashboard HA auto-generates is fine for testing. Build your own before you get attached to it, using principles that won't make you rebuild it in three months.

The One Rule That Saves You Later

Never put individual entity cards directly on your main dashboard. Group everything by room, then put rooms on the dashboard. When you add a 20th light to a room, you update one card. Not twenty.

Recommended First Dashboard Layout
🏠 📊 ⚙️ 🔔 Main Upstairs Outside ✏ Edit STATUS ☀ 68°F Clear 👤 2 home 🔒 Locked ⚡ 1.2 kW Living Room 💡 📺 🌡️ 3 lights · 1 TV · temp ● 2 lights on Kitchen 💡 🚿 2 lights · coffee · leak ● all off Office 💡 🖥️ 👤 2 lights · PC · presence ● occupied Entry 🔒 💡 📷 lock · porch · camera ● locked · secure Energy Today 4.2 kWh ↓ 12% vs yesterday History graph card Presence ● Juan — Home ● Kerri — Home ○ Noah — Away Automations ✓ Sunset lights — 18:42 ✓ Morning — 07:00 ○ Away mode — idle Logbook card
🏠One View Per Floor

Main, Upstairs, Basement. Each view is a tab. Start here before getting more granular.

🃏Cards by Room

One "Room Card" (entities card) per room per view. Lights, switches, sensors all in one card per room.

📊Status Bar at Top

A glanceable strip: outside temp, alarm status, presence (who's home), and one important sensor.

Useful Cards to Know About

📝
Notes From the Field

My first dashboard had 47 individual entity cards. It took 30 seconds to scroll through. I rebuilt it with 8 room cards and a 4-entity status strip at the top, and that's been stable for over a year with no major changes despite adding dozens of new devices. Simple structure scales. Complex structure explodes.

✦ Section Validation
✅ Success Looks Like

Your custom dashboard is the default view. It loads in under 2 seconds. You can control any light or switch without scrolling more than one screen. It looks usable on mobile.

⚠ Failure Signs

Still using the auto-generated "Overview" dashboard. More than 12 cards on a single view. Dashboard broken after adding a new device because cards reference individual entities.

🔍 2-Min Validation

Open your dashboard on a phone screen (or shrink your browser window). Can you see and use everything without scrolling excessively? If not — consolidate into room cards first.

Thing 07

Write Your
First 3 Automations

Every house benefits from these three automations on Day 1. They're simple, reliable, and demonstrate every major automation concept you'll build on later.

Automation Anatomy

Every automation has the same three-part structure. Understanding this shape makes every automation easy to read and write.

WHEN trigger sun.sun → sunset time → 07:00 device_tracker → home Required IF condition (optional) time: weekdays only state: light is off person: is home Optional — skip if none THEN action light.turn_on notify.mobile_app script.run_scene Required Example: WHEN sun sets IF (no condition needed) THEN turn on porch lights

Automation 1 — Sunset Lights

Turn on outdoor or porch lights 15 minutes before sunset. Turn them off at a fixed time (or sunrise). This is the "hello world" of HA automations — and it's genuinely useful.

automation.yaml alias: Porch Lights at Sunset
trigger:
  - platform: sun
    event: sunset
    offset: "-00:15:00"
action:
  - service: light.turn_on
    target:
      entity_id: light.porch

Automation 2 — Away Mode

When everyone's phone leaves home, turn off unnecessary lights and lower the thermostat. When anyone returns, restore normal state. Uses the Companion App's device_tracker.

💡
Presence Detection Tip

Use a person entity, not a device_tracker directly. A person entity combines multiple trackers (phone GPS + router + BLE beacon) and is more reliable. Settings → People → edit each person → add tracking sources.

Automation 3 — Morning Routine Trigger

At a fixed weekday time, gradually increase a light's brightness to simulate sunrise, or just turn on the kitchen light when motion is detected in the morning. Use a time condition to prevent it firing on weekends.

time condition example condition:
  - condition: time
    weekday: [mon, tue, wed, thu, fri]
    after: "06:00:00"
    before: "09:00:00"
✦ Section Validation
✅ Success Looks Like

At least one automation has run successfully and is visible in the Logbook. You can see the last triggered timestamp in Settings → Automations for each one you've built.

⚠ Failure Signs

Automation was created but never triggered. "Last triggered" column shows never. Automation is enabled but the entity it controls shows "unavailable."

🔍 2-Min Validation

Settings → Automations → find your sunset automation → press the ▶ Run button manually. Verify the light turns on. Check Logbook — you should see the triggered entry with a timestamp.

Thing 08

Set Up Notifications
That Actually Matter

HA can notify you about almost anything. The skill is restraint. A smart home that cries wolf every 10 minutes is worse than no notifications at all.

Two Notification Channels to Set Up

📱Companion App PushPrimary

Works out of the box once the app is installed. Sends to specific people's phones. Best for presence-aware alerts — "the garage door has been open for 30 minutes while you're away."

🔔ntfyHomelab Favorite

Self-hosted push notification server. Works on any device without a phone app requirement. Good for server health alerts, automation summaries, and non-time-critical status updates.

The Notification Hierarchy — Build This

⚠️
The Notification Trap

New HA installs almost always over-notify. It feels useful — until your phone buzzes 15 times in an hour and you start ignoring everything. Build the habit of categorizing each notification before writing it. If it's not something you'd actually act on at 2am, suppress it or roll it into a daily digest.

✦ Section Validation
✅ Success Looks Like

You can send a test notification from Developer Tools → Services → notify.mobile_app_yourphone and it arrives within 30 seconds. Every planned alert is categorized in your hierarchy.

⚠ Failure Signs

Test notification never arrives. Companion App shows notification permissions as blocked. You're already getting more than 5 notifications per day from HA after day one.

🔍 2-Min Validation

Developer Tools → Services → search notify → select your phone → send "HA test notification" as message → confirm it arrives. If not, check phone notification permissions for the Companion App.

Thing 09 · Decision Aid

Remote Access
Chooser

Before reading Section 09, answer these questions in order. Most people land on one clear answer within 60 seconds.

Decision Tree — Pick Your Remote Access Method
Need remote access to HA? yes Do you already run a homelab or own a domain? no yes Do you want to expose other services too (not just HA)? yes no → Nabu Casa $6.50/mo · 2-min setup supports HA dev team → Cloudflare Tunnel Free · ~30 min setup expose any service · full control → Tailscale (also consider) Free · WireGuard VPN · access full home network either works · choose based on preference ⚠ Never forward port 8123 on your router — regardless of which method you choose
☁️ Nabu Casa
Setup takes under 5 minutes
No domain, no config files, no CLI
Directly funds Home Assistant development
Includes Alexa and Google Home integration
⚠️$6.50/month ongoing cost
⚠️Only exposes HA, not other services
🔐 Cloudflare Tunnel
Free — no monthly cost
Expose any service (Vaultwarden, Immich, etc.)
Cloudflare WAF in front of everything
Custom domain (e.g. ha.yourdomain.net)
⚠️Requires a domain (~$10/year) and 30 min setup
⚠️Slightly more to maintain if Cloudflare changes
Thing 09

Secure Remote Access
Without Opening Ports

You need access to HA when you're away from home. The wrong way is opening port 8123 on your router. Pick one of the two right ways below — then follow the steps.

☁️ Use Nabu Casa if:
You want zero config — done in under 5 minutes
You don't want to manage DNS, domains, or certificates
You want to support the HA development team ($6.50/mo)
You only need to expose HA, not other services
🔐 Use Cloudflare Tunnel if:
You want full control at no monthly cost (free)
You already manage a domain or run a homelab
You want to expose other services too (Vaultwarden, etc.)
You're comfortable with a 30-minute one-time setup
⚠️
Never do this

Do not forward port 8123 on your router. Your HA is then directly reachable from the open internet with nothing in front of it. Both Nabu Casa and Cloudflare Tunnel avoid this entirely — that's the point.

Cloudflare Tunnel in 3 Steps

📖
Vol. 1 Goes Deeper — Cloudflare Tunnels

The Bench Notes Home Lab Playbook covers Cloudflare Tunnel setup end-to-end, including running multiple services (not just HA) behind a single tunnel, Cloudflare Access for authentication, and DNS configuration. If you're also running a homelab server, Vol. 1 covers this as part of your full remote access architecture.

No browser certificate warnings. The Companion App connects remotely without being on your home network.

⚠ Failure Signs

HA only loads on home Wi-Fi. Cloudflare tunnel shows as "inactive" in Zero Trust dashboard. Certificate error or HTTP (not HTTPS) in browser when accessing remotely.

🔍 2-Min Validation

Turn off Wi-Fi on your phone. Open your HA URL in mobile browser. It should load with HTTPS and no warnings. Then open the Companion App — it should connect and show your dashboard.

↩ Rollback If Cloudflare Tunnel breaks remote access: you can still reach HA on your home network at its local IP. Go to Cloudflare Zero Trust → delete the broken tunnel → recreate it from scratch (takes 10 minutes). Your HA config is not affected — the tunnel is external infrastructure only.
Thing 10

Enable Automatic Updates
Carefully

HA releases updates every month. Add-ons release even more frequently. Not everything should auto-update — but some things absolutely should.

Auto-Update These

Add-ons (Mosquitto, MariaDB, Samba, etc.) — minor updates rarely break things and security patches matter. HACS integrations — most are safe on auto. OS updates — Watchtower handles this if you run containerized services alongside HA.

⏸️Update Manually — With a Backup First

Home Assistant Core — take a snapshot, read the release notes, then update. Minor versions (2025.x.y → 2025.x.z) are usually safe. Major version jumps occasionally have breaking changes. Zigbee2MQTT — read the changelog first.

The Safe Update Ritual

📝
Notes From the Field

HA 2024.x had a breaking change in how entity categories work that silently broke three of my automations — they still ran, but the wrong entities were targeted. Reading the release notes took 5 minutes. Finding the bug took 2 hours. I now skim the breaking changes every update before applying. Also: do not update the night before a vacation.

✦ Section Validation
✅ Success Looks Like

You have a clear policy: which add-ons auto-update, which require manual review. A backup exists that was taken within the last 24 hours. You know where the release notes live.

⚠ Failure Signs

Everything set to auto-update including HA Core. No backup taken before the last update. You've applied an update and something broke but you can't roll back.

🔍 2-Min Validation

Settings → Add-ons → confirm auto-update is only enabled on safe ones. Settings → System → Backups — confirm a recent backup exists. Bookmark home-assistant.io/blog for release notes.

↩ Rollback If a HA Core update breaks something: Settings → Backups → restore the snapshot you took immediately before the update. This reverts HA Core, your config, and all add-ons to the pre-update state. Takes about 3 minutes. This is the single most important reason to take a manual backup before every Core update.
📝 Experiential

Notes From
the Field

What a power outage, three hardware failures, and two years of automation debugging taught me about setting up Home Assistant right the first time.

The Power Outage That Changed How I Set Up Every Server

My first Intel NUC was running HA perfectly for weeks. Then a brief power blip — probably 3 seconds — took the whole setup down. Not because anything broke. Because the BIOS "Power Restore" setting was on "Last State," which meant a machine that was on when power was cut would stay off when it came back. I came home to a dark house and zero automations running. The fix took 2 minutes in BIOS. The lesson cost me an afternoon.

🔄
Automations That "Restore" State Are Tricky

I built a weather alert automation that flashed lights red, then "restored the previous state" when the alert ended. What actually happened: if HA restarted during the alert, it lost the "previous state" context entirely and left every light stuck in whatever state it was in at restart. The fix was storing pre-alert state in an input_boolean before the alert fires, and restoring from that. Restore-on-restart logic needs a persistent anchor, not just runtime memory.

📱
Presence Detection Is Harder Than It Looks

Phone GPS alone is unreliable. My "everyone is home" trigger would sometimes not fire for 10 minutes after arriving because iOS aggressively batches location updates. I ended up with a three-source presence detection setup: phone GPS (primary), router-based detection (faster, local), and BLE beacon (instant, passive). Combining all three into a single person entity through HA gives you sub-30-second detection that's still reliable when one source goes quiet.

🏷️
Entity Naming Regret Is Real

I have an entity still called light.0x00158d0001a23f from a Zigbee bulb I added in year one. That's its MAC address, which HA used as the default name because I didn't intervene. It's referenced in 4 automations. Renaming the entity doesn't change the ID, and changing the ID means updating every automation by hand. It's not catastrophic — but every time I look at that automation YAML I regret the 10 seconds I didn't spend naming it properly. Ten seconds. That's what it costs to do it right.

You're Set Up. What's Next?
Bench Notes · Home Lab Series · Vol. 2
10 Things to Do First
in Home Assistant
Setup queues · validation blocks · visual diagrams · real-world field notes. The guide that replaces two hours of forum-searching.
$9
FREE
No strings attached
📬
Get early access to the Automation Pack
The next Bench Notes release is a copy-paste YAML automation library — 10+ real automations with diagrams and field notes. Subscribers get it first at a lower price.
→ benchnotes.net/subscribe
Coming Soon
Automation Pack
Vol. 3 · $12–$19
10+ copy-paste YAML automations from a real setup. Each with an anatomy diagram and field notes on why it's built the way it is.
🟡 Presence-aware lighting
🟡 Power outage recovery
🟡 Night mode · away mode
🟡 Alert filtering · energy tracking
Available Now
📓
Home Lab Playbook
Vol. 1 · $21.99 on Etsy
Ready to build a full homelab alongside HA? Docker, SSH, Cloudflare Tunnels, Vaultwarden, AdGuard, Immich — from a real two-server setup.
🟣 70+ pages · real configs
🟣 SSH, tunnels, containers
🟣 Self-hosted services A–Z
🟣 Built from a real setup, not a demo
📓
Bench Notes
Built from a real setup, not a demo.
benchnotes.net · HomeLabGuides on Etsy
Appendix A

Debug
Queue

The most common HA problems, each with a specific diagnostic path. When something stops working, start here before asking in forums.

🔴 Automation didn't fire Most Common
1Settings → Automations → confirm the automation is enabled (toggle is on) 2Check "Last triggered" — if it shows a time, it ran. Check what it did in Logbook. 3Press ▶ Run manually — if it works manually but not on trigger, the trigger condition is wrong 4Check trigger entity state in Developer Tools → States. Is it in the state the trigger expects? 5Check conditions — a condition blocking the action is the #1 silent failure mode
🟡 Entity shows "unavailable" Common
1Check if the physical device is powered on and connected to your network 2For IP-based devices: ping the device's IP from another machine. If no response, the IP may have changed 3For Zigbee: check ZHA or Z2M — is the device listed as reachable? Try pressing the device's button to wake it 4Settings → Devices & Services → find the integration → check for error badges or "Failed" status 5Restart the integration (not all of HA) — three-dot menu → Reload
📡 Device changed IP — integration broke
1Go to your router and find the device's current IP in the DHCP lease table 2Add a DHCP reservation for that MAC address so it doesn't change again 3Settings → Devices & Services → find the integration → Configure → update the IP address 4If the integration doesn't allow reconfiguration, delete it and re-add with the new/fixed IP
Appendix A (continued)

Debug Queue
continued

📱 Mobile notification didn't arrive
1Developer Tools → Services → notify.mobile_app_yourphone → send a manual test notification first 2If manual test fails: open Companion App on phone → check Settings → Notifications → confirm enabled 3Check phone OS settings — iOS and Android both have per-app notification permissions that override HA 4If manual works but automation doesn't: add a Logbook card to your debug dashboard and check if the automation ran at all 5Check the notify service name exactly — entity names are case-sensitive and device name changes break the service name
🖥️ Dashboard card not updating
1Hard refresh the browser (Ctrl+Shift+R / Cmd+Shift+R) — cached JS is the most common cause 2Check the entity in Developer Tools → States. Is the state actually changing there? If not, it's a device/integration issue, not a dashboard issue 3If state is updating in Dev Tools but not the card, the card configuration may reference the wrong entity ID 4For custom HACS cards: check the card's GitHub repo for known issues with the current HA version
🔑 Remote access stopped working
1For Cloudflare Tunnel: log into Cloudflare Zero Trust → Networks → Tunnels → confirm tunnel shows as "Healthy" 2On your server: systemctl status cloudflared — confirm service is running, check for errors 3For Nabu Casa: Settings → Home Assistant Cloud → check subscription status and connection indicator 4Try accessing from a browser (not the app) first — this isolates whether it's a Companion App config issue 5Check configuration.yaml — the homeassistant.external_url must match your tunnel's public hostname exactly
💥 HA won't start after an update Critical
1Check the HA release notes for breaking changes — search for your integration names and configuration keywords 2On HAOS: boot into Safe Mode (hold Shift on restart prompt) — loads HA with custom integrations disabled 3If Safe Mode loads: a custom integration is the culprit. Disable HACS integrations one at a time to identify it 4Check home-assistant.log — the first ERROR line is almost always the root cause 5If all else fails: restore your pre-update backup from Settings → Backups. This is why you take a backup before every Core update.