Installation of Home Assistant
Lars Jönsson 2022-02-26
Information about how to install Home Assistant on a Raspberry Pi. It is based on the instructions at:
Download the image available at Home Assistant images
Flash the downloaded image to an SD card using balenaEtcher. Use at least a 32 GB SD card to avoid running out of space.
Workaround for headless usage
On some newer Raspberry Pi 4 boards, Home Assistant seems to have a
problem to boot without a screen attached to the HDMI connector. To
prevent this problem, ensure that the following line is present in the
/config.txt file, on the boot partition of the SD card.
Normally, the following lines are present in the
file. Just follow the instruction in the file and uncomment the line.
# uncomment if hdmi display is not detected and composite is being output #hdmi_force_hotplug=1
Razberry Z-wave (optional)
The Razberry Z-wave board uses the UART that is normally used by
Bluetooth. By using a device overlay called
Bluetooth will use another UART freeing up the UART at
to be used by the Razberry board.
Add the following line at the end of the
/config.txt file on the
boot partition of the SD card.
More information is available at:
- Home Assistant - RAZBERRY BOARD
- Raspberry Pi - config.txt
- Raspberry Pi - UART configuration
Format a USB stick to FAT32 with the volume name
Wireless LAN WPA/PSK
Create a folder named
network in the root of the newly-formatted USB
Within that folder, create a file named
my-network without a file
extension.Insert the following into the file. Replace
MY_SSID with the SSID of the network and
MY_WLAN_SECRET_KEY with the secret key.
[connection] id=my-network uuid=72111c67-4a5d-4d5c-925e-f8ee26efb3c3 type=802-11-wireless [802-11-wireless] mode=infrastructure ssid=MY_SSID # Uncomment below if your SSID is not broadcasted #hidden=true [802-11-wireless-security] auth-alg=open key-mgmt=wpa-psk psk=MY_WLAN_SECRET_KEY [ipv4] method=auto [ipv6] addr-gen-mode=stable-privacy method=auto
Static IP (optional)
Replace the following configuration in the
[ipv4] method=manual address=192.168.1.111/24;192.168.1.1 dns=22.214.171.124;126.96.36.199;
address, the value before the semicolon is the IP address and
subnet prefix bitlength. The second value (after the semicolon) is the
IP address of the local gateway.
First start of the board
Plug in the USB stick and the SD card into the Raspberry Pi.
Connect your power supply to the Raspberry Pi.
The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant. This will take about 20 minutes.
Home Assistant will be available at http://homeassistant.local:8123. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at http://homeassistant:8123 or http://X.X.X.X:8123 (replace X.X.X.X with your Pi’s IP address).
If you used a USB stick for configuring the network, you can now remove it.
Configuration after startup
When the installation is ready, you will prompted to create an user account. Create it and log in.
Configure the home location.
The following add-ons are more or less a must, to be able to manage the Home Assistant in a simple way.
The following add-ons are needed to be able to use Tellstick and Zigbee:
The Z-Wave integration built into Home Assistant is deprecated and replaced by the Z-Wave JS add-on. The work is still in progress, but most of the functionality is already implemented and it should be used in all new installations.
File editor add-on
The file editor is used for editing the configuration files. Even though many things can be configured by using the GUI, some things are still configured via files. Everything (or almost everything) configured via the GUI is put into files that can be edited by the File editor.
Install the add-on and start it. Enable Show in sidebar. No configuration is needed for normal use.
Terminal & SSH add-on
Sometimes it is needed to login to the CLI of Home Assistant. This add-on enables login via SSH.
This add-on is only availble if the user is set to Advanced mode.
Install the add-on. Some configuration is necessary. You need enable
the port for external access. You can just enter 22 as value or any
other value like you want. Enter
authorized_keys (preferred) or
password. Start the add-on.
Standard SSH access
root to either
homeassistant.local or to the IP address
X.X.X.X) of Home Assistant.
ssh firstname.lastname@example.org --- or --- ssh root@X.X.X.X
Debug SSH access
Sometimes it is vital to access the OS of Home Assistant for debug purposes. More information is available at Debugging the Home Assistant Operating System.
Install the public key to Home Assistant by putting the file on an USB
stick that is named
CONFIG. The previously used USB stick can be
reused. Put the public key in a file named
authorized_keys on the
root of the USB stick. Connect the USB to the board. Either use
IMPORT FROM UAB in Home Assistant (Supervisor -> System) or reboot
the board to update copy the public key to the board.
Port 22222 is used for debug login. Login as
root to either
homeassistant.local or to the IP address (
X.X.X.X) of Home
ssh email@example.com -p 22222 --- or --- ssh root@X.X.X.X -p 22222
login at the
ha > prompt to access the host system of the
_ _ _ _ _ | | | | /\ (_) | | | | | |__| | ___ _ __ ___ ___ / \ ___ ___ _ ___| |_ __ _ _ __ | |_ | __ |/ _ \| '_ ` _ \ / _ \ / /\ \ / __/ __| / __| __/ _` | '_ \| __| | | | | (_) | | | | | | __/ / ____ \\__ \__ \ \__ \ || (_| | | | | |_ |_| |_|\___/|_| |_| |_|\___| /_/ \_\___/___/_|___/\__\__,_|_| |_|\__| Welcome on Home Assistant command line. For more details use 'help' and 'exit' to close. If you need access to host system use 'login'. ha > login #
Install the add-on. All switches that are controlled by Tellstick needs to be configured.
devices: - id: 1 name: Balkong protocol: arctech model: 'selflearning-switch:nexa' house: '231893' unit: '1'
configuration.yaml file also needs to be updated to include
# Example configuration.yaml entry tellstick: host: core-tellstick port: [50800, 50801]
Sensors are auto-detected by Tellstick, but the id of each sensor
needs to be added to
# Example configuration.yaml entry sensor: - platform: tellstick only_named: - id: 222 name: Gästrum - id: 117 name: Balkong - id: 213 name: Sovrum
list-sensors function to get the id of all sensors. It is
described in the Service calls section in the add-on documentation
Self-learning remote controls
The house code and other codes of self-learning remote controls can be retrieved in Home Assistant by connecting directly to the tellstick add-on. It is shorly described in this blog post.
To obtain the codes from the remote control, run the following command in the CLI:
nc core-tellstick 50801
Then you activate the sensor and what comes up looks something like this:
There you can read everything you need to enter in the TellStick configuration:
devices: - id: 6 name: [Your name for it] protocol: arctech model: 'selflearning-switch:nexa' house: '41819134' unit: '15'
This is used to control a Zigbee network with ConBee II.
Install the add-on and configure it. The
device needs to be set and
if VNC is used the
vnc_password also needs to be set.
device: /dev/ttyACM0 vnc_password: MY-SECRET
When using VNC, the port number have to be set in the Network section of the add-on configuration. It is adviced to use 5900.
By default, Home Assistant has the discovery integration enabled, which automatically discovers this add-on. Navigate to Configuration -> Integrations page after starting this add-on to configure the deCONZ integration.
Z-Wave JS add-on
This add-on replaces the Z-Wave integration included in Home Assistant, which is deprecated. It is based on the Z-Wave JS driver and is the recommended Z-Wave integration for Home Assistant. If you want to migrate from the old Z-Wave, more information is available at Migrating from previous Z-Wave implementations.
Install the add-on and configure it. The
needs to be set.
device: /dev/ttyAMA0 network_key: MY-NETWORK-KEY
If you are using an already configured Z-Wave network (migrating), the
old network key (i.e.
2232666D100F795E5BB17F0A1BB7A146) should be
used (see Migrating from previous Z-Wave
you need to reset controller and all devices, and set up the network
Start the add-on and add the Z-Wave JS integration to Home Assistant, see documentation: https://www.home-assistant.io/integrations/zwave_js
Configure Home Assistant
If you have an old Home Assistant you can copy the configuration files. The easiest way is to use File edit and copy the desired content to the new Home Assistant.
Another way is to restore a snapshot from the old Home Assistant, but it requires that both Raspberry Pi:s are of the same sort and that everything on the old Home Assistant is updated to the latest versions.
Setup of SSL/TLS is covered in a separate topic.