Home Assistant
Posted on Sa 05 Dezember 2020 in Computer & Electronics
Das Smart-Home ist in aller Munde und das Netz voll mit IoT-Geräten, die aber natürlich alle ihre eigene Cloudlösung anpreisen – katastrophale Security-Probleme inklusive. Und auch ich habe im Lauf der Jahre verschiedene Geräte angehäuft, die im weitesten Sinne in die Kategorie IoT oder Smarthome fallen:
- Meine Tasmota-basierte Fernsteuerung der Espressomaschine
- Dito für die Werkstattheizung
- Ein paar LED-Leuchten mit Bluetooth-Fernbedienung
- Eine Funkklingel
- Diverse Funk-Temperatursensoren
Und in der Schublade liegen noch ein paar Shellys und diverse Funksender und ich hätte noch jede Menge Ideen, was man noch so alles anbinden könnte.
Aber irgendwie leben die alle in ihrer eigenen Welt: Die beiden Tasmota-Geräte sind im WLAN, die Klingel und die Temperatursensoren funken auf 433MHz und die Lampen haben BLE.
Ein Ring, sie zu knechten, sie alle zu finden
Wäre doch schön, wenn man all die Sachen irgendwo unter ein Dach bekommen könnte. Also habe ich das allwissende Netz befragt und konnte mich vor möglichen Lösungen kaum retten: openHAB, FHEM, Home Assistant, NodeRed, ioBroker und noch einige mehr.
Die Aufgabe so einer Software ist es, das babylonische Sprachen-Chaos in den Griff zu kriegen und die diversen Geräte unterschiedlicher Hersteller, Protokolle und Kommunikationsformen in ein gemeinsames System zu zwingen über das man dann sein Haus steuern und überwachen kann, anstatt hundert verschiedene Apps für die diversen Teile installieren zu müssen.
Ich habe mir die oben genannten Programme alle angesehen und sie erfüllen alle ihren Zweck und haben so ihre individuellen Vor- und Nachteile. Letztlich hat mir Home Assistant am besten gefallen, vielleicht weil mir Python sympatisch war und es einen unkomplizierten Eindruck macht, und so probieren wir das heute mal aus.
Als erstes müssen wir das mal installieren. Die Standard-Methode ist offenbar, ein Image des Home Assistant OS auf eine SD-Kart zu schreiben und einen Raspberry-Pi als Server zu verwenden. Hm – ich will aber keinen Pi dafür nehmen, sondern das Ganze auf meinem HP-Microserver installieren. Leider gibt es kein Debian Package – weder in der Distribution, noch auf der Home Assistant Seite.
Das finde ich, ehrlich gesagt, ziemlich schade und muss an dieser Stelle mal
meiner Verärgerung über einen Trend Ausdruck verleihen: Ich sehe da draußen
einen Haufen wirklich cooler Projekte, wie z.B. Home Assistant oder PiHole, die
als primäre Methode einen reinen Pi-Installer anbieten oder gar ein komplettes
OS-Image. Dabei gehen sie offenbar davon aus, dass der Pi dann ausschließlich
diese konkrete Funktion übernimmt. Ich glaube, das soll anfängerfreundlich sein
– d.h. der Neu-User muss nur das Image auf die Karte kriegen oder den
Installations-Wizard starten und keine Ahnung von LINUX haben. Das klingt
erstmal positiv, aber ich finde, das macht es nur unnötig schwer, den nächsten
Schritt zu gehen. Muss der besagte Neuling nun einen weiteren Pi kaufen, wenn
er Home Assistant und Pi-hole haben will? Ist es wirklich komplizierter, ein
Raspbian (aka Raspberry PI OS) zu installieren und dort sudo apt-get install
pihole
einzugeben? Ich finde nicht und gerade der besagte Neuling wäre
mittelfristig besser dran, diese ganz fundamentalen Tools, wie den
Package-Manager kennen zu lernen, anstatt für jedes Projekt einen neuen
Installer verwenden zu müssen. Und wenn man obendrauf einen Konfig-Wizard
anbieten will – super, gerne, aber idealerweise im normalen Ökosystem der
Distribution und nicht statt des normalen Weges. Auch hätte man dann nicht
die Gefahr einen wilden Mix leicht unterschiedlicher Versionen und
Konfigurationen des OS auf seiner Pi-Farm zu haben und ganz nebenbei ist die
Installationsanleitung dann auch viel universeller, denn dann ist es wurscht,
ob ich auf einem Pi installiere, einem alten Desktop Computer oder einem
Server.
Aber genug gemeckert – natürlich gibt es verschiedene andere Methoden, Home Assistant zu installieren. Ich habe mich letztlich dafür entschieden, das Docker Image zu verwenden:
~ ❯ docker pull homeassistant/home-assistant:stable
stable: Pulling from homeassistant/home-assistant
188c0c94c7c5: Pull complete
05a9011f9479: Pull complete
554b6a0a1c40: Pull complete
83e458825758: Pull complete
715e44207e4b: Pull complete
d8ff46c50e4c: Pull complete
e3bf5b485dda: Pull complete
f4f68ce42e30: Pull complete
bc91c4987a21: Pull complete
146c01da451a: Pull complete
062908a5f0c4: Pull complete
67976a0cee84: Pull complete
56aa77785c59: Pull complete
348203cf2df7: Pull complete
43a99f3ca67c: Pull complete
b7773d59b8b7: Pull complete
df78b1408580: Pull complete
b336ed9b9f23: Pull complete
511244112a96: Pull complete
8370a45f2121: Pull complete
4e48544928b9: Pull complete
Digest: sha256:387410a898c98d20feccce7c7bd7049c6e2e13b61bf016f7df35c340d73bb932
Status: Downloaded newer image for homeassistant/home-assistant:stable
Schön – gleich mal schauen:
~ ❯ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
homeassistant/home-assistant stable 3adcbc30beac 24 hours ago 1.1GB
Als erstes legen wir mal ein Verzeichnis für die config an:
mkdir ~/.config/homeassistant
Und starten:
docker run -d --name="hass.io" -v ~/.config/homeassistant/ -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant:stable
Und da isser:
~ ❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
802b689616ed homeassistant/home-assistant:stable "/init" 4 seconds ago Up 4 seconds hass.io
Streng genommen hätte ich mir den docker pull
Schritt sparen können, weil das
docker run
Kommando die Installation eh automatisch angestoßen hätte, aber so
finde ich es dramaturgisch schöner ;-)
Auf die Dauer ist es aber besser, das Ganze mit docker-compose zu machen. Und so habe ich auch das noch schnell gemacht. So schaut mein docker compose file aus:
version: '3'
services:
homeassistant:
container_name: home-assistant
image: homeassistant/home-assistant:stable
volumes:
- ~/.config/homeassistant/:config
environment:
- TZ=Europe/Berlin
restart: always
network_mode: host
Das ganze startet man dann so:
docker-compose up -d
So – und wie komme ich nun in den Home Assistant? Simpel – er läuft nun auf meinem
homeserver auf Port 8123, also bitte ich den Browser meines Vertrauens freundlich,
sich mit der Adresse http://hal:8123/onboarding.html
zu verbinden. Und schon bin ich
hier:
Und kurz drauf bin ich mitten im Dashboard.
Na toll – Nebel! Und vor allem – keinerlei Gadgets. Das muss sich ändern! Als erstes versuchen wir mal, die Espressomaschine einzubinden. Das ist eine ganz altmodische italienische Siebträgermaschine, also keinerlei Elektronik oder gar Computersteuerung an Bord. Aber sie hängt an einer Sonoff S20 Steckdose, auf der Tasmota läuft – so kann ich sie ganz einfach per Handy oder Computer via Web-Interface ein und aus schalten, ohne eine App zu brauchen. Und ich habe sie so programmiert, dass sie morgens an geht, wenn der Wecker klingelt. So weit, so praktisch. Aber cooler wäre natürlich eine Integration in den Heimserver.
Damit das was wird, müssen wir dafür sorgen, dass die beiden via MQTT miteinander reden können. Und dazu brauchen wir einen MQTT broker. Mosquitto ist wohl der populärste.
... Ins Dunkel zu treiben und ewig zu binden
Und nun muss ich leider wieder in den Grantel-Modus schalten: Wenn man das in der Home Assistant Doku nachschlägt, dann erfährt man, dass man in das supervisor-Panel gehen muss und dort die Möglichkeit fände, das MQTT broker Add-on zu installieren. Schön. Nur dass ich kein Supervisor-Panel habe, denn das gibt's nur, wenn man ein HASS.IO Appliance eingerichtet hat – also den Pi, der nix anderes kann als Home Assistant. Alternativ könne man eine Installation für einen "supervised Home Assistant" durchführen – aha. Docker-Image? Nein das gibt es für diesen Modus nicht. Und die "Supervised" Installation sei auch deprecated. Seht Ihr, was ich meine? Das ist doch total hirnrissig, sich auf die Entwicklung eines Appliance-Systems zu versteifen! Als open-source Projekt! Ich verstehe das ja, wenn man eine Firma ist – dann will man ein simples Gerät bauen und das ist was der User bekomt. Aber warum in aller Welt würde man das so machen, wenn man eine freie Software baut? Es schränkt die Nützlichkeit unnötig ein und führt in diesem Fall zu diversen verschlungenen Installationspfaden, deren Nachhaltigkeit unklar bleibt. Soll ich wirklich diesen "Supervised install" machen, wenn das eh nicht mehr lange unterstützt wird? Was mache ich dann? Umsteigen auf ein neues System? Ich überlege gerade ernsthaft, ob Home Assistant wirklich das richtige System für mich ist. Vielleicht sollte ich doch was anderes nehmen...