Skip to main content

Home Assistant Core installatie in Debian 10 (Buster) met Python

In dit document wordt beschreven hoe je Home Assistent Core kan installeren door middel van Python in Debian 10 (Buster).
Home Assistant Core bevat dus niet de Supervisor en de add-ons.

Python installeren

Op het moment van schrijven is voor Home Assistant Python 3.9 nodig. In Debian 10 hebben we standaard alleen de beschikking over Python 2.7 en Python 3.7. Je kan met onderstaand commando controleren welke versies van Python geïnstalleerd zijn in Debian:

ls /usr/bin/python*

De actieve Python versie kan je controleren met:

python -V

Hoe je de nieuwste Python 3.9 versie kan installeren vanuit source staat beschreven in het artikel Python installeren vanuit source in Debian 10.

Hoe je de standaard Python versie kan instellen en kan wisselen van Python versie staat beschreven in het artikel Default Python versie wijzigen in Debian 10.

Overige benodigde pakketten installeren

Onderstaande uitvoeren om de rest van de benodigde pakketten te installeren:

apt-get install libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 sudo

Gebruiker aanmaken voor Home Assistant

We gaan nu een gebruiker aanmaken speciaal voor Home Assistant:

useradd -rm -s /bin/bash homeassistant -G dialout

Bovenstaand commando maakt de gebruiker homeassistant aan, maakt de home directory /home/homeassistant aan en voegt de gebruiker toe aan de groep dialout.

Virtuele Python omgeving aanmaken

Je kunt in Python een virtuele omgeving maken die onafhankelijk draait van de rest. Het voordeel is dat je eventueel verschillende Python versies naast elkaar kan draaien. Voor Home Assistant maken we een virtuele omgeving aan in de directory /srv/homeassistant.
De configuratie bestanden van Home Assistant komen te staan in /home/homeassistant.

We gaan eerst het Python pakket pip updaten (pip is de package installer voor Python) en vervolgens het pakket virtualenv voor het maken van de virtuele Python omgeving. We gaan in onderstaande handelingen uit van een geïnstalleerde Python 3.9 versie.

python3.9 -m pip install --upgrade pip
pip3 install virtualenv

We voeren het volgende uit om de directory aan te maken en de gebruiker homeassistant eigenaar te maken van deze directory:

cd /srv
mkdir homeassistant
chown homeassistant:homeassistant homeassistant

Vervolgens gaan we de virtuele Python omgeving maken. Dit doen we onder de gebruiker homeassistant.
Let op dat je de juiste python versie kiest, in ons geval python3.9.
Je kunt het juiste pad controleren op de commandline met: which python3.9

sudo -u homeassistant -H -s
cd /srv/homeassistant
virtualenv --system-site-packages -p /usr/local/bin/python3.9 /srv/homeassistant
source bin/activate

Merk op dat we in de virtuele omgeving zitten door de prompt die je nu ziet.
In mijn geval is dat (homeassistant) homeassistant@hass:/srv/homeassistant$
Nu de virtuele omgeving is aangemaakt kunnen we nog een benodigd Python pakket installeren met:

python3 -m pip install wheel

En uiteindelijk installeren we Home Assistant Core met:

pip3 install homeassistant

Start Home Assistant Core nu eenmalig door:

hass

De installatie wordt nu afgemaakt en de configuratie directory /home/homeassistant/.homeassistant wordt ook aangemaakt.
Je kunt nu met je webbrowser naar http://<IP-ADRES-MACHINE>:8123 om de eerste gebruiker aan te maken voor Home Assistant.
Let op dat het even kan duren voordat je dit scherm krijgt. Home Assistant is dan nog niet klaar met de installatie, dus heb even geduld.

Wanneer je kan inloggen en Home Assistant werkt, dan kan je het nu afbreken met Control-C.
Verlaat de virtuele Python omgeving nu met exit of <CTRL-D>.

Home Assistant Core automatisch starten met systemd

We maken nu een bestand aan zodat Home Assistant automatisch start bij het opstarten van de PC.
Open de editor:

nano /etc/systemd/system/home-assistant@homeassistant.service

Hier plaatsen we het volgende in:

[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/srv/homeassistant/bin/hass -c "/home/%i/.homeassistant"

[Install]
WantedBy=multi-user.target

Vervolgens voeren we het volgende uit:

systemctl --system daemon-reload
systemctl enable home-assistant@homeassistant.service
systemctl start home-assistant@homeassistant.service

Controleer of de service nu actief is met:

systemctl status home-assistant@homeassistant.service

Home Assistant updaten

Er komen regelmatig nieuwe updates uit van Home Assistant. De update kan vanaf de commandline uitgevoerd worden binnen de virtuele Python omgeving. We doen dit onder de gebruiker homeassistant en gaan daarna naar de virtuele omgeving:

sudo -u homeassistant -H -s
cd /srv/homeassistant
source bin/activate

Controleer of je ook daadwerkelijk in de virtuele omgeving zit door de juiste prompt die je krijgt:
(homeassistant) homeassistant@hass:/srv/homeassistant$
Daarna kunnen we Home Assistant updaten met het commando:

pip3 install --upgrade homeassistant

Als dit succesvol is verlopen kan je de virtuele omgeving verlaten met <CTRL-D> of exit.
Hierna dient men Home Assistant te herstarten met:

systemctl restart home-assistant@homeassistant.service

Automatisch naar virtuele omgeving gaan voor homeassistant

Om niet iedere keer bovenstaande handelingen uit te hoeven voeren als je Home Assistant wilt updaten kunnen we het bestand ~/.bashrc gebruiken in de home directory van homeassistant. Hiervoor gaan we eerst naar de home directory toe:

cd /home/homeassistant

Onderstaande commando’s zorgen ervoor dat er twee regels toegevoegd worden in het bestand .bashrc die er voor zorgen dat we direct in de virtuele omgeving zitten zodra we inloggen met de gebruiker homeassistant:

sh -c 'echo "cd /srv/homeassistant" >> ~/.bashrc'
sh -c 'echo "source /srv/homeassistant/bin/activate" >> ~/.bashrc'

Log nu in als gebruiker homeassistant met:

sudo -u homeassistant -H -s

Je zou nu in de virtuele omgeving moeten zitten, herkenbaar aan de prompt.

Bronnen

Home Assistant – Installation
Autostart using systemd
Updating Home Assistant