ErikdeVries.com

Pagina’s


Blog categoriëen


Home Assistant in Docker op een Synology NAS

Erik de VriesErik de Vries

Recent heb ik een Synology DS918+ NAS aangeschaft. 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.

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 (17.05 op het moment van schrijven). Let op dat de oude 1.11 release een aantal beperkingen heeft en je waarschijnlijk tegen allerlei problemen aan gaat lopen als je niet update. Kan je Docker niet vinden in package center? Controleer op https://www.synology.com/nl-nl/dsm/packages/Docker of je NAS ondersteund wordt.

Home Assistant container

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

Volumes

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

Check “Use the same network as Docker Host” voor de meest eenvoudig opzet, hierbij werken zaken als het automatisch vinden van devices (zoals Hue en Google Cast apparaten) 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.

Toegang tot P1 kabel op USB-poort

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

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;

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

#!/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.

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

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.

docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  v2tec/watchtower

Standaard zal vanaf nu iedere 5 minuten een controle plaatsvinden op nieuwe versies van een Docker image. 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 ;)

Zoals te verwachten is mijn naam Erik de Vries. Op 16 maart 1981 ben ik in Amersfoort geboren, waar ik nog steeds woon. In 2010 heb ik de studie Human Media Interaction aan de Universiteit Twente afgerond, waarmee een eind is gekomen aan een lange periode van “school” gaan. Tegenwoordig werk ik bij Enrise waar ik samen met collega’s hoogwaardige internettoepassingen zoals apps, API’s, zoeksystemen, sites, shops & portals ontwikkel. Tevens heb ik een eenmanszaak waarin ik internetdiensten ontwikkel.

Reacties 8
  • Mediacj
    Geplaatst op

    Mediacj Mediacj

    Beantwoorden Auteur

    Bedankt voor deze uitleg het werkt perfect ook voor Domoticz!!


  • Wim
    Geplaatst op

    Wim Wim

    Beantwoorden Auteur

    Hey Erik, ik heb exact dezelfde setup als jij. Bij het installeren van DSMR via “pip install dsmr-parser” krijg ik veel foutmeldingen:

    Requirement already satisfied: dsmr-parser in /usr/local/lib/python3.6/site-packages (0.11)
    Requirement already satisfied: pyserial=3 in /usr/local/lib/python3.6/site-packages (from dsmr-parser) (3.1.1)
    Requirement already satisfied: pyserial-asyncio<1 in /usr/local/lib/python3.6/site-packages (from dsmr-parser) (0.4)
    Requirement already satisfied: pytz in /usr/local/lib/python3.6/site-packages (from dsmr-parser) (2018.4)
    Requirement already satisfied: PyCRC=1.2 in /usr/local/lib/python3.6/site-packages (from dsmr-parser) (1.21)
    wirelesstagpy 0.3.0 has requirement colorlog==3.0.1, but you’ll have colorlog 3.1.4 which is incompatible.
    waterfurnace 0.4.0 has requirement websocket-client>=0.46, but you’ll have websocket-client 0.37.0 which is incompatible.
    upsmychoice 1.0.6 has requirement beautifulsoup4==4.5.1, but you’ll have beautifulsoup4 4.6.0 which is incompatible.

    et cetera.

    Heb jij enig idee waar dat aan kan liggen?


    • Erik de Vries
      Geplaatst op

      Erik de Vries Erik de Vries

      Beantwoorden Auteur

      Draai je Home Assistant net als ik in Docker? Aangezien je in dat geval niets hoeft te doen met deze pip module. Mocht je Home Assistant (buiten Docker om) hebben geïnstalleerd dan kan je adviseren dit toch eens een kans te geven, het grote voordeel (imho) is dat je helemaal niets aan je NAS hoeft te configureren (behalve in dit geval dan die modules voor de USB verbinding).


  • Christ
    Geplaatst op

    Christ Christ

    Beantwoorden Auteur

    Hallo Erik,

    Duidelijk en werkt goed samen met mijn eigen sensors!


  • Sander
    Geplaatst op

    Sander Sander

    Beantwoorden Auteur

    Hoi Erik,

    Beetje een NOOB vraag, vermoed ik:
    Ik krijg de container aan de praat, maar hij vangt het signaal van mijn ttyUSB0 niet af. Bij ls -l krijg ik:
    crw——- 1 root root 188, 0 Oct 22 08:12 /dev/ttyUSB0
    Vermoed dat ik hier nog iets mee moet, maar wil de container niet onder hoge bevoegdheden draaien. Heb jij een oplossing?


    • Erik de Vries
      Geplaatst op

      Erik de Vries Erik de Vries

      Beantwoorden Auteur

      Heb je de container op de manier gestart zoals ik dat doe? (dus vanuit de terminal en dan met –device /dev/ttyUSB0:/dev/ttyUSB0). Op die manier werkt het probleemloos bij mij, ik heb de container dus niet gestart via de Synology interface.


  • Bob Walberg
    Geplaatst op

    Bob Walberg Bob Walberg

    Beantwoorden Auteur

    Erik,
    Bij het tapje netwerk probeer ik Gebruik zelfde netwerk als Docker host aan te vinken maar dan krijg ik de melding: U kunt geen lid worden van andere netwerken door gebruik te maken van hetzelfde netwerk als Docker host. Overigens staat bij mij daarboven bij netwerknaam Bridge (wat ook niet te verwijderen is.


    • Erik de Vries
      Geplaatst op

      Erik de Vries Erik de Vries

      Beantwoorden Auteur

      Die melding is geen enkel probleem, het betekent enkel dat de HomeAssistant container niet bij andere (virtuele) Docker netwerken kan, wat geen enkel probleem is. Na dit aan te vinken zal HomeAssistant beschikbaar zijn op poort 8123 (let wel op dat geen van de benodigde poorten door een andere container in gebruik is, dat zal je echter snel genoeg merken bij het starten van HomeAssistant)