Installing and Using Home Assistant on Raspberry Pi (Docker & Supervised)

Summary: This guide will help you install Home Assistant on a Raspberry Pi (e.g., Pi 5 or 4) and get started with smart home automation. We’ll cover what hardware you need, how to install Home Assistant using Docker (Home Assistant Container) or Home Assistant Supervised (on top of a Linux OS), initial setup of the interface, adding devices (Zigbee, Z-Wave, Wi-Fi), creating basic automations, and tips for maintenance. The focus is on commonly used methods (Docker and Supervised) rather than Home Assistant OS, so you can run Home Assistant alongside other software. Each section is beginner-friendly with step-by-step instructions, clear headings, and example commands. Let’s get started!

1. Prerequisites

Before installing Home Assistant on your Raspberry Pi, ensure you have the following:

  • Raspberry Pi model – A Raspberry Pi 5 (4GB+ RAM recommended) is ideal for best performance. You can also use a Raspberry Pi 3 Model B/B+ as a minimum (1GB RAM) for a basic setup, though performance may be limited with many devices or add-ons. (Newer models like Pi 5 also work.)
  • MicroSD Card – A high-quality microSD card (at least 32 GB, Class 10/A2) for installing the operating system and Home Assistant. An A2-rated card is recommended for better performance on random read/writes (important for database and logs).
  • Power supply – A reliable 5V power supply for your Pi (for Pi 4, a USB-C 5V 3A official power adapter is recommended). Do not use a cheap phone charger or a PC’s USB port, as they may not provide stable power. In Australia, use a power supply with the proper AU plug and sufficient amperage. Inadequate power can cause instability (random reboots or SD card corruption).
  • Network – An Ethernet cable and network connection. It’s highly recommended to wire your Pi to your router via Ethernet for initial installation and reliable connectivity. (You can switch to Wi-Fi later if needed, but Ethernet avoids potential Wi-Fi setup issues during install.)
  • Peripheral for setup – If you’re installing the OS manually, you may need a way to interact with the Pi: either a monitor and keyboard (plus micro-HDMI to full-size HDMI for Pi 5/4) or configure SSH for headless setup. Many users enable SSH to set up the Pi without a monitor.
  • OS for the Pi – We assume you have a 64-bit Linux OS running on the Pi’s SD card. For the Docker method, Raspberry Pi OS (64-bit) or another Pi-compatible Linux is fine (make sure it’s updated). For the Supervised method, it’s strongly recommended to use Debian Linux 11 or 12 (64-bit) for official support. (Raspberry Pi OS is a Debian derivative and can work, but it’s not “officially supported” for Supervised installs.)
  • (Optional hardware:) If you plan to use Zigbee or Z-Wave devices, consider purchasing a Zigbee USB coordinator or Z-Wave USB stick (explained in the Connecting Devices section). These allow your Pi to communicate with Zigbee/Z-Wave sensors, lights, etc. Make sure any Z-Wave stick is the correct frequency for your region (Australia uses 921.4 MHz for Z-Wave). Also, a case and heatsinks/fan for the Pi 4 can help with cooling, especially if running 24/7.

With these prerequisites met, proceed to install Home Assistant on your Pi using one of the methods below.

2. Installation Methods

Home Assistant can be installed on a Raspberry Pi in multiple ways. In this guide, we focus on two popular methods for DIY setups that let you run Home Assistant alongside other software:

  • Home Assistant Container (Docker) – Runs Home Assistant Core in a Docker container on your existing OS. This is relatively simple and keeps your Pi’s OS free for other uses. Note: This method does not include the Home Assistant Supervisor or add-ons (one-click install extensions). It’s essentially just Home Assistant itself in a container.
  • Home Assistant Supervised – Installs Home Assistant Core plus the Supervisor on a generic Linux (Debian) system. This gives you the full Home Assistant experience (with the Supervisor UI, add-on store, backups, etc.) on your own OS. It’s more involved to set up and has stricter requirements (Debian OS), but very powerful.

Which should you choose? If you’re a beginner and okay with a dedicated setup, you might normally use Home Assistant OS. But since we’re focusing on Docker/Supervised:

  • Choose Docker if you want a quick install and are comfortable managing a few Docker commands (or already use the Pi for other services). It’s a bit more “hands-on” to manage updates and lacks add-ons, but is straightforward and flexible.
  • Choose Supervised if you want the ease of Home Assistant’s supervised features (web UI control of updates, add-ons like Node-RED, etc.) but still run on RPi OS/Debian. It requires more initial setup (and is considered an advanced install by Home Assistant devs), but afterwards you can manage Home Assistant almost entirely via its web interface like a Home Assistant OS install.

Below are step-by-step instructions for each method. Follow either the Docker method or the Supervised method.

A. Installing Home Assistant via Docker (Home Assistant Container)

This method will set up Home Assistant in a Docker container on your Raspberry Pi. We assume you have Raspberry Pi OS (or another Linux) running on the Pi. If not, install an OS on your SD card first (for Raspberry Pi OS, you can use the Raspberry Pi Imager tool to flash it). Once your Pi is up and you can access its terminal (either locally or via SSH), proceed with these steps:

  1. Install Docker Engine: If Docker is not already installed on your Pi, install it by running the official convenience script in a terminal. This command will download and set up Docker CE on your system:

    curl -fsSL get.docker.com | sh
    

    This one-liner fetches Docker’s install script and executes it. After a few minutes, Docker should be installed. You might need to log out and back in (or add your user to the docker group) to run Docker without sudo. (The script usually does this for the default pi user, but if not, use sudo usermod -aG docker $USER and then re-login.)

  2. Prepare a Home Assistant configuration directory: Choose a location on your Pi’s filesystem to store Home Assistant configuration files (this will hold the configuration.yaml and all data). For example, you could use /home/pi/homeassistant or /opt/homeassistant (it can be any path). Create that directory: mkdir /home/pi/homeassistant (adjust path as desired). This path will be mapped into the Docker container.

  3. Run the Home Assistant container: Use Docker to download and run the Home Assistant image. You can do this with a single docker run command. An example is given below – replace the placeholders with your details:

    docker run -d \
      --name homeassistant \
      --privileged \
      --restart=unless-stopped \
      -e TZ=Australia/Sydney \
      -v /home/pi/homeassistant:/config \
      -v /run/dbus:/run/dbus:ro \
      --network=host \
      ghcr.io/home-assistant/home-assistant:stable
    

    Let’s break down this command:

    • --name homeassistant gives the container a friendly name.
    • --privileged and the -v /run/dbus:/run/dbus:ro mount are needed to allow Home Assistant to access certain host services (like D-Bus for Bluetooth support).
    • --restart=unless-stopped ensures Home Assistant container starts on boot or if it crashes.
    • -e TZ=Australia/Sydney sets your time zone (adjust MY_TIME_ZONE to your local TZ, e.g., Australia/Perth or UTC if you prefer). This is important for correct time in logs and automations.
    • -v /home/pi/homeassistant:/config mounts the config directory you created (on the left) into the container’s /config path. Home Assistant will store all its configuration and data here on the host. Make sure to keep the :/config part and only change the host path before it.
    • --network=host puts the container on the host’s network. This means Home Assistant will use ports directly on the Pi. It simplifies connectivity (no need to map port 8123, and allows discovery of devices). The container will listen on port 8123 (and others if needed) on the Pi’s IP.
    • Finally, the image ghcr.io/home-assistant/home-assistant:stable is the official Home Assistant image (stable latest release).

    Once you run this command, Docker will download the Home Assistant image (if not already downloaded) and start the container. The first startup can take a few minutes, especially on a Raspberry Pi, because Home Assistant may need to complete initial setup. Give it some time – you can monitor docker logs -f homeassistant to see progress, or just periodically try connecting to it (next step).

    Tip: Alternatively, you can use Docker Compose to define the container in a YAML file and run it. This can make managing and updating easier. For example, your docker-compose.yml could define a homeassistant service with the same settings (volume mounts, network mode, image, etc.). Then you’d run docker compose up -d. Both methods achieve the same result; choose the one you’re comfortable with.

  4. Access Home Assistant Web Interface: Once the container is running, you should be able to access the Home Assistant UI from a web browser on your network. By default, Home Assistant’s web interface is at http://<your-pi-ip>:8123 (replace <your-pi-ip> with the Pi’s IP address or hostname). For example, if your Pi is at 192.168.1.50, go to http://192.168.1.50:8123. You may also try http://homeassistant.local:8123 or http://raspberrypi.local:8123 if your network supports mDNS (this works if your Pi’s hostname is homeassistant or raspberrypi).

    The first time you connect, you should see a “Preparing Home Assistant” screen – it might say it’s installing or preparing, which can take a bit of time (downloading updates, etc.). Once that finishes, you’ll get the Home Assistant onboarding screen where you can create your account. (If you can’t connect at all, double-check that the container is running with docker ps and that your Pi is on the network. Also ensure no firewall is blocking port 8123.)

    From here, you can skip to Section 3: Initial Configuration to complete the setup. The remaining steps in this section are about updating/maintenance for Docker users.

  5. Updating Home Assistant (Docker): When a new Home Assistant version comes out, you won’t get an automatic update in this Docker setup – you need to update the container manually. This usually means pulling the new image and re-creating the container. For example, to update:

    docker pull ghcr.io/home-assistant/home-assistant:stable  # download latest image
    docker stop homeassistant                                 # stop the running container
    docker rm homeassistant                                   # remove the container
    docker run -d --name homeassistant ... ghcr.io/home-assistant/home-assistant:stable  # re-run as before
    

    (Replace the docker run part with your original run command, including all the parameters like -v mounts, TZ, etc.) Home Assistant’s documentation suggests this general sequence. If using Docker Compose, you can do docker compose pull then docker compose up -d to recreate with the new image. Your config is stored on the host, so updating the container will not erase your settings. We’ll cover best practices for updates in Section 6: Maintenance and Updates as well.

That’s it for the Docker method. You now have Home Assistant running in a container on your Raspberry Pi! 🎉 Proceed to Initial Configuration (Section 3) to finish the setup and start using Home Assistant.

B. Installing Home Assistant Supervised (with Supervisor) on Raspberry Pi

This method installs Home Assistant Supervised on top of a Debian-based Linux OS. You’ll get the Home Assistant Core, plus the Supervisor service that manages Home Assistant and add-ons. Essentially, it’s like running Home Assistant OS, but manually installed on a standard OS. Note: To have a supported supervised installation, you must use Debian Linux (Debian 11 “Bullseye” or Debian 12 “Bookworm”). The official installer will warn or mark the system as “unsupported” if you use other distros (like Raspberry Pi OS). Many users do run it on Raspberry Pi OS successfully (with the risk of limited official support). For the sake of this guide, we’ll assume a Debian-based OS on the Pi.

Preparation: Install a fresh Debian-based OS on your Raspberry Pi (64-bit version). If you prefer Raspberry Pi OS, use the Lite (minimal) 64-bit edition for fewer conflicts. Ensure the system is updated: sudo apt update && sudo apt upgrade -y. It’s best to perform all the following steps on the Pi itself (via SSH or a local console) with an account that has sudo privileges.

Once your base OS is ready, follow these steps:

  1. Install dependencies: Home Assistant Supervised requires certain system packages to be present. Run the following command to install all necessary dependencies in one go:

    sudo apt install \
      apparmor bluez cifs-utils curl dbus jq network-manager \
      libglib2.0-bin lsb-release nfs-common systemd-journal-remote \
      systemd-resolved udisks2 wget -y
    

    This will install Network Manager, Docker prerequisites and other tools that Home Assistant needs. Network Manager is required because the Supervisor expects to manage network connections via it. Important: If your Pi was using /etc/network/interfaces, you may need to migrate to NetworkManager (the installer output may prompt you) – on a fresh install this is usually not an issue. After installing these, it’s a good idea to reboot the Pi to ensure NetworkManager is running and doesn’t drop your SSH connection. (Also, make sure you’re using Ethernet for this process, as the network may reset when NetworkManager takes over.)

  2. Install Docker: If Docker is not already installed on this system, install it next. Use the official script as in the Docker method:

    curl -fsSL get.docker.com | sh
    

    This will install Docker CE on Debian. (If you prefer, you can manually install Docker via apt, but the script is quick and reliable.) After installation, ensure Docker is running (sudo systemctl status docker).

  3. Install Home Assistant OS Agent: The OS Agent is a small helper service that allows Home Assistant Supervisor to communicate with the host operating system for things like hardware info, updates, and add-on services. It’s required for a healthy supervised install. To install it:

    • Download the OS Agent .deb package from Home Assistant’s GitHub. The latest version can be found on the OS Agent releases page. Choose the file that matches your Pi’s architecture (e.g., os-agent_<version>_linux_aarch64.deb for 64-bit ARM). For example, on the Pi you can run:
      wget https://github.com/home-assistant/os-agent/releases/latest/download/os-agent_1.4.1_linux_aarch64.deb
      
      (Check the latest version number and adjust accordingly.)
    • Then install the package with:
      sudo dpkg -i os-agent_*_linux_aarch64.deb
      

    This will install the haos-agent service. You can verify it’s running with systemctl status haos-agent. (If you installed via Raspberry Pi OS 32-bit, use the armv7 .deb instead of aarch64.)
    Refer to the official instructions if needed.

  4. Install Home Assistant Supervised: Now, with all prerequisites in place, download and install the Home Assistant Supervised installer package. Run the following commands:

    wget -O homeassistant-supervised.deb \
      https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
    
    sudo apt install ./homeassistant-supervised.deb
    

    This will download the latest .deb installer for Home Assistant Supervised and then install it. During installation, you might be asked to confirm the machine type (choose the appropriate Raspberry Pi option if prompted, e.g., raspberrypi4-64 for Pi4 64-bit). The installer will set up the Home Assistant Supervisor service (hassio-supervisor) which in turn pulls the Home Assistant Core docker image and any necessary Supervisor images. This process could take a few minutes as Docker images download.

  5. Verify and First Run: After the installer finishes, it should start the Home Assistant Supervisor and related containers. Give it a couple of minutes and then check if Home Assistant is running. The Supervisor will launch the Home Assistant Core container in the background. You can monitor with sudo journalctl -fu hassio-supervisor to see logs, or docker ps to see running containers.

  6. Access the Home Assistant UI: Just like in the Docker method, once Home Assistant is running, access the web interface at http://<your-pi-ip>:8123 from a browser. On first run, Home Assistant may take a bit of time to initialize (you might see a “Preparing Home Assistant” screen while it finalizes setup). After that, you’ll be greeted by the onboarding wizard in your browser.

From here, the experience is nearly identical to a Home Assistant OS install. You can proceed with creating your account and configuring Home Assistant (see next section). You will also have the Supervisor panel in the interface, allowing you to install add-ons, manage backups, and update Home Assistant via the UI.

Note: The Supervised installer and Supervisor service will mark the installation as unsupported if you didn’t use Debian (for example, Raspberry Pi OS users will see an “unsupported” label in the System info). This just means it’s not officially supported by Home Assistant developers (they only take bug reports for true Debian installs). However, it should function fine. Just be cautious with system updates – major OS changes could break the Supervisor. For the best stability, stick to Debian if possible, or be ready to troubleshoot if using another distro.

Now that Home Assistant is installed (via Docker or Supervised), let’s go through the initial configuration to get your smart home started!

3. Initial Configuration (Onboarding Home Assistant)

Whether you used Docker or Supervised, at this point you should have Home Assistant running on your Raspberry Pi and be looking at the onboarding screen in your web browser. This section will guide you through the first-time setup steps and basic configuration:

  1. Connect to the Web Interface: In a browser on your computer (or phone/tablet), navigate to http://<raspberry-pi-ip>:8123. If you see a “Preparing Home Assistant” message, wait until it completes (it’s downloading/setting up components). Then the Welcome or Onboarding screen will appear.

  2. Create an Admin Account: Click the button to begin a new setup (e.g., “Create my home” or “Create my smart home”). You’ll be prompted to create the Owner account – fill in a Name, Username (lowercase, no spaces), and Password for yourself. This will be the administrator account that can manage all settings. (Example: Name: Alice, Username: alice, Password: (choose a secure password)). Store these credentials in a safe place (there’s no “forgot password” if you lose this account). Once entered, click Create Account.

  3. Set Home Information (Location, Time Zone, Unit System): Next, Home Assistant will ask for your Home Location. You can usually click on the map or input your address to set your GPS coordinates. This will automatically configure your time zone, country, and preferred units (metric/imperial). Verify the details (for example, in Australia it should select the correct timezone like AEST/AEDT and metric units). You can also give your home a name. These settings help Home Assistant know when sun rises/sets at your location, and how to display temperatures, etc. Click Next when done.

  4. Telemetry and Analytics (Optional): Home Assistant will ask if you want to share anonymous usage data or not. By default, nothing is shared. If you’re okay with it, you can enable it (this helps the project, but it’s not required). Choose your preference and proceed.

  5. Finish Onboarding: After that, you should see a message that you’re all set. Home Assistant might automatically discover some devices on your network at this point (for example, it might say it found a Google Cast device, or a smart TV, etc., if any are present). You can address those now or later.

  6. Home Assistant Dashboard: You will land on the main interface, usually the default Overview dashboard which might have a few example entities or any auto-discovered devices. Congratulations – your Home Assistant installation is up and running!

At this stage, it’s a good idea to familiarize yourself with the Home Assistant interface. Key areas to note in the sidebar:

  • Settings: The control center for configurations. Here you’ll find Devices & Services (for adding integrations/devices), Automations & Scenes, Add-ons (if using Supervised), Backups (Supervised), and system info.
  • Developer Tools: Useful for checking logs, states of entities, and testing services – we’ll use it minimally for now.
  • Overview: This is your dashboard where you can add cards to visualize your devices and sensors.

Before adding a bunch of devices, let’s ensure your system is up-to-date (Home Assistant might have already installed the latest version during onboarding, especially for Supervised installs, but if not, you might see an update notification in Settings -> System). With that in mind, let’s proceed to connecting your smart devices.

4. Connecting Devices (Zigbee, Z-Wave, Wi-Fi)

Home Assistant supports an enormous range of smart home devices and protocols. We’ll cover the basics of adding common types of devices:

  • Zigbee devices (e.g., Philips Hue bulbs, motion sensors, smart plugs that use Zigbee).
  • Z-Wave devices (e.g., door/window sensors, smart plugs using Z-Wave).
  • Wi-Fi or LAN devices (e.g., TP-Link Kasa plugs, Lifx or Yeelight bulbs, smart TVs, etc. that connect over Wi-Fi or Ethernet).

Adding devices in Home Assistant is typically done by adding the corresponding Integration. Integrations are like plugins or drivers for each device/platform (Zigbee, Z-Wave, or specific brands). You can manage integrations via Settings > Devices & Services in the UI. Home Assistant may automatically discover some devices on your network and prompt you under the “Discovered” section. Whether discovered or not, you can always manually add an integration by clicking “Add Integration” and searching for it.

Let’s go through each category:

  • Zigbee Devices (via ZHA): Zigbee is a wireless protocol commonly used by bulbs, sensors, etc. To use Zigbee with Home Assistant, you need a Zigbee Coordinator adapter – usually a USB dongle that plugs into your Pi. Examples include the ConBee II, Sonoff Zigbee 3.0 USB Dongle, or the Home Assistant SkyConnect. Plug this dongle into your Raspberry Pi. For best results, use a USB 2.0 port or an extension cable to distance it from the Pi – this avoids interference, as USB 3.0 ports can interfere with Zigbee’s 2.4GHz frequency. If you used the Docker install, remember to give the container access to the USB device. That means restarting your Home Assistant container with an extra parameter, for example: --device /dev/ttyUSB0:/dev/ttyUSB0 (assuming your Zigbee stick is recognized at /dev/ttyUSB0 on the host). The Home Assistant container documentation highlights the need to map in hardware devices for Zigbee or similar integrations to work.

    Once your Zigbee coordinator is connected, Home Assistant might auto-detect it. If not, you can add it manually:

    1. Go to Settings > Devices & Services in Home Assistant.
    2. Click Add Integration (bottom right) and search for “Zigbee Home Automation (ZHA)”. Select it.
    3. Home Assistant will ask to select your Zigbee radio type and port. For common USB sticks, “EZSP” (for Silicon Labs-based sticks like Sonoff) or “deCONZ” (for ConBee) might be used. The UI often auto-fills the serial port (e.g., /dev/ttyUSB0 or /dev/ttyACM0).
    4. Submit, and the ZHA integration will be set up. You’ll get a prompt to start adding devices.
    5. Now you can pair Zigbee devices: put your bulbs or sensors in pairing mode (usually resetting them according to their manual). In Home Assistant, go to Settings > Devices & Services > Integrations > Zigbee Home Automation (configure) and choose “Add Device”. Home Assistant (ZHA) will listen for new Zigbee devices to join. When your device is found, it will appear and you can give it a name and assign it to a room.

    Zigbee devices should now be visible under Settings > Devices and also show up as entities you can use (e.g., a light, a sensor). The ZHA integration is quite user-friendly for managing Zigbee. Remember that Zigbee creates a mesh network – you might need mains-powered Zigbee devices (routers) to extend range if you have many devices spread out.

  • Z-Wave Devices (via Z-Wave JS): Z-Wave is another wireless protocol popular in home automation. It requires a Z-Wave USB stick (controller) to interface with your Pi. Examples: Aeotec Z-Stick Gen5/Gen7, Zooz S2 stick, etc. Important for Australia: Make sure your Z-Wave stick is the Australian frequency model (921.4 MHz). US (908 MHz) or EU (868 MHz) sticks/devices are not compatible or legal to use in Australia. Purchase your Z-Wave hub and devices from Australian suppliers to ensure the correct frequency.

    Plug in the Z-Wave USB stick to your Pi. If you have the Supervised install, Home Assistant should recognize a new Z-Wave device and may show a notification to set up Z-Wave JS. If so, follow the prompts:

    1. Home Assistant will guide you to install the Z-Wave JS add-on and configure it. This add-on runs a Z-Wave JS server that Home Assistant communicates with. (In a Supervised install, it can do this seamlessly; if you are using the Docker method without Supervisor, you can still use Z-Wave by running a separate Z-Wave JS container or using the Z-Wave JS UI standalone, but that’s a bit more advanced setup.)
    2. If not automatically prompted, you can manually add the Z-Wave JS integration: go to Add Integration and search “Z-Wave JS”. During setup, if you have Supervisor, it will offer to install the official Z-Wave JS UI add-on – proceed with that for a beginner-friendly experience.
    3. After setup, you’ll have Z-Wave enabled. Now to add devices, use the Z-Wave JS integration panel or the Z-Wave JS UI add-on. Typically, you put Home Assistant’s Z-Wave integration in “Add Device” (Inclusion) mode, then put your Z-Wave device into inclusion mode (usually a button press sequence). Within a short time, the device should join and appear in Home Assistant.

    The first Z-Wave device might take a moment to appear as the network is initialized. Once added, Z-Wave devices function similarly to other devices in Home Assistant. They will show up under Devices and you can control them or view sensor data. Z-Wave also forms a mesh network (mains devices act as repeaters). If devices are battery-powered, you may need to wake them up manually to configure them initially.

  • Wi-Fi / LAN Devices: Many smart devices communicate over Wi-Fi or wired network and can be integrated directly by Home Assistant without extra hardware. Some common examples:

    • Smart plugs/bulbs from TP-Link (Kasa), Belkin Wemo, LIFX, Yeelight, etc.
    • Smart Speakers or assistants like Google Home, Amazon Echo (limited integration), etc.
    • IP Cameras, Smart TVs, receivers, etc.
    • Cloud-based devices like Tuya SmartLife devices (often sold as Mirabella Genio, Arlec Grid Connect in Australia) which can be integrated via their cloud API.

    Home Assistant usually auto-discovers many of these if they’re on the same network. Check Settings > Devices & Services – you might see items under “Discovered”. For example, “Philips Hue Bridge discovered” or “TP-Link Smart Home discovered”. If so, click Configure next to each to set them up. You might need to enter credentials (for cloud services) or simply confirm.

    If a device isn’t discovered automatically, you can add it manually:

    • Click Add Integration, search for the brand or protocol. For example, to add a Kasa Smart Plug, search and select TP-Link Kasa integration. For Tuya lights, search Tuya (you’ll need to have set up a Tuya IoT account for that).
    • Follow the prompts for that integration. Some require you to log in to a cloud service (e.g., Tuya, Nest), others may just find devices locally (e.g., MQTT, or local control devices).

    The process will vary per integration, but Home Assistant’s docs and the integration UI usually guide you. Once added, the devices appear in Home Assistant. For instance, if you add a TP-Link plug, you’ll see a switch entity you can toggle; adding a Hue Bridge will import all the Hue lights and sensors into Home Assistant.

    Note: Wi-Fi devices must be on the same local network as Home Assistant (unless it’s a cloud integration). Ensure your phone and Home Assistant are on the same subnet when setting up, especially if using mDNS names or discovery. For cloud integrations, internet access is required.

At this point, you should have some of your devices connected to Home Assistant. You can view them under Settings > Devices (which lists devices by integration and area) or Settings > Entities (list of all sensors, switches, lights, etc.). Try toggling a smart light or checking a sensor’s status from the Overview dashboard or the Devices page to confirm things are working. Now, let’s make your smart home actually smart by adding automations!

5. Basic Automation Setup

One of the most powerful features of Home Assistant is the ability to automate your smart home – having things happen automatically based on conditions, time, sensor readings, etc. We’ll create a couple of simple automations to illustrate how to do this using Home Assistant’s Automation Editor (no programming required). We’ll also touch on scripts.

What are Automations? In Home Assistant, an automation consists of triggers, conditions, and actions. When a trigger fires (e.g., a time is reached, a sensor value changes, a button is pressed), and optional conditions are met, then the actions are executed (e.g., turn on a light, send a notification).

Creating an Automation (UI method):

Home Assistant provides a user-friendly interface to build automations:

  1. In the Home Assistant UI, navigate to Settings > Automations & Scenes (this is where automations live). Click “Create Automation”. If prompted to choose a blueprint or start fresh, select “Start with an empty automation” (or Create new automation).

  2. You’ll see the Automation Editor. Give your automation a name (e.g., “Turn on porch light at sunset”). Now define a Trigger – click “Add Trigger”. You can choose from many trigger types (time, sun, device, state, etc.). For this example, let’s trigger based on Sunset. Choose “Sun” as the trigger type. Then, for event choose “Sunset”. You can add an offset if desired (for instance, -003000 to trigger 30 minutes before sunset). This is useful to turn lights on a bit earlier than full dark.

  3. (Optional) Add a Condition if needed. For our sunset light example, we might skip conditions (it will always trigger at sunset). But you could add a condition like “only if someone is home” or “only on weekdays”, etc. Conditions ensure the action only runs if certain criteria are true at the moment of trigger.

  4. Add an Action – click “Add Action”. Select what you want to do when triggered. For our example, choose Device or Action Type: Call service. Easiest is to use Device or Entity: pick the light (or lights) you want to turn on. For instance, Action type = “Device”, then choose your porch light device and action “Turn on Porch Light” if available. Or choose “Call Service” and select light.turn_on, then under Target pick the entity (like light.porch_light). The Automation Editor often provides a direct way if you pick the device first. Set any additional parameters (like brightness).

  5. That’s it – you have a trigger and an action (and optional conditions). The automation text might read like: “Trigger: Sun -> Sunset (-0030 offset); **Action** Light -> Turn on [Porch Light]”. Click Save. Your automation is now active.

For reference, the Home Assistant docs provide a similar example of turning on lights at sunset using the Automation Editor.

Here’s another example automation idea: Motion-activated Light:

  • Trigger: a motion sensor detects motion (e.g., Trigger type: State, entity: binary_sensor.hall_motion from off to on).
  • Condition: time is between sunset and sunrise (so it only turns light on at night).
  • Action: turn on a light (entity: light.hall_light).
  • Optionally, you can add a second action with a delay (e.g., wait 5 minutes) and then a third action to turn the light off, so it doesn’t stay on indefinitely after motion stops.

You can create this through the UI similarly by selecting the device triggers and actions. Once you save an automation, it’s immediately in effect. You can test it by triggering the condition (cover the motion sensor, etc.) or manually triggering it from the Automations list (each automation has a “run” icon for testing).

Scripts: In addition to automations, Home Assistant has Scripts, which are sequences of actions that you can run on demand. A script is like a saved routine – you can call it manually or from an automation. For instance, you could have a “Bedtime routine” script that locks doors, turns off all lights, and adjusts thermostat. Creating a script is similar to an automation but without triggers (it just has a sequence of actions). You can create scripts under Settings > Automations & Scenes > Scripts tab. Give it a name and add actions in order. Then you can activate that script from the UI or call it in an automation (using the “Call Service – script.turn_on” action or directly as a device action if listed). For beginners, you might not need many scripts right away, but it’s good to know they exist. Sometimes, complex automations are easier to manage as a script that does the heavy lifting, triggered by a simple automation.

Using Automations and Scripts: After creating some, you can always come back to edit them. The Automations & Scripts page shows status (last triggered, etc.). If an automation isn’t working as expected, check:

  • The Triggers: Are they firing? (Use Developer Tools > States to monitor sensor states or times).
  • The Conditions: Maybe a condition is blocking it.
  • The Actions: You can trace automations by enabling tracing (in Automation editor, there’s a “Show trace” after it runs, which shows each step).

For more complex logic, you can dive into YAML and the automations.yaml file, but the UI is powerful enough for most needs and is great for beginners.

Now that you have some basic automations, your Home Assistant can automatically control devices. For example, lights turn on at sunset, or your coffee machine turns on every morning at 7 AM, etc. You can create more based on your devices and imagination – like sending a notification when the washing machine (smart plug) finishes, or arming a security system when you leave home. Home Assistant’s Automation editor and Scenes (for setting groups of lights) will be your go-to tools for customizing behavior.

Next, we’ll discuss maintaining your Home Assistant system over time, updating it, and troubleshooting tips to keep everything running smoothly.

6. Maintenance and Updates

Congratulations on setting up Home Assistant on your Raspberry Pi! To keep your smart home running reliably, it’s important to maintain the system and apply updates when needed. This final section covers best practices for updating Home Assistant, backing up your configuration, and troubleshooting common issues.

Keeping Home Assistant Up-to-date: Home Assistant releases updates frequently (usually monthly, with patch releases in between). Updates bring new features, improvements, and security fixes. In a supervised installation, you will typically get a notification in Settings > System when a new version is available, and you can update with a single click. If you installed via Docker, you’ll need to manually pull the new image and restart the container (as described in Section 2A, step 5). It’s a good practice to stay on a reasonably current version unless you have a specific reason not to. New users often worry about updates breaking things; breaking changes are documented in release notes, but minor version bumps are usually smooth. Before updating, it’s wise to create a backup (see next point).

Backups (Snapshots): Regular backups are critical for any Home Assistant instance. A backup (formerly called “snapshot”) contains your configuration, entities, and optionally add-ons. In Home Assistant OS/Supervised, you can create and manage backups in the Settings > System > Backups panel. It’s easy to take a full backup and download it or have it uploaded to cloud storage. New users sometimes overlook backups until it’s too late (after an SD card failure or a bad update), so make it a habit early on. Home Assistant has recently introduced even easier automated backups and the ability to restore backups across all installation types. Aim to follow the 3-2-1 backup rule (multiple copies, different media, one off-site) if possible, but at minimum keep recent backups in a safe place (e.g., download them to your PC or cloud). If you used the Docker container method without Supervisor, you won’t have the built-in backup feature, so you should manually back up your config directory (the one you mapped to /config). You can simply copy that folder to a safe location periodically. There are community tools/scripts to automate backups for Docker installs as well.

Updating the Host OS: Don’t forget your Raspberry Pi’s underlying OS. If you’re on Raspberry Pi OS or Debian, occasionally run sudo apt update && sudo apt upgrade to get the latest security patches for the system. This is especially important if the Pi is internet-exposed or running other services. However, avoid major distro version upgrades without checking Home Assistant compatibility (for example, if Debian 13 comes out in future, research before upgrading, as Supervisor might not yet support it). If you use Home Assistant Supervised, stick to Debian stable and you’ll be fine; if using Raspberry Pi OS, it’s usually okay since it’s closely related, just be cautious of any breaking changes (the community/forum is a good place to check if others have done the same upgrade).

Monitoring System Health: Home Assistant has a System Health info (under Settings > System or the info icon in the bottom of the sidebar in newer versions) that shows if anything is wrong (e.g., low disk space, unsupported install, etc.). Keep an eye on CPU load and RAM use on your Pi – the Supervisor panel shows that, or you can use the System Monitor integration. A Pi 3B+ with 1GB RAM might be tight if you add many add-ons; a Pi 4 with 2GB+ should handle a standard setup. If you find the Pi struggling (frequent freezes or slow response), consider reducing add-ons, or upgrading hardware (some eventually move to an Intel NUC or other machine for heavier workloads).

Troubleshooting Common Issues:

  • Can’t access Home Assistant UI: If http://<ip>:8123 isn’t responding, first check if the Home Assistant service is running. For Docker, docker ps should show the container; use docker logs homeassistant to see if there are errors. For Supervised, sudo systemctl status hassio-supervisor and also check docker ps (Home Assistant runs in Docker even in supervised mode). If it crashed due to a config error (say you edited YAML and made a mistake), you might need to fix the config via command line. Home Assistant in safe mode might still come up if config is broken. Also ensure your Pi is on and connected (solid power supply!). On some Linux setups, a firewall might block the port – e.g., UFW could block 8123. Ensure you allow Home Assistant’s port through if you enabled a firewall.

  • Errors after editing configuration: If you manually edit configuration.yaml or other files, use Developer Tools > YAML > “Check Configuration” in the UI (or run ha core check via SSH if using Home Assistant OS/Supervisor) to verify syntax before restarting. A small indentation error can prevent Home Assistant from starting. The logs (Developer Tools > Logs) will usually indicate what line has an error.

  • Device not responding: If a particular device is flaky (e.g., a Zigbee light sometimes doesn’t turn on), check its signal/network. For Zigbee/Z-Wave, maybe the mesh needs more devices or better placement (e.g., add a repeater or move the USB stick to a more central location using a USB extension). Check battery levels on sensors. Home Assistant’s Logbook and History can show if events are coming in as expected.

  • SD Card wear or failure: Raspberry Pi’s SD cards can be a point of failure over time due to many write operations (Home Assistant does frequent database writes for history). Using a high endurance SD card or moving the data to an SSD can help. If you start to see file system errors or corrupted data, it could be the SD card. That’s where having backups is crucial – you can reflash a new card and restore your backup. Many users in longer term migrate their Home Assistant to boot from an SSD connected via USB for better reliability.

  • Performance tips: Keep your Home Assistant lean by removing unused integrations and add-ons. Some add-ons (like InfluxDB, MotionEye, etc.) can be resource-heavy on a Pi. You can run such services on another machine or use the Pi just for Home Assistant. Also, consider purging history sooner (default retains 10 days of data) if you have limited space – this can be configured in the Recorder integration to avoid a huge database.

  • Community Support: If you run into issues, the Home Assistant Community Forums and Discord chat are extremely helpful. There’s a large user base in Australia and worldwide that can assist with local device recommendations and troubleshooting. Don’t hesitate to search the forums or ask if something isn’t working; chances are someone has had the same issue. Just remember to mention if you’re on a supervised or container install, as solutions might differ.

Maintaining Home Assistant is a bit like maintaining a car – occasional tune-ups (updates) and check-ups (monitoring logs) will keep it running smoothly. The good news is Home Assistant has been getting easier to maintain with features like automatic backups and robust update mechanisms. Make sure to leverage those tools. For instance, setting up an automated backup to Google Drive (via an add-on) or similar can be a lifesaver if your Pi dies unexpectedly.

To summarize the key maintenance points:

  • Update Home Assistant regularly for improvements (take backups before major updates).
  • Back up your config often – especially before making big changes.
  • Use a stable power supply and consider an UPS if your area experiences power bumps, to avoid corruption on abrupt power loss.
  • Monitor your system’s health via logs and the UI; address warnings early (e.g., low disk space).
  • Keep learning! Home Assistant is continually evolving – new integrations and better methods (like UI-based automation, Blueprint sharings, etc.) come out frequently.

With this, you have a solid, beginner-friendly Home Assistant setup on your Raspberry Pi. You can control devices, automate routines, and expand your smart home at your own pace. Home Assistant is extremely versatile; you might soon integrate voice assistants, create custom dashboards (try the “Dashboards” menu), or add presence detection to trigger automations when you come and go. The possibilities are endless, and you now have the foundation to explore them.

We hope this guide has made the installation and initial usage clear and easy. Enjoy your smart home journey in Australia (or anywhere else), and happy automating! 🚀