Home Assistant in Docker op een Synology NAS

Update 2021

Dit blog was oorspronkelijk in 2018 gepubliceerd. In januari 2021 heb ik dit blog bijgewerkt zodat alles weer helemaal up-to-date is.

Eind 2017 heb ik een Synology DS918+ NAS aangeschaft als vervanging van een Synology DS213 NAS. Naast meer disken, meer geheugen en een betere cpu kan ik nu ook Docker containers draaien. Tijd om Home Assistant te verhuizen naar mijn NAS!

In dit blog zal ik ingaan op de details om Home Assistant vlekkeloos in Docker op een Synology NAS te draaien. Hierbij zal ik Home Assistant installeren en configureren, zal ik laten zien hoe je een P1 usb-kabel werkend krijgt (voor het uitlezen van een slimme meter) en zal ik laten zien hoe je Docker containers automatisch up-to-date houdt.

Home Assistant dashboard

Voorbereidingen

Voordat je begint is het natuurlijk belangrijk dat je NAS ondersteuning biedt voor Docker. Kijk hiervoor in “Package center” en zorg dat je de meest recente versie hebt draaien (18.09 op het moment van schrijven). Wees bewust dat bepaalde oude versies van Docker beperkingen kennen en je mogelijk tegen problemen aan gaat lopen als je niet update. Kan je Docker niet vinden in package center? Controleer dan op de Synology website of je NAS ondersteund wordt.

Home Assistant installeren

Open de Docker interface op je Synology, zoek onder “Registry” naar “homeassistant” en download de “homeassistant/home-assistant” image. Lanceer nu een nieuwe container op basis van deze image en configureer deze als volgt;

Advanced settings

  • Enable auto-restart

Volume

  • Maak een directory aan in de Docker share genaamd “HomeAssistant” (als voorbeeld) en configureer een volume van “docker/HomeAssistant” op “/config” (hiermee wordt de configuratie buiten de container opgeslagen)

Network

  • Vink “Use the same network as Docker Host” aan voor de meest eenvoudig opzet, hierbij werken zaken als het automatisch vinden van apparaten zoals Hue binnen je netwerk out of the box.

Environment

  • Maak een variable “TZ” met waarde “Europe/Amsterdam”

Start de container en bezoek Home Assistant op poort 8123 (de standaard poort).

Home Assistant configureren

Nadat je Home Assistant voor het eerst start zal een basis configuratie in de eerder aangemaakte directory (docker/HomeAssistant) geplaatst worden. Je kan deze nu in je favoriete editor aanpassen. Op dit punt wijkt het werken met Home Assistant niet af ten opzichte van een reguliere installatie. Zie de Home Assistant documentatie voor het configureren van al je apparaten.

Toegang tot slimme meter

Ik gebruik een zogeheten P1 kabel om mijn slimme meter uit te lezen. Om dit werkend te krijgen zijn enkele minimale aanpassingen aan de NAS nodig. Vervolgens kan je binnen Home Assistant informatie zoals hieronder naar voren toveren.

P1 kabel gegevens

Standaard worden een aantal kernel modules niet geladen die nodig zijn om de aangesloten USB kabel te gebruiken binnen Docker. De modules zijn gelukkig wel aanwezig en kunnen middels een simpel scriptje automatisch geladen worden tijdens het booten van de NAS. Controleer voordat je begint of deze aanpassingen daadwerkelijk nodig zijn, je doet dit door het volgende command te draaien na inloggen via SSH;

ls /dev/ttyUSB*

Krijg je de melding “No such file or directory” dan is het nodig onderstaande stappen uit te voeren.

  • Maak een shell script genaamd “/usr/local/etc/rc.d/startup.sh”
  • Neem de volgende code op in het shell script
#!/bin/bash
insmod /lib/modules/usbserial.ko
insmod /lib/modules/ftdi_sio.ko

Sla het bestand op, maak deze executable (chmod 755) en reboot de NAS. Als je nu opnieuw het eerdere controle commando uitvoert dan zou je bijv. “/dev/ttyUSB0” moeten zien.

Het is nu zaak om de Docker container te configureren zodat deze /dev/ttyUSB0 gaat gebruiken. Dit is helaas niet in te stellen via de Synology interface, maar dit is zonder problemen via de terminal aan te passen. Hiervoor gooien we eerst de Docker container weg (dit kan via de Synology interface of de terminal) en maken deze met onderstaand commando opnieuw aan.

sudo docker run -d \
  --name="homeassistant" \
  -v /volume1/docker/HomeAssistant:/config \
  --device /dev/ttyUSB0:/dev/ttyUSB0 \
  --net=host \
  -e TZ=Europe/Amsterdam \
  homeassistant/home-assistant:latest

Je zal na het uitvoeren van bovenstaand commando weer netjes een draaiende container zien verschijnen binnen de Synology interface. Je kan die vervolgens naar hartelust aanpassen.

Altijd up-to-date

Home Assistant wordt regelmatig bijgewerkt met updates en nieuwe features. Persoonlijk vind ik het prettig altijd de laatste versie te draaien, en het liefst zonder daar omkijken naar te hebben. Hiervoor gebruik ik Watchtower, een kleine Docker image welke automatisch zorgdraagt dat alle (dit is te configureren) containers worden bijgewerkt naar de meest recente versie.

sudo docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e TZ=Europe/Amsterdam \
  containrrr/watchtower \
  --cleanup \
  --include-restarting

Standaard zal vanaf nu iedere dag een controle plaatsvinden op nieuwe versies van alle Docker images. Als een nieuwe versie is gevonden zal die automatisch worden binnengehaald en wordt de container bijgewerkt. Je kan vele opties aan Watchtower meegeven (zoals de interval, maar ook dat bijv. enkel ’s nachts mag worden gecontroleerd), zie daarvoor de documentatie.

Klaar!

Dat was het alweer, je hebt met een paar kleine handelingen de Docker release van Home Assistant draaien op je NAS. En als bonus wordt deze automatisch bijgewerkt naar de laatste release, wat wil een mens nog meer ;)