ErikdeVries.com

Pagina’s


Blog categoriëen


Home Assistant in Docker op een Synology NAS

Erik de VriesErik de Vries

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.

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 19
  • 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)


  • Arne
    Geplaatst op

    Arne Arne

    Beantwoorden Auteur

    Dag Erik,
    Ik heb een DS718+ met DSM 6.2.1-23824 Update 4.
    Home assistant krijg ik werkend in een docker, dat is geen probleem. USB toegang krijg ik niet niet voor elkaar.

    Ik loop ergens vast:
    ls /dev/ttyUSB* resulteert in “No such file or directory”
    startup.sh heb ik aangemaakt zoals jij beschrijft, en ook eens geprobeerd met de extra regels zoals in de post waar je naar verwijst:
    sudo insmod /lib/modules/usbserial.ko
    sudo insmod /lib/modules/ftdi_sio.ko
    sudo chmod 777 /lib/modules/usbserial.ko
    sudo chmod 777 /lib/modules/ftdi_sio.ko

    Na opnieuw opstarten geeft ls /dev/ttyUSB* echter nog altijd geen resultaat. Er staat ook geen ttyACM0 tussen, zoals hier en daar beschreven wordt. (De lijst loopt van tty tot ttyzf)

    Alle SSH commando’s voer ik wel uit als “admin” user, niet als “root”. Om de een of andere reden kan ik niet inloggen als root (password zou hetzelfde moeten zijn, maar dat wil hij niet).

    Waar moet ik beginnen met zoeken?
    Alvast bedankt!


    • Erik de Vries
      Geplaatst op

      Erik de Vries Erik de Vries

      Beantwoorden Auteur

      Ter controle, is het shell script ook executable gemaakt? Dit doe je door (sudo) chmod +x /usr/local/etc/rc.d/startup.sh

      Het is overigens niet nodig (of wenselijk) om de rechten van de files in /lib/modules aan te passen, je kan die twee bestanden (usbserial.ko en ftdi_sio.ko) weer met chmod 644 (rw – r – r) aanpassen zodat ze weer zoals origineel zijn (sudo chmod 644 /lib/modules/usbserial.ko en sudo chmod 644 /lib/modules/ftdi_sio.ko)


      • Arne
        Geplaatst op

        Arne Arne

        Beantwoorden Auteur

        Dag Erik,
        Dank voor je reactie.
        Ik heb “sudo chmod 755 startup.sh” gedaan, terwijl ik in de juiste map stond. Daarop volgt geen foutmelding, maar ook geen bevestiging oid.
        Hoe weet ik nu of het gelukt is? Is dat te controleren?
        Alvast bedankt!


  • Arne
    Geplaatst op

    Arne Arne

    Beantwoorden Auteur

    Dag Erik,
    Dank voor je antwoord. De twee extra regels heb ik weer verwijderd. Terug naar de situatie zoals jij beschrijft. Vervolgens wil ik checken of de file executable is: Na commando ls -l krijg ik de volgende respons:
    total 4
    -rwxr-xr-x 1 root root 86 Feb 7 19:51 startup.sh

    Na nogmaals een reboot is er niks veranderd. Nog geen ttyUSB* te vinden.

    Googlen levert wel het interessante commando : sudo lsusb
    |__usb1 1d6b:0002:0404 09 2.00 480MBit/s 0mA 1IF (Linux 4.4.59+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub
    |__1-4 f400:f400:0100 00 2.00 480MBit/s 200mA 1IF (Synology DiskStation 7F008A5818CA6049)
    |__usb2 1d6b:0003:0404 09 3.00 5000MBit/s 0mA 1IF (Linux 4.4.59+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub
    |__usb3 1d6b:0002:0404 09 2.00 480MBit/s 0mA 1IF (Linux 4.4.59+ etxhci_hcd-170202 Etron xHCI Host Controller 0000:02:00.0) hub
    |__3-1 0403:6001:0600 00 2.00 12MBit/s 90mA 1IF (FTDI FT232R USB UART AI2BAIG3)
    |__usb4 1d6b:0003:0404 09 3.00 5000MBit/s 0mA 1IF (Linux 4.4.59+ etxhci_hcd-170202 Etron xHCI Host Controller 0000:02:00.0) hub

    Volgens mij kan ik hieruit opmaken dat de P1 dongel aan usb poort 3-1 zit.

    Wat me ook opvalt:
    ls /dev/dev/bus/usb geeft: “001 002 003 004 devices”
    Hoe nu verder?
    Alvast bedankt!


    • Erik de Vries
      Geplaatst op

      Erik de Vries Erik de Vries

      Beantwoorden Auteur

      Helaas kan ik je niet vertellen wat er anders is in jouw situatie dan in de mijne, behalve dat je een ander model nas gebruikt, wat mogelijk de oorzaak kan zijn.


  • Ferry
    Geplaatst op

    Ferry Ferry

    Beantwoorden Auteur

    Hoi Erik,

    ik draai Home Assistant via Docker op mijn DS916+. Af en toe moet ik HA opnieuw starten wat ik via de container doe via ‘Opnieuw starten’. Als ik vervolgens weer naar 192.168.1.111:8123 ga krijg ik maar geen verbinding met HA. Nu kwam ik ergens al iets tegen over SSL certificaten, maar ik kom er helemaal niet meer uit. Thanks alvast


    • Erik de Vries
      Geplaatst op

      Erik de Vries Erik de Vries

      Beantwoorden Auteur

      Mijn ervaring is dat het opstarten van HA behoorlijk lang kan duren. Soms werkt de herstart functie van HA zelf niet helemaal top en moet je via de Docker applicatie op de Synology de container herstarten.


  • john
    Geplaatst op

    john john

    Beantwoorden Auteur

    Hallo Erik,
    Beschik sinds vandaag ober een Synology Nas en probeer dat met bovenstaande instructie Home Assistannt te installeren. Ik begrijp de zin ‘configureer een volume van “docker/HomeAssistant” op “/config” ‘ echter niet.

    Daarnaast kan ik bij geavanceerde instellingen geen variable declareren. Moet dat in de terminal omgeving ?


    • Erik de Vries
      Geplaatst op

      Erik de Vries Erik de Vries

      Beantwoorden Auteur

      Als je een docker container wil starten dan klik je eerst op “advanced settings” (in het scherm waar je de container name kan invoeren). Onder de tab “volume” stel je het volume in en onder “environment” stel je de variabelen in. Je hoeft voor die stappen niets in de terminal te doen (behalve als je ook iets met de P1 kabel wil, wat verderop in het artikel staat).


  • Edo
    Geplaatst op

    Edo Edo

    Beantwoorden Auteur

    hoi Erik,

    wat een super mooie post, zo fijn dat je dit doet! Ik gebruik op dit moment nog Domoticz en ben de overstap aan het maken naar HomeAssistant omdat je hier zaken beter kunt integreren en minder vast zit aan de interface van Domoticz. Ik heb dezelfde NAS als jij, super fijn ding, ik merkte tijdens de installatie 1 puntje van aandacht waardoor ik een rechten foutmelding kreeg (sudo -i). Hierbij de commando’s op een rij zodat andere mensen dit mogelijk helpt: (note: op mijn USB0 poort zit mijn P1 meter, USB1 zit mijn RFXCOM)

    admin@nastation:~$ sudo -i
    Password:
    root@nastation:~# ls /dev/ttyUSB1
    /dev/ttyUSB1
    root@nastation:~# ls /dev/ttyUSB0
    /dev/ttyUSB0
    root@nastation:~# docker run -d \
    > –name=”homeassistant” \
    > -v /volume1/docker/HomeAssistant:/config \
    > -v /etc/localtime:/etc/localtime:ro \
    > –device /dev/ttyUSB0:/dev/ttyUSB0 \
    > –device /dev/ttyUSB1:/dev/ttyUSB1 \
    > –net=host \
    > -e TZ=Europe/Amsterdam \
    > homeassistant/home-assistant

    thx!


  • Edo
    Geplaatst op

    Edo Edo

    Beantwoorden Auteur

    hoi Erik,

    nog een tip: ik heb mijn Nas opnieuw geinstalleerd en bij mij werkte de USB poorten niet meer. Dmv deze link kun je gemakkelijk een package installeren, werkt direct na de install:

    http://www.jadahl.com/drivers_6.2/?arch=braswell


Laat een reactie achter aan Arne
Annuleer reactie