Home Assistant bringt die wenig kompatiblen Heimautomatisierungs-Lösungen verschiedener Hersteller unter seine Herrschaft und erlaubt es dem Admin, sie zentral zu regieren. Magazin-Autor Gunnar Beutner hat die in Python geschriebene Software in seiner Wohnung getestet und zeigt, wie sie sich schlägt.
Zwar wollen zahlreiche Hersteller im vergleichsweise neuen Marktsegment der Home-Automation-Systeme mitspielen, doch leider achten die wenigsten darauf, dabei zugleich offene Standards einzusetzen. Von den Konsequenzen können IT-ler seit biblischen Tagen ein Lied singen, dennoch wiederholt sich die Geschichte in schöner Regelmäßigkeit: Viele der vorhandenen Systeme reden nicht miteinander, sie sind inkompatibel.
Home Assistant
An dieser Stelle bringe ich Home Assistant [1] ins Spiel. Dessen Programmierer wollen die verschiedenen Insellösungen mit Hilfe ihrer in Python geschriebenen Open-Source-Anwendung zur Kooperation überreden. Ihre Software unterstützt eine Vielzahl offener Protokolle und Hardwarekomponenten, um alle erdenklichen Möglichkeiten in der Heimautomatisierung abzudecken, dazu gehören beispielsweise:
- Sensoren auslesen
- Anwesenheit von Personen erkennen
- Wetter oder Sonnenstand abfragen
- Beleuchtung steuern
- Musik über Mediaplayer abspielen
- Thermostat für die Heizungen regulieren
Als es mich mit all meinen Habseligkeiten vor wenigen Wochen in die schöne Frankenmetropole Nürnberg zog, entschloss ich mich, Home Assistant auszuprobieren: Die neue Wohnung wollte ich gleich von Anfang an mit Philips-Hue-Lampen, Sonos-WLAN-Lautsprechern und diversen anderen Sensoren ausstatten, um sie dann von Grund auf zu automatisieren. Ein Hauptkriterium war, dass die Technologie im normalen Tagesablauf unsichtbar bleiben und Home Assistant möglichst ganz im Hintergrund agieren sollte.
Im Container
Die Installation setzt zunächst ein Linux-System voraus. Dabei reicht ein gewöhnlicher Raspberry Pi, der noch irgendwo unter dem Sofa Staub fängt. Home Assistant stellt keine besonderen Anforderungen an den Arbeitsspeicher und die Rechenleistung. Wer seine Hobbyprojekte lieber etwas stärker voneinander isoliert, dem leisten Proxmox VE (Abbildung 1, [2]) oder andere Virtualisierungsplattformen gute Dienste.

Abbildung 1: Um Home Assistant zu installieren, bietet es sich an, zunächst einen Linux-Container einzurichten, beispielsweise mit Proxmox VE.
Um Home Assistant einzurichten, legte ich zunächst einen zusätzlichen Benutzer an und installierte dann weitere Pakete unter Ubuntu Server 16.04:
adduser --system homeassistant apt-get install python-pip python3-dev pip install --upgrade virtualenv
Anschließend lässt sich Home Assistant in einem Virtual Environment im Homeverzeichnis des neu angelegten Benutzers installieren (Listing 1).
Listing 1
Installation unter Ubuntu Server 16.04
01 su -s /bin/bash homeassistant 02 mkdir ~/ha 03 virtualenv -p python3 ~/ha 04 source ~/ha/bin/activate 05 pip3 install --upgrade homeassistant
Der Vorteil, Python in eine virtuelle Umgebung einzusperren, liegt unter anderem darin, dass Home Assistant so bei Bedarf auch während des Betriebs weitere Python-Pakete nachinstallieren kann. Das geschieht in einem von anderen Anwendungen abgetrennten Verzeichnisbaum – die Software braucht dafür auch keine Rootrechte.
Danach ist Home Assistant auch schon einsatzbereit. Zum Testen genügt es, die Software direkt in der Shell aufzurufen:
sudo -u homeassistant -H /home/homeassistant/ha/bin/hass
Die projektbegleitende Dokumentation [3] liefert darüber hinaus eine ausführliche Beschreibung, wie ein Nutzer die Software am besten konfiguriert, damit sie auch nach einem Reboot automatisch wieder hochfährt.
Beim ersten Start legt Home Assistant eine Beispielkonfigurationsdatei in »/home/homeassistant/.homeassistant/configuration.yaml« ab, die sich der Anwender am besten in einer ruhigen Minute zu Gemüte führt. Das hilft ihm sinnvolle Werte für die Zeitzone und den Ort des eigenen Home-Automation-Setups festzulegen. Home Assistant installiert dann noch einige zusätzliche Python-Pakete und wartet am Ende unter dem Port 8123 und der lokalen IP-Adresse auf Browser-Anwender.
Erstausstattung für die eigene Wohnung
Eine Vielzahl an Geräten erkennt Home Assistant dank Auto Discovery [4] ohne vorherige Konfiguration ganz von selbst. Um die Sache noch einfacher zu gestalten, bietet das Programm dem Admin zugleich an, die erkannten Geräte einzurichten (Abbildung 2).

Abbildung 2: Home Assistant hat eine Philips-Hue-Basisstation entdeckt und will diese konfigurieren.
Komponentenkleber
Nahezu alle Features von Home Assistant stecken dabei in so genannten Components. Diese liefern beispielsweise Unterstützung für die einzelnen Geräte, helfen aber auch bei allgemeinen Aufgaben wie dem Ausführen von Automationsregeln. Wer in der Bibliothek mit über 600 mitgelieferten Components nicht fündig wird, kann die eigene Hardware auch mit etwas zusätzlichem Programmieraufwand über eines der generischen Protokolle (MQTT, HTTP und weitere) anbinden.
Für meinen Geigerzähler, der seine Werte über eine serielle Schnittstelle liefert, habe ich etwa einen kleinen Webservice geschrieben, der aktuelle Strahlungswerte als Json-Dokument ausgibt, auf das Home Assistant dann zugreift.
Gruppendynamik
Um den Überblick über die eigenen Sensoren, Lampen und anderen Geräte zu bewahren, bietet es sich an, diese bereits von Anfang an in Gruppen zu sortieren. Im Webfrontend dienen diese dann als optische Orientierungshilfen. Dazu erweitert der Automatisierer die »configuration.yaml«-Datei am Ende um die Zeilen aus Listing 2 und startet Home Assistant anschließend neu.
Listing 2
configuration.yaml
01 group: 02 bedroom: 03 name: Bedroom 04 entities: 05 - sensor.temperature_bedroom 06 - sensor.humidity_bedroom 07 - light.bedroom
Die Namen der eigenen Geräte (hier etwa »sensor.temperature_bedroom«) tauchen in der »States«-Ansicht unterhalb der Developer Tools auf. Dabei gibt der erste Teil des Namens den Gerätetyp an, der zweite Teil einen konfigurierbaren, individuellen Bezeichner für ein bestimmtes Gerät.
Es werde Licht
Für die ersten Gehversuche mit Home Assistant genügt es vollkommen, einzelne Geräte mit dem Browser steuern zu können. Doch auf Dauer will sicherlich niemand abends umständlich nach seinem Tablet suchen (Abbildung 3), um das Licht anzuschalten.
Nach der Installation lassen sich daher direkt erste Automatismen konfigurieren. Hierfür benötigt der Anwender im einfachsten Fall einen Sensor, der ein bestimmtes Ereignis feststellen kann, und definiert im nächsten Schritt eine Aktion, die Home Assistant dann ausführt. Die Standardkonfiguration hält beispielsweise einen Sensor parat, der den Sonnenstand misst. Darauf basierend reguliert die Automationsregel aus Listing 3 die Beleuchtung abhängig von der Außenhelligkeit.
Listing 3
Helligkeitssensor
01 automation: 02 alias: Licht anschalten, sobald die Sonne untergeht 03 initial_state: True 04 hide_entity: False 05 trigger: 06 platform: sun 07 event: sunset 08 condition: 09 condition: time 10 weekday: 11 - sat 12 - sun 13 action: 14 service: light.turn_on
Das »trigger«-Attribut gibt an, welches Ereignis diese Regel auslösen soll. Wahlweise gibt der Entwickler mit dem »condition«-Attribut weitere Bedingungen an, die erfüllt sein müssen, damit die Regel greift. Das »action«-Attribut beschreibt schließlich eine oder mehrere Aktionen, die Home Assistant in die Tat umsetzen soll.
Will der Admin nicht warten, bis die Sonne untergeht, löst er im Browser alle Automationsregeln manuell aus. Das gelingt ihm per Klick auf die Namen. So testet er, ob sich das gewünschte Verhalten einstellt. Zusätzlich findet er über das integrierte Logbook heraus, wann und weshalb Home Assistant bestimmte Aktionen ausführt. Einzelne Regeln kann er gezielt vorübergehend deaktivieren, um etwa zu verhindern, dass die Heizung unnötig anspringt, wenn niemand zu Hause ist (Abbildung 4).

Abbildung 4: Dank der Oberfläche von Home Assistant sieht der Admin für jede Automationsregel, ob sie gerade aktiv ist.
Unterschiedliche Aktionen fasst Home Assistant auf Wunsch mit Hilfe so genannter Szenen zusammen, um beispielsweise mehrere Lampen zeitgleich anzusteuern. Das hilft auch deshalb, weil die Automationsregeln stets nur eine einzelne Aktion aufnehmen. Diese darf jedoch Teil einer Szene sein. Darüber hinaus tauchen Szenen im Webfrontend auf, wo sie der Benutzer auf Wunsch manuell auslöst.
Ortsbasierte Automationsregeln
Als weiteres, zentrales Feature legt Home Assistant zudem geografische Zonen fest (beispielsweise »Zuhause«, »Arbeit«). Die Software löst Ereignisse aus, sobald bestimmte Benutzer diese Zonen betreten oder wieder verlassen. Die Zonen definiert der Administrator dabei über Längen- und Breitengrade sowie einen Radius (Listing 4).
Listing 4
Geografische Zonen festlegen
01 zone: 02 name: Zuhause 03 latitude: 49.4539403 04 longitude: 11.063318 05 radius: 100
Damit Home Assistant erkennt, ob sich die Benutzer in einer der definierten Zonen befinden, greift es auf Lokalisierungsdienste wie Find my iPhone [5] und GPS-Logger [6] zurück, um die genaue Position bestimmter Mobilgeräte ausfindig zu machen.
Mit den beiden Ereignistypen »leave« und »enter« löst der Admin nun nach Belieben Aktionen aus. Das Beispiel in Listing 5 zeigt, wie er das Ausschalten der Beleuchtung automatisiert, sobald ein bestimmtes Gerät – im Beispiel mein Mobiltelefon – die »Home«-Zone verlässt. Auf einer Übersichtsseite verfolgt der Administrator anhand einer Openstreetmap-Karte, ob sich gerade jemand in der spezifischen Zone aufhält (Abbildung 5). Zusätzlich verrät das Log ihm auch rückwirkend, wann Home Assistant Übergänge zwischen den einzelnen Zonen erkannt hat.
Listing 5
Zonenalarm
01 automation: 02 alias: Wohnung verlassen 03 trigger: 04 platform: zone 05 entity_id: device_tracker.frost 06 zone: zone.home 07 event: leave 08 action: 09 service: scene.turn_on 10 entity_id: scene.blackout

Abbildung 5: Über die integrierte Karte lassen sich die bei Home Assistant registrierten Mobilgeräte orten.
Fazit
Mit seiner sanften Lernkurve bietet Home Assistant einen einfachen Einstieg in die Heimautomatisierung. Auch Linux-Anwender, die sich mit diesem weit gefassten Themenkreis noch nicht beschäftigt haben, richten Home Assistant mit einigen Linux-Grundkenntnissen innerhalb weniger Minuten ein. Hierbei helfen auch die ausführliche Dokumentation und eine klar strukturierte Konfiguration an zentraler Stelle. Dank ihnen winken schon nach einer kurzen Orientierungsphase erste Erfolge.
Seine wahre Stärke entfaltet Home Assistant jedoch aufgrund der Vielfalt an unterstützter Hardware: Die schaltet der Admin mit etwas Planung durch individuelle Regeln zu einem Gesamtsystem zusammen. Lediglich der zeitliche und finanzielle Rahmen setzen der eigenen Fantasie Grenzen. Es passiert aber schnell, dass Bastler mehr Zeit in das eigene Home-Automation-System stecken, als sie am Ende jemals sparen.
Andererseits ist es doch ein recht erhebendes Gefühl, wenn mir dank Zimmer-genauer Ortsbestimmung (bei mir mit zusätzlichen Bluetooth-Beacons) Licht und Musik wie von Geisterhand gesteuert folgen und ich mich stattdessen auf die mir wirklich wichtigen Dinge konzentrieren kann.
Infos
-
Home Assistant: https://home-assistant.io
-
Proxmox VE: https://www.proxmox.com/de/proxmox-ve
-
Dokumentation: https://home-assistant.io/docs/autostart/
-
Auto Discovery: https://home-assistant.io/components/discovery/
-
Find my iPhone: https://support.apple.com/explore/find-my-iphone-ipad-mac-watch
-
GPS-Logger: https://play.google.com/store/apps/details?id=com.mendhak.gpslogger&hl=de







