Skip to main content

ESPHome installeren in Debian 10 (standalone)

ESPHome is een systeem om een ESP8266/ESP32 microcontroller te configureren met behulp van configuratie bestanden geschreven in YAML. ESPHome maakt zoveel mogelijk gebruik van dezelfde structuur en opbouw van deze YAML bestanden als Home Assistant. ESPHome is daarom ook makkelijk te integreren in Home Assistant.

Je kunt ook gebruik maken van de ESPHome Dashboard, een web interface die het configuratie bestand voor je aanmaakt, controleert op syntax fouten en compileert naar een firmware bestand voor de microcontroler. Dit firmware (.bin) bestand kan je downloaden en daarna in de microcontroller flashen met behulp van je USB naar serieel converter. Eventuele latere wijzigingen van de configuratie kunnen daarna via OTA (Over The Air) weggeschreven worden naar de microcontroller.

Wanneer je Home Assistant Supervised hebt geïnstalleerd, dan kan je op een eenvoudige manier ESPHome installeren en gebruiken vanuit Home Assistant. Heb je Home Assistant Core draaien, dan kan je ESPHome installeren vanaf de commandline.
Dit laatste wordt beschreven in onderstaand artikel.

De installatie instructies lijken in grote lijnen op de installatie van Home Assistant Core. ESPHome is ook geschreven in Python. In dit document gaan we er van uit dat Home Assistant Core reeds is geïnstalleerd.
Voor ESPHome maken we een aparte gebruiker. Ook maken we een virtuele Python omgeving en een systemd opstartscript om de ESPHome Dashboard automatisch te starten wanneer het systeem opstart.

Gebruiker aanmaken voor ESPHome

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

Virtuele Python omgeving aanmaken

Directory voor de virtuele Python omgeving aanmaken en rechten toekennen:

cd /srv
mkdir esphome
chown esphome:esphome esphome

Vervolgens gaan we de virtuele Python omgeving maken. Dit doen we onder de gebruiker esphome:

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

Nu de virtuele omgeving is aangemaakt kunnen we nog een benodigd Python pakket installeren met:

python3 -m pip install wheel

En dan installeren we ESPHome:

pip3 install esphome

Verlaat de virtuele Python omgeving met exit of <CTRL-D>.

ESPHome Dashboard automatisch starten met systemd

We maken nu een bestand aan zodat ESPHome Dashboard automatisch start bij het opstarten van het systeem.
Open de editor:

nano /etc/systemd/system/esphome-dashboard.service

Hier plaatsen we het volgende in:

[Unit]
Description=ESPHome Dashboard
After=network.target
[Service]
WorkingDirectory=/home/esphome
User=esphome
ExecStart=/srv/esphome/bin/esphome dashboard config
Restart=on-failure
RestartSec=5s
Environment="PATH=/srv/esphome/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games"
[Install]
WantedBy=multi-user.target

In bovenstaand opstartscript zien we dat de WorkingDirectory is ingesteld op /home/esphome.
Dit betekent dat de configuratie bestanden van ESPHome in deze directory weggeschreven worden.
Deze bestanden staan weer in de directory config (dus /home/esphome/config).

De regel met ExecStart start de ESPHome Dashboard op.
Je kunt de web interface eventueel ook nog beveiligen met een eigen inlogscherm door onderstaande parameters toe te voegen:

ExecStart=/srv/esphome/bin/esphome dashboard config --username user --password password --open-ui

De regel die begint met Environment zorgt er voor dat de omgevingsvariabelen goed ingesteld worden.
In dit geval is dat het pad naar de juiste directories. Wanneer dit niet goed staat ingesteld, werkt het compileren niet in ESPHome.

Vervolgens voeren we het volgende uit:

systemctl --system daemon-reload
systemctl enable esphome-dashboard.service
systemctl start esphome-dashboard.service

Controleer of de service nu actief is met:

systemctl status esphome-dashboard.service

Je kunt nu naar de ESPHome Dashboard via http://<IP-ADRES-MACHINE>:6052

ESPHome updaten

Wanneer er een nieuwe versie uit is van ESPHome kan men deze via de commandline updaten:

sudo -u esphome -H -s
cd /srv/esphome
source bin/activate
pip3 install --upgrade esphome

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

systemctl restart esphome-dashboard.service

Bronnen

ESPHome homepage
How to create a systemd service for python script with virtualenv