Als Angesteller einer IT- und Management-Beratung beschäftige ich mich viel mit den Themen Cloud, Microservices und dem Internet der Dinge.
Im privaten Umfeld stehen die verwandten Themen Heimautomatisierung und Smart Home
im Fokus. Eine sehr gute Basis dafür sind ein Raspberry Pi 3, Docker und Home Assistant …
In den letzten beiden Jahren habe ich viel Zeit (und Geld) in die Vernetzung unseres Heims gesteckt. Bereits vorhandene Gerätschaften (wie Computer, AV-Receiver und Fernseher) wurden um neue Aktoren
zum Schalten und Sensoren zum Messen ergänzt.

Im Mittelpunkt der Installation stehen dabei ein Raspberry Pi 3 und Home Assistant.
Raspberry Pi 3
Der Raspberry Pi 3 ist die ideale Plattform für Heimautomatisierung, nicht nur für Home Assistant. Er ist ausreichend schnell, bietet ausreichend Speicher und seine USB- und GPIO-Ports können für die Anbindung diverser Systeme und Standards (ZWave, Zigbee) genutzt werden. Außerdem verbraucht er minimal Strom und kann daher ohne Belastung des Öko-Gewissens 24/7
betrieben werde.
Dieser Artikel geht entsprechend davon aus, dass ein Raspberry Pi 3 mit einem aktuellen Raspbian Linux versorgt wurde und im heimischen Netz via LAN der WLAN erreichbar ist. Für Unterstützung bei der Einrichtung kann auf meine anderen Artikel zu diesem Thema zurückgegriffen werden.
Die Zusammenführung der teilweise isolierten Systeme übernimmt dabei die Software Home Assistant. Es gibt viele Wege Home Assistant auf einem Raspberry Pi zu installieren und alle sind hervorragend dokumentiert. Allerdings habe ich mich weder für eine direkte Installation via pip, noch für die Verwendung von hass.io entschieden, sondern für einen Mittelweg: Docker.
Docker
Der Grund ist einfach: Ich verwende auf dem Raspberry Pi Raspbian, also ein Debian Derrivat. Und die Paketverwaltung von Debian ist apt. Die Verwendung anderer Paketmanager, wie pip für Python oder npm für NodeJS, führt m.E. nur zu Chaos.
Andererseits möchte ich den Raspi
nicht in eine Appliance
verwandeln, sondern durchaus auch mit anderen Aufgaben bedenken. Ansätze wie HASS.IO oder Hassbian erschwerden dies durch die notwendige Abschottung des unterliegenden Betriebssystems.
Software, welche nicht per apt zur Verfügung steht wird also in einem Docker Container betrieben, um die Auswirkungen auf das Hostsystem zu minimieren.
Installation von Docker
Docker ist aktuell in den Raspbian Repositories vorhanden (Paket docker.io) und könnte somit direkt via apt installiert werden. Doch die Entwicklung von Docker läuft schneller als die Release-Zyklen von Raspbian, so dass ich das offizielle
Docker-Respository nutze, um die aktuellste Version via apt installieren zu können.
$ curl -sSL https://get.docker.com | sh
Wer sich in das ausgeführte Skript einarbeitet erkennt, dass hier lediglich die Schritte zur Anbindung des Docker Debian Respositories inkl. GPG-Key Download automatisiert werden. Sie können alle auch manuell ausgeführt werden, aber das Skript ist einfach convenient
.
Damit wir docker als regulärer Benutzer ohne sudo ausführen können, fügen wir – wie empfohlen – den aktuellen Benutzer der Gruppe docker hinzu. Der hier bespielhaft genannte Account pi ist durch den tatsächlichen Benutzernamen zu ersetzen:
$ sudo usermod -aG docker pi
Nach einer Ab- und Anmeldung sollte sich nun ein erster Docker Container ausführen lassen:
$ docker run --rm hello-world
Home Assistant
Nun da Docker einsatzbereit ist, können wir Home Assistant installieren und im Container betreiben. Für diese Einführung belasse ich die Konfiguration von Home Assistant unverändert, d.h.:
- es wird die integrierte SQLite Datenbank verwendet
- die Home Assistant Oberfläche ist auf Port 8123 zu erreichen
- die discovery-Komponente durchsucht das lokale Netz nach bekannten IoT-Geräten
Installation von Home Assistant mit Docker
Docker Container sind vergänglich (ephemeral
), ebenso wie die in ihnen verwendeten Daten. Um Konfiguration und andere Laufzeitdaten zu persistieren, müssen wir Docker einen Platz zum Speichern außerhalb des Containers zuweisen. Dort wird Home Assistant seine initiale Konfiguration erzeugen und dauerhaft verwenden.
Zunächst erstellen wir ein lokales Verzeichnis (der Name ist beliebig):
$ cd ~
$ mkdir home-assistant
Anschließend starten wir unseren Container auf Basis des offiziellen Home-Assistant Images für den Raspberry Pi 3:
$ docker run -d \
--name=hass --net=host --restart=always \
-v $PWD/home-assistant:/config \
-v /etc/localtime:/etc/localtime:ro \
homeassistant/raspberrypi3-homeassistant:latest
Durch obigen Befehl wird die aktuelle Version des Docker Image (und seine Basis) von Home Assistant für Raspberry Pi 3 heruntergeladen und ein darauf aufbauender Container namens „hass“ wird gestartet. Das lokale Verzeichnis home-assistant und die Zeitzone werden in den Container eingebunden. Die genaue Bedeutung der Parameter kann per $ docker run --help ermittelt werden.
Der Vorgang dauert ein wenig, aber nach einigen Sekunden sollte das Web-Interface von Home Assistant über den DNS-Namen oder die IP-Adresse des Raspberry zugänglich sein, z.B. http://raspberrypi:8123/.

Der tatsächliche Inhalt des Willkommen-Bereichs kann sich unterscheiden, da die in Home Assistant enthaltene Discovery Komponente möglicherweise Geräte (z.B. Philips Hue, Google Home oder Sonos Lautsprecher) bereits aufgespürt und eingebunden hat.
Konfiguration von Home Assistant
Das lokale Verzeichnis (home-assistant) wurde dem Container zur Verfügung gestellt. Entsprechend hat Home Assistant hier seine initiale Konfiguration abgelegt. Da der Container mit den Rechten des aktuellen Benutzers gestartet wurde, sind auch die Konfigurationsdateien in seinem Besitz. So kann jetzt mit einem Editor (z.B. vi oder nano) die grundsätzliche Konfiguration unter home-assistant/configuration.yaml bearbeitet werden. Beispielhaft kann der Eintrag „introduction:“ (ca. Zeile 17) entfernt werden, um den Einführungstext zu verwerfen.
Neustart von Home Assistant
Bei Änderung der Core
-Konfiguration ist Home Assistant neu zu starten. Auch wenn dies über die Web-Oberfläche möglich ist (unter Einstellungen
), ist der Neustart des Docker Containers oft die schnellere Lösung:
$ docker restart hass
Aktualisierung des Containers
Etwa alle 2 Wochen erscheint eine neue Version von Home Assistant, dazwischen werden Minor Releases
mit Korrekturen veröffentlicht. Auch die Docker Images werden dabei zeitnah aktualisiert und können für neue Container-Instanzen verwendet werden. Existierende Container verwenden jedoch immer ihr ursprüngliches Image, daher ist die laufende Instanz zunächst zu löschen (keine Sorge, die Konfiguration im lokalen Verzeichnis bleibt bestehen):
$ docker rm -f hass
Anschließend kann ein neuer Container wie oben beschrieben gestartet werden.
Fazit
Der Einstieg in die Heim-Automatisierung ist einfach und kostengünstig möglich. Viele Geräte im Haushalt sind bereits netzwerk-fähig und können über diese Schnittstelle überwacht oder gesteuert werden. Andere dienen als einfache Sensoren, so kann ein Router zur Erkennung anwesender Mobiltelefone beitragen. Und nicht zuletzt existiert bereits eine Fülle von Internet-Diensten, welche als Signale in der Steuerung des Smart Home genutzt werden können.
Home Assistant ist eine einfach zu installierende und leicht zu verwendende Software, welche wie geschaffen für einen Raspberry Pi (3) ist. Die gute Dokumentation und eine aktive Community erleichtern den Einstieg und stehen für Fragen und Ratschläge zur Verfügung.
Weiterführende Informationen
Software und Dokumentation
- Home Assistant
- Home Assistant: Getting Started
- Home Assistant: HASS.IO
- Home Assistant Forum
- Raspbian Linux
- Raspberry Pi 3 Modell B für USB Boot vorbereiten
- Raspberry Pi Zero W
headless
Setup – so geht’s - Docker Comes to Raspberry Pi
- Home Assistant: Docker Image für Raspberry Pi 3
Produkte*
Die folgenden Produkte wurden im Artikel besprochen bzw. verwendet:
Schreibe einen Kommentar