Home Assistant oder kurz HASS ist ein in Python geschriebene Software zur Haus-Automation. Sie bietet die Möglichkeit eine Vielzahl von Smart Home Geräten einzubinden. Durch sein Web Interface ist Home Assistant auf jeder erdenklichen Plattformen ohne besondere App nutzbar. Lediglich ein Browser wird benötigt.
Dieses Tutorial befasst sich mit der Installation von Home Assistant auf einem Gentoo System. Da HASS nicht im Portage Tree enthalten ist (Stand 12/2018) dachte ich mir, dass eine Anleitung speziell für Gentoo bestimmt nützlich ist.
Installation in einem virtuellen Umgebung
Da Home Assistant in Gentoo nicht offiziell unterstützt wird, habe ich mich für eine Installation in einer virtuellen Umgebung entschieden. Dabei laufe ich keine Gefahr mein bestehendes System ungewollt zu verändern oder gar zu beschädigen.
Die Installation läuft eigentlich konform zur offiziellen Installations-Anleitung von Home Assistant.
Für die Installation wird mindestens Python 3.5.3 benötigt, welches bei Gentoo sowieso bereits installiert sein sollte. Für die Paketinstallation wird der PIP Paketmanager benutzt. Sollte dieser nicht bereits installiert sein, macht wir dies nun.
emerge -a dev-python/pip
In Portage ist aktuell nur eine veraltete Version von PIP verfügbar, aber diese reicht vollkommen für die Installation aus. Die Warnungen diesbezüglich bei der Installation kann man ignorieren.
Legen wir mal mit der eigentlichen Installation los!
Zuerst erstellen wir die virtuelle Umgebung:
python3 -m venv /opt/hass
Ihr könnt hier einen beliebigen Pfad wählen. In meinem Fall habe ich „/opt/hass“ gewählt.
Danach wechseln wir in die virtuelle Umgebung:
cd /opt/hass source bin/activate
Wir befinden uns nun in der virtuellen Umgebung und können die notwendigen Pakete installieren.
python3 -m pip install wheel python3 -m pip install homeassistant
Der letzte Befehl installiert Home Assistant mit allen Abhängigkeiten. Die Installation ist hiermit abgeschlossen. Weiter geht es mit der Einrichtung eines Benutzers, welcher HASS ausführen soll.
Benutzer anlegen
Ich brauche denk ich nicht zu erwähnen, dass es sicherlich keine gute Idee ist, irgendwelche Software als „root“ auszuführen! Um diesem Sicherheitsfiasko zu entgehen legen wir uns einen Benutzer speziell für Home Assistant an. Der Benutzername ist natürlich frei wählbar.
groupadd hass useradd -m -g hass -s /bin/bash hass
Danach passen wir die Berechtigungen auf unsere virtuelle Umgebung an:
chown -R hass:hass /opt/hass
Ist das erledigt machen wir weiter mit dem Starten und Beenden des HASS Dienstes.
Home Assistant zum Systemstart hinzufügen
Da Home Assistant nicht in Portage vorhanden ist, gibt es natürlich kein fertiges Init Script. Ich habe das offizielle Init Script für OpenRC angepasst und auch ein zugehöriges Config File erstellt, welche ich euch hier zur Verfügung stelle.
Erstellt euch die Datei „/etc/conf.d/hass“ mit folgendem Inhalt:
# User running homeassistant RUN_AS_USER="hass" # PID file for homeassistant PID_FILE="/var/run/hass.pid" # Path to virtual environment INSTALL_DIR="/opt/hass" # Config directory CONFIG_DIR="/home/hass/hass_config"
In dieser Datei könnt Ihr alle relevanten Einstellungen vornehmen. Habt Ihr einen anderen Installationspfad oder Benutzernamen gewählt, müsst Ihr dies natürlich in dieser Datei entsprechend anpassen.
Danach wird die Datei „/etc/init.d/hass“ erstellt:
#!/sbin/openrc-run # Settings PRE_EXEC="cd $INSTALL_DIR && python3 -m venv . && source bin/activate &&" HASS_BIN="hass" FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --daemon" REDIRECT="> $CONFIG_DIR/home-assistant.log 2>&1" depend() { need net need localmount } start() { ebegin "Starting Home Assistant" install if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then echo 'Service already running' >&2 return 1 fi local CMD="$PRE_EXEC $HASS_BIN $FLAGS $REDIRECT;" su -s /bin/bash -c "$CMD" $RUN_AS_USER eend $? } stop() { ebegin "Stopping Home Assistant" if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then echo 'Service not running' >&2 return 1 fi kill $(cat "$PID_FILE") while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done; echo 'Service stopped' >&2 eend $? } install() { echo "999999" > $PID_FILE chown $RUN_AS_USER:$RUN_AS_USER $PID_FILE mkdir -p $CONFIG_DIR chown $RUN_AS_USER $CONFIG_DIR }
Vergesst nicht das Script ausführbar zu machen:
chmod +x /etc/init.d/hass
Nun könnt Ihr in gewohnter OpenRC Manier den HASS Daemon starten und stoppen.
Um Home Assistant beim Systemstart automatisch zu starten fügen wir diesen zum Default Run-Level:
rc-update add hass default
Um mit der Einrichtung fortzufahren starten wir Home Assistant nun:
/etc/init.d/hass start
Beim ersten Start kann es ein wenig länger dauern, also nicht wundern! Danach geht es weiter mit der Einrichtung von Home Assistant selbst.
Einrichtung von Home Assistant
Wir öffnen nun die Adresse http://hostname:8123 im Browser Deiner Wahl um Home Assistant einzurichten. Der Hostname ist entsprechend anzupassen.

Beim ersten Start von Home Assistant ist einmalig ein Benutzer (Administrator) anzulegen. Sobald wir dies getan haben kann man mit der weiteren Einrichtung von Home Assistant fortfahren, was aber nicht Bestandteil dieses Tutorials sein soll. Hierfür plane ich weitere separate Tutorials.
Sicherheit
Der aktuelle Stand der Installation sollte nur in einem lokalen Netzwerk betrieben werden. Wenn man Zugriff von außerhalb auf Home Assistant haben möchte sollte man über eine Absicherung der Verbindung nachdenken. Hierfür gibt es verschiedene Möglichkeiten:
- Nginx / Apache Proxy mit HTTPS
- VPN
- SSH
In meinem Fall verbinde ich mich über ein VPN mit dem heimischen Netzwerk.
Hiermit ist dieses Tutorial abgeschlossen. Ich hoffe es war hilfreich für euch! Wenn Ihr mich unterstützen wollt, könnt ihr das sehr gerne hier tun.
Home Assistant gibts auch als Ebuild:
https://git.edevau.net/onkelbeh/HomeAssistantRepository bzw.
https://github.com/onkelbeh/HomeAssistantRepository
Alle notwendigen Python Module sind in portage, falls was fehlt, bitte Info.