Domotica met OpenHAB

openhab

Nadat ons huis geautomatiseerd was met Domoticz, leek het me interessant om eens een ander Domotica-systeem te gaan proberen op de Raspberry Pi. Ik kwam uit bij OpenHAB, wat staat voor Open Home Automation Bus.

OpenHAB integreert verschillende domotica-technieken in een enkelvoudige software-oplossing. Een kleine waarschuwing vooraf: het is geen kant-en-klare consumentenoplossing en en er moet best wel wat geconfigureerd worden. Daar staat tegenover dat dat het systeem heel veel oplossing biedt en behoorlijk goed uitbreidbaar is. Je kunt er veel oplossing op ‘inhaken’, er zelf uitbreidingen voor schrijven of gebruik maken van de uitbreidingen die de community beschikbaar stelt.

Na de initiële installatie van OpenHAB kun je eenvoudig uitbreidingen installeren waaronder HomeKit integratie en koppelingen met Zwave en Ikea’s Trädfri. Je hebt dan al snel al je Ikea-verlichting en Zwave devices tot je beschikking om er een geweldig domotica-systeem mee te bouwen, maar daarvoor moet je wel de concepten van OpenHAB begrijpen zoals Things, Channels, Binding en Items.

Installatie op een Raspberry Pi

De Raspberry Pi (en vooral versie 3B) leent zich uitstekend om een Domotica-systeem mee op te bouwen. Het installeren van OpenHAB is zeer eenvoudig, maar je hebt er wel een beetje geduld voor nodig.

Voor de Raspberry Pi is OpenHABian ontwikkeld: een SD-card image met een voorgeconfigureerde installatie van OpenHAB. Je hoeft alleen de laatste versie van het image-bestand te downloaden en op een SD-card te plaatsen met een applicatie zoals bijvoorbeeld Etcher.

Zodra je de image op de Sd-card hebt gezet, plaats je de SD-card in de Raspberry Pi en start hem op. De installatie wordt nu uitgevoerd. Dit kan behoorlijk lang duren. Het vervelende is dat het beeld van je Raspberry Pi tijdens de installatie op zwart gaat. Geen nood, de installatie loopt dan gewoon door. Bij mij duurde het tot wel 45 minuten alvorens er weer iets op het beeld verscheen. Je moet dus behoorlijk wat geduld hebben en de verleiding weerstaan om tussentijds de Raspberry Pi opnieuw te starten.

Zodra de installatie afgerond is, kun je de web-interface openen via http://openhabianpi:8080.

Ook heb je de mogelijkheid om in te loggen via SSH:

ssh openhabian@openhabianpi (wachtwoord = openhabian)

Wanneer je via SSH bent ingelogd, kun je de OpenHABian Configuration Tool gebruiken om de software te upgraden en backup’s te maken en terug te zetten.

WiFi instellen

Als je Raspberry Pi voorzien is van WiFi dan kun je, nadat je de image op de SD-card hebt gezet, het bestand openhabian.conf openen en daarin je WiFi-instellingen configureren:

wifi_ssid="<naam_van_je_netwerk>"
wifi_psk="<je_wifi_wachtwoord>"

Binnenkort meer over hoe je je devices configureert…

 

Raspberry Pi als spelcomputer

Een Raspberry Pi is uitermate geschikt voor leuke hobby-projecten. Zo wordt hij in ons huis reeds ingezet als telefooncentrale, mediaspeler en domotica-controller. Een andere leuke toepassing is om hem in te zetten als spelcomputer. In dit artikel lees je hoe je met een Raspberry Pi een relatief goedkope spelcomputer kunt maken en er héél veel (gratis) spelletjes op kunt spelen. Het systeem ondersteunt namelijk bijna alle game-console die we uit onze jeugd kennen, zoals de Super Nintendo en de Sega MegaDrive.

Je hebt de volgende hardware nodig: (Klik op de links om goedkoop te bestellen)

Om te beginnen bouw je de Raspberry Pi in de behuizing. Vervolgens sluit je de game-controllers aan op de USB-poorten van je Raspberry Pi.

Nu gaan we de benodigde software installeren. Hiervoor moeten we een image-bestand downloaden. Dit bestand moet op de micro-SD kaart geplaatst worden. Hiervoor moet je de SD-kaart middels de cardreader op je computer aansluiten. Vervolgens hebben we nog een stukje software nodig om het image-bestand op de SD-kaart te plaatsen:

  • Gebruik je Windows, dan kun je hiervoor Win32DiskImager gebruiken.
  • Gebruik je Linux of een Mac, dan adviseer ik je Etcher te gebruiken.

Als je het image-bestand op de SD-kaart geplaatst hebt, verwijder je deze uit je computer en steek je hem in de Raspberry Pi. Sluit nu de Raspberry Pi via de HDMI-kabel aan op je TV. Verbind de Raspberry Pi met je netwerk met behulp van de netwerkkabel. Tot slot sluit je een game-controller en de voedingsadapter aan en wacht je een minuutje totdat het apparaat is opgestart.

Wanneer de Raspberry Pi volledig is opgestart, krijg je het volgende scherm te zien:

Druk nu op een knop op de game-controller en je krijgt de naam van de controller te zien:

Druk nu weer op een knop om de controller te configureren:

Volg nu de instructies op het scherm.Als je geen knoppen meer hebt om te configureren, houd je gewoon een willekeurige knop ingedrukt om deze over te slaan. Zodra je bij OK komt, druk je op de knop die je als “A” geconfigureerd hebt.

Wifi instellen

De RetroPie is nu aangesloten via een netwerkkabel. Hoewel dit op zich prima werkt, is een draadloze verbinding wellicht wat handiger. De Raspberry Pi 3B(+) beschikt over onboard Wifi, dus een draadloze verbinding is eenvoudig op te zetten. Kies allereerst het volgende menu-item op de RetroPie:

Je komt nu in het instellingen-menu. Daar vindt je de optie Show IP. Kies deze optie en je krijgt een nieuw scherm te zien met het IP-adres van je RetroPie.

We kunnen nu een SSH-sessie opzetten naar de RetroPie. Als je een Windows-PC gebruikt, dan kun je hiervoor Putty gebruiken. Linux- en Mac gebruikers kunnen een SSH-sessie opzetten vanuit de terminal. Om via SSH in te loggen heb je een gebruikersnaam en wachtwoord nodig. De standaard gebruikersnaam voor de RetroPie is pi en het wachtwoord is raspberry.

Wanneer je via SSH ingelogd bent op je RetroPie, maak je eerst een bestand aan met de Wifi-instellingen:

nano /boot/wifikeyfile.txt

Voeg de volgende regels toe:

ssid="<naam_van_je_wifi_netwerk>"
psk="<je_wifi_wachtwoord>"

Vervolgens gebruik je de toetsencombinatie CTRL+X om het bestand op te slaan.

Nu ga je op de RetroPie weer naar het instellingenmenu, waar we eerder de optie Show IP gebruikten. Deze keer kies je de optie Wifi. Je krijgt nu een nieuw scherm te zien, waar je optie 3 kiest: Import wifi credentials from /boot/wifikeyfile.txt.

De instellingen voor de wifi worden nu door de RetroPie gebruikt. Omdat de RetroPie nu gebruikt maakt van zowel de bekabelde verbinding als de draadloze verbinding, kan hij nog steeds benaderd worden via het eerder opgezochte IP-adres. Wanneer je echter de netwerkkabel ontkoppelt, zal hij alleen bereikbaar zijn via het IP-adres van de Wifi-adapter. Deze is wederom op te zoeken via de optie Show IP in het RetroPie instellingen-menu.

Games toevoegen

Nu je RetroPie klaar is voor gebruik, wordt het tijd om spelletjes toe te voegen. Er wordt gebruik gemaakt van zogenaamde ROM’s. Dit zijn digitale versies van de game-cartridges die vroeger gebruikt werden in game-consoles. Deze ROM’s zijn gratis op het internet te downloaden. Om je op weg te helpen kun je alvast de onderstaande games downloaden:

Wanneer je de games hebt gedownload, kun je ze op je RetroPie zetten. Dit kan eenvoudig via je netwerkverbinding. De RetroPie ondersteunt namelijk het SMB-protocol waarmee je bestanden kunt versturen over je netwerk. Hiervoor open je een SMB-share op je RetroPie:

Voor Windows-gebruikers:

Ga naar Start->uitvoeren en typ:

\\retropie

Voor Mac-gebruikers:

Toets CMD+K en toets:

smb://retropie

Je krijgt nu de SMB-shares van je RetroPie te zien in je Verkenner (Windows) of je Finder (Mac). Kies nu de roms share.

roms in finderDeze share bevat een mappen voor de verschillende game-console, zoals bijvoorbeeld Nintendo Super Entertainment Set (snes) of Sega Megadrive (megadrive). De ROM’s dienen nu in de mappen geplaatst te worden van de bijbehorende systemen. Je kunt ze er eenvoudig naartoe slepen en de bestanden worden automatisch gekopieerd.

Zodra de spelletjes gekopieerd zijn, moet de RetroPie nog even opnieuw gestart worden zodat de nieuwe spelletjes herkend worden. Dit doe je door op de game-controller op Start te drukken en dan de optie Quit en vervolgens Restart te kiezen. Zodra het apparaat opnieuw is opgestart, zul je zien dat er in het menu systemen zijn bijgekomen. Wanneer je een systeem kiest met de toetsen op je game-controller, krijg je de geïnstalleerde spelletjes te zien. Selecteer het gewenste spel en start het met de A toets op je controller.

Meer games downloaden

Als je nog meer games wilt downloaden, kijk dan eens bij http://www.completeroms.com. Hier kun je een enorme hoeveelheid games downloaden voor verschillende platformen.

Meer leren over RetroPie?

Als je meer weten leren over de mogelijkheden van een RetroPie, kijk dan ook eens op https://retropie.org.uk.

Ikea’s TRÅDFRI bedienen met HomeKit en Siri

tradfri-homekit

Onlangs heb ik mijn eerste ervaring met Ikea’s TRÅDFRI gedeeld. TRÅDFRI bleek nogal beperkt te zijn in de functionaliteit en, in tegenstelling tot wat de verkoper in de vestiging in Duiven vertelde, bleek het (nog) niet te werken met Apple’s HomeKit.

Zo’n systeem met beperkte functionaliteit vormt voor mij als techneut toch wel een uitdaging. TRÅDFRI werkt met het COAP-protocol, dus ben ik eens gaan uitzoeken wat we daar mee kunnen. Na wat zoeken kwam ik een plugin tegen voor HomeBridge. Hierdoor zou het mogelijk worden om TRÅDFRI toch te koppelen aan HomeKit. Nu zijn er meerdere plugins te vinden voor TRÅDFRI, maar de door mij gebruikte plugin blijkt niet alleen het beste te werken met Siri, maar biedt ook de mogelijkheid om de lichtkleur vanuit HomeKit te wijzigen. Een andere plugin die ik getest heb deed dit niet en werkte ook niet al te best via Siri.

Ik ga er vanuit dat je HomeBridge al hebt draaien. Is dit nog niet het geval, lees dan eerst dit artikel.

Het installeren van de plugin is vrij eenvoudig:

  • Log in op je Raspberry Pi via SSH.
  • Zorg dat je als root werkt d.m.v. hete volgende commando
    sudo bash
  • We gaan nu enkele software-pakketjes installeren die we verderop nodig hebben:
    apt-get install libtool autoconf
  • Nu gaan we de COAP library installeren. Deze wordt door de plugin gebruikt om met TRÅDFRI te communiceren. Voer de onderstaande commando’s één voor één uit:
    cd /root
    git clone --recursive https://github.com/obgm/libcoap.git
    cd libcoap
    git checkout dtls
    git submodule update --init --recursive
    ./autogen.sh
    ./configure --disable-documentation --disable-shared
    make
    make install
  • Installeer de plugin
    npm install -g homebridge-tradfri-plugin
  • Tot slot moeten we de HomeBridge-configuratie nog aanpassen, zodat de plugin ingesteld is en gebruikt kan worden. Open hiervoor het configuratiebestand:
    nano /home/pi/.homebridge/config.json
  • Voeg het platform toe door de onderstaande code toe te voegen. Je hebt hierbij het IP-adres van de TRÅDFRI-gateway nodig. Deze kun je terug vinden in de DHCP-tabel van je router. Daarnaast heb je de securitycode van de gateway nodig. Deze vindt je terug op de onderkant van je gateway.
  • {
      "platform": "IkeaTradfri",
      "name": "Tradfri",
      "host": "192.168.x.x",
      "key": "<jouw beveiligingscode>"
    }
    

    Als je de bovenstaande code toevoegt, vergeet dat niet achter het laatste platform dat je eerder geconfigureerd hebt, een komma achter de sluitende accolade te plaatsen. Anders klopt het JSON-formaat van je configuratiebestand niet meer en zal HomeBridge niet starten. Natuurlijk moet je het IP-adres en de beveiligingscode vervangen door die van jouw TRÅDFRI-gateway.

  • Nu gaan we het geheel testen. Hiervoor hoeven we niet langer als root ingelogd te zijn. Met het volgende commando worden we weer de standaard “pi”-gebruiker:
    exit
  • Omdat HomeBridge in de achtergrond nog loopt, gaan we deze stoppen en handmatig opstarten. Op die manier krijgen we de output van de applicatie op ons scherm, zodat we kunnen controleren of HomeBridge goed opstart. Als er iets misgaat, kunnen we dan ook de foutmeldingen zien.
    sudo systemctl stop homebridge.service
  • Nu starten we HomeBridge handmatig op:
    homebridge
  • Als alles goed gaat, zie je nu dat HomeBridge opstart en dat je TRÅDFRI-componenten automatisch gevonden worden. Je kunt ze ook direct terugvinden in de Woning-app op je iPhone of iPad.

Omdat de verkoper van Ikea mij verzekerde dat TRÅDFRI HomeKit op dit moment al ondersteunde, heb ik voor de zekerheid nog even met de klantenservice van Ikea gebeld. Ook daar bleek men slecht geïnformeerd over hun eigen product, maar nadat ik een tijdje in de wachtrij had gezeten, kon men mij vertellen dat het in de toekomst wel ondersteund zou gaan worden. Op mijn vraag, of dit via een software-update zou gaan of dat ik een nieuwe gateway zou moeten aanschaffen, kon men mij helaas geen antwoord geven. Ook op de vraag wanneer men deze functionaliteit verwachtte, kon men geen antwoord geven.

Gelukkig hoef ik met deze oplossing via HomeBridge niet meer op Ikea te wachten.

Update: Inmiddels ondersteunt Ikea’s Trädfri ook HomeKit, waardoor deze koppeling via HomeBridge niet meer nodig is.

Je huis besturen met Siri

Domotica met Siri en HomeBridge

In een eerdere blog heb ik beschreven hoe je met een Raspberry Pi de basis kunt leggen voor Domotica in je huis. Daarnaast heb ik uitgelegd hoe je op afstand je huis kunt besturen.

Aangezien ik een iPhone gebruik, leek het me ook aardig om een koppeling te maken met Apple’s HomeKit. Deze domotica-software zit ingebouwd in iOS, waardoor het op elke iPhone en iPad beschikbaar is. Het leuke van HomeKit is dat je het kunt besturen met Siri, waardoor je met je stem je huis kunt besturen. Helaas werken niet alle domotica-oplossingen met HomeKit en Domoticz, het open-source pakket dat ik voor mijn domotica gebruik, is daar geen uitzondering op. Ook mijn Nest-thermostaat werkt standaard niet met HomeKit.

HomeBridge

Om apparaten toch met HomeKit te laten communiceren, is er HomeBridge. Deze open-source software werkt als schakel tussen je apparaten en HomeKit. Het draait op Node.js, dus dat zul je eerst moeten installeren. In deze blog ga ik er vanuit dat je de basis met een Raspberry Pi en Domoticz reeds draaiend hebt.

Om te beginnen log je via SSH in op je Raspberry Pi. We gaan nu eerst Node.js installeren. Ik vind het zelf het gemakkelijkste om dit als root te doen. Hiervoor geef je het volgende commando:

sudo bash

Toets nu de volgende commando’s om Node.js op te halen:

wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv7l.tar.gz
tar -xvf node-v4.0.0-linux-armv7l.tar.gz
cd node-v4.0.0-linux-armv7l

Verplaats nu NodeJS naar /usr/local met het volgende commando:

cp -R * /usr/local/

Node.js is nu geïnstalleerd. Je kunt dit controleren door het onderstaande commando uit te voeren. Je krijgt dan krijgt dan als antwoord het versienummer te zien:

node -v

Voordat we HomeBridge gaan installeren, moeten we eerst Avahi installeren, omdat HomeBridge hier gebruik van maakt:

apt-get install libavahi-compat-libdnssd-dev

De voorbereidingen zijn nu gereed en we kunnen nu HomeBridge gaan installeren.Voer het volgende commando uit:

npm install -g homebridge

De installatie kan aardig wat tijd in beslag nemen. Wees niet bang als je wat errors voorbij ziet komen. Als de installatie voltooid is, kunnen we HomeBridge voor het eerst opstarten:

homebridge

Aangezien we nog niet alle onderdelen van HomeBridge geïnstalleerd hebben, zullen er nog wat foutmeldingen verschijnen, zoals “No plugins found. See the README for information on installing plugins.” De plugins waarover gesproken wordt, gaan we nu installeren. Je kunt HomeBridge stoppen door de toetsencombinatie CTRL+c.

Plugins installeren

Domoticz

Om de Domoticz-plugin te installeren, toets je het volgende commando:

npm install -g homebridge-edomoticz

Nadat de plugin geïnstalleerd is, gaan we het configuratiebestand voor HomeBridge aanmaken:

cd ~/.homebridge/
nano config.json

Kopieer de onderstaande tekst in het bestand en sluit met CTRL+x. (Het bestand wordt nu opgeslagen)

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:21:3E:E4:DE:33",
        "port": 51826,
        "pin": "031-45-154"
    },
    "description": "Configuration file for (e)xtended Domoticz platform.",
    "platforms": [
        {
            "platform": "eDomoticz",
            "name": "eDomoticz",
            "server": "127.0.0.1",
            "port": "8080",
            "ssl": 0,
            "roomid": 2,
            "mqtt": 1
        }
    ],
    "accessories": []
}

De waarde voor “roomid” is hierboven gezet op 2. Dit is het floorplan dat we in Domoticz aanmaken en waarin we alle apparaten zetten die we via HomeKit beschikbaar willen maken. In Domoticz ga je naar:
Instellingen -> Meer opties -> Ruimtes -> Kamerplan

Klik nu rechtsboven op Ruimte toevoegen. Als naam geef je bijvoorbeeld HomeBridge. Vervolgens kun je onderin kiezen welke apparaten je wilt toevoegen. Voeg één voor één al je apparaten toe.

Zodra je dit gedaan hebt, start HomeBridge op:

homebridge

Je ziet nu dat HomeBridge de apparaten via Domoticz vindt. Wanneer HomeBridge is opgestart, krijg je het volgende te zien:

Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
                       
    ┌────────────┐     
    │ 031-45-154 │     
    └────────────┘     

Deze code heb je nodig om je iPhone of iPad te verbinden met HomeBridge. Start nu in iOS de HomeKit-app.

  • Druk rechtsboven op de +-knop en kies Voeg accessoire toe.
  • Je ziet nu HomeBridge verschijnen. Kies deze.
  • Je wordt nu gevraagd om een code te scannen. Dit gaat niet met HomeBridge, maar je kunt ook kiezen om de code handmatig in te voeren. Kies deze optie en voer de code in die je van HomeBridge hebt gekregen.
  • Hierna wordt je gevraagd om één voor één de apparaten in te stellen. Je kunt hun naam, functie en lokatie wijzigen. Eventueel kun je dit ook later doen, maar het is wel belangrijk omdat Siri dan bijvoorbeeld het verschil kent tussen spotjes in de keuken en spotjes in de woonkamer. Als je lampen configureert als lamp in plaats van schakelaar, dan weet Siri dat je deze apparaten wilt schakelen wanneer je het hebt over verlichting.

HomeBridge automatisch starten

We hebben HomeBridge handmatig opgestart. Echter, zodra je de SSH-sessie sluit zullen applicaties, die je gestart hebt, automatisch afsluiten, dus ook HomeBridge. Daarom moeten we de Raspberry Pi HomeBridge automatisch laten starten.

Voer het volgende commando uit:

nano /lib/systemd/system/homebridge.service

Plak de volgende tekst in het bestand en sla het op:

[Unit]
Description=HomeBridge Service
After=multi-user.target

[Service]
User=pi
Type=idle
ExecStart=/usr/local/bin/homebridge

[Install]
WantedBy=multi-user.target

Voer nu de volgende commando’s uit:

systemctl daemon-reload
systemctl enable homebridge
systemctl start homebridge

HomeBridge wordt nu in de achtergrond gestart en je krijgt geen output te zien. Als je de output toch wilt zien, kun je deze terug vinden in /var/log/daemon.log.

In de Woning-app op je iPhone of iPad kun je nu de verschillende apparaten zien:

Behalve via de app kun je je apparaten ook oproepen in Control Center door vanuit je Home Screen van onderuit het scherm naar boven te vegen en dan in Control Center naar links te vegen.

Maar het leukste is natuurlijk om het aan Siri te vragen:

Hé Siri, schakel de spots in de keuken in

 

 

Helaas werkt deze oplossing enkel wanneer je iPhone verbonden is met je thuisnetwerk. Wil je je huis ook buiten de deur kunnen bedienen, dan is hiervoor een heel simpele oplossing beschikbaar.

Tot slot nog even een kleine demonstratie van de werking op een iPhone:

Pi MusicBox: The poor man’s Sonos

De speakers van Sonos zijn op dit moment erg populair, maar helaas zijn ze nogal prijzig. Een goede reden om eens te kijken of je zelf een dergelijke speaker kunt bouwen. Aangezien ik nog een RaspBerry Pi 1B had rondslingeren, leek het me leuk om deze als basis voor een dergelijke speaker te gebruiken. Het beestje is niet snel genoeg meer voor de meeste applicaties die ik gebruik, maar voor het afspelen van muziek voldoet ie nog prima.

Na een beetje zoeken op het web kwam ik uit bij Pi MusicBox, een stukje software dat gebaseerd is op Mopidy, een uitbreidbare muziekserver geschreven in Python. Op GitHub is er een image beschikbaar die je met een applicatie als Etcher in een paar minuten op je SD-card kunt flashen.

Een goedkope bluetooth speaker van de Action zal de muziek gaan produceren. Het apparaat heeft een audio-ingang die ik op de analoge audio-uitgang van de RaspBerry Pi heb aangesloten. Deze speaker werkt op een interne accu, die geladen kan worden via een micro-USB aansluiting. Een USB-kabel tussen deze poort en één van de USB-poorten van de RaspBerry Pi zorgt voor een permanente stroomvoorziening.

Door het volgen van de onderstaande stappen bouw je in 15 minuten een standalone speaker, waarmee je je MP3-bestanden en radio-streams kunt afspelen. De bediening van de speaker geschiedt via je smartphone.

  • Download de image.
  • Flash de image op je SD-card met Etcher.
  • Steek de SD-card in je RaspBerry Pi.
  • Sluit de audio-ingang van je speaker aan op de analoge audio-uitgang van je Raspberry Pi.
  • Sluit een USB-kabel aan tussen de power-ingang van de speaker en een USB-poort van je RaspBerry Pi.
  • Sluit de RaspBerry Pi aan op je netwerk.
  • Sluit de voeding van je RaspBerry aan.

Je RaspBerry Pi start nu op en de software wordt nu automatisch geconfigureerd. Na een paar minuten is alles gereed en kun je met de browser van je computer of smartphone surfen naar http://musicbox.local. (let op de punt aan het einde van het adres)

Geluid via de analoge poort in plaats van HDMI

Tijdens het experimenteren kwam ik erachter dat, wanneer je een scherm via HDMI hebt verbonden, al het geluid automatisch via de HDMI-poort uitgestuurd wordt. Om het geluid via de analoge poort te laten lopen, kun je de RaspBerry Pi herstarten zonder dat de HDMI-poort is aangesloten. Het geluid gaat dan automatische via de analoge poort.

Via de web-interface kun je ook de analoge poort als default instellen. Hiervoor ga je naar SettingsAudio. Daar klik je op de grote knop met de tekst Automatic en wijzig je naar Analog. Om deze wijziging actief te maken, dien je de RaspBerry Pi te herstarten.

Koppeling via API

Pi MusicBox is ook voorzien van een API, waarmee je eenvoudig in JSON commando’s kunt sturen via HTTP. Dat biedt leuke mogelijkheden om te koppelen met bijvoorbeeld je Domotica-systeem.

Domotica met Home Assistant

Vandaag heb ik Home Assistant eens geprobeerd. Dit is een Home Automation System dat gebouwd is in Python. Het kan draaien op een Raspberry Pi en het ondersteunt Zwave, volgens de documentatie. Home Assistant is open-source software, dus je kunt het gratis downloaden en gebruiken.

Ik heb een RaspBerry Pi 3 gebruikt met een AEON-labs Zwave stick (5e generatie).

Er is een image beschikbaar die je kunt flashen op een SD-card, waar je vervolgens je RaspBerry Pi mee opstart. In eerste instantie verliep alles redelijk vlekkeloos en had ik het pakket binnen 10 minuten up-and-running. Via de web-interface zag ik dat er een discovers-proces liep dat al snel mijn Samsung TV en AppleTV in het netwerk gedetecteerd had.

Ondanks dat het er allemaal veelbelovend uit zag, bleek het koppelen van mijn Zwave controller toch erg lastig. Na wat onderzoek kwam ik er achter dat de image geen OpenZwave drivers bevatte, waardoor het configureren van Zwave niet mogelijk bleek. Helaas was de documentatie hierover niet erg duidelijk en moest ik behoorlijk wat Google-Fu aanwenden om hierachter te komen.

Er bleek ook een All-in-One installer te zijn die ook geschikt was voor de RaspBerry Pi. Hiervoor moest eerst Raspbian op de RaspBerry Pi geïnstalleerd worden. Dit is een erg eenvoudig klusje: Je download een Raspbian image en kopieert hem naar een SD-card met Etcher. Vervolgens is het belangrijk dat je op de SD-card een bestand aanmaakt met de nam ssh. (zonder extensie)

Dit zorgt er voor dat wanneer je je Raspberry Pi opstart, er automatisch een SSH-server geactiveerd wordt, zodat je via een SSH-sessie verbinding kunt maken. (Voor meer informatie over het verbinden met je RaspBerry Pi via SSH kun je stap 1 en 2 van dit artikel volgen)

Zodra je via SSH bent ingelogd op je RaspBerry Pi, toets je het volgende commando in:

curl -O https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh

Nu moet je héél veel geduld hebben. Afhankelijk van je versie van de RaspBerry Pi, duurt het installatieproces zo’n 1-2 uur! (op een RaspBerry Pi 3 gaat het natuurlijk sneller dan op een versie 2, heb je een RaspBerry Pi 1, overweeg dan een nieuwere versie aan te schaffen)

Wanneer de installatie voltooid is, kun je de Zwave configuratie toevoegen. Home Assistant werkt met één groot configuratiebestand. Daarin ga je nu de USB-poort van je Zwave controller en de configuratie van de OpenZwave-driver invoeren.

Open het configuratie-bestand met een text-editor, zoals bijvoorbeeld nano:

sudo nano /home/homeassistant/.homeassistant/configuration.yaml

Voeg nu het volgende toe onderin dit bestand:

zwave:
  usb_path: /dev/ttyACM0
  config_path: /srv/homeassistant/homeassistant_venv/lib/python3.4/site-packages/libopenzwave-0.3.3-py3.4-linux-armv7l.egg/config

Sla het bestand nu op (CTRL+x in Nano) en herstart de RaspBerry Pi:

sudo reboot

Wanneer je RaspBerry Pi is opgestart, duurt het nog een minuutje voordat Home Assistant ook gestart is. Open in je browser nu http://hasbian.local:8123 of http://<ip-adres-van-je-raspberry-pi>:8123.

Je ziet nu je Zwave devices staan en eventuele overige apparaten die Home Assistant heeft gedetecteerd in je netwerk.

Mijn ervaring

In eerste instantie leek de user-interface van Home Assistant een stuk moderner dan die van bijvoorbeeld Domoticz. Ook was er een image te downloaden om het pakket snel aan de gang te krijgen op een RaspBerry Pi. Vol goede moed ben ik met dit image aan de slag gegaan, om er al snel achter te komen dat dit image geen OpenZwave-driver bevat, iets dat ik toch echt nodig heb. Zonder die driver ben je aangewezen op home automation devices in je netwerk, die je dan met Home Assistant kunt koppelen waardoor je al die devices op één centraal punt kunt besturen.

Na wat zoeken kwam ik op de site van Home Assistant een All-in-One installer tegen. Hiervoor moest de RaspBerry Pi eerst voorzien worden van Raspbian, waarna een installer uitgevoerd moest worden die, vanwege de beperkte capaciteit van een RaspBerry Pi, behoorlijk lang duurde.

Ondanks de moderne interface, moet je alles in Home Assistant via het configuratiebestand (dat gebruik maakt van YAML) configureren. Dit maakt het naar mijn mening minder geschikt voor beginners. Er staat tegenover dat, wanneer je e.e.a. aan de gang hebt, er zeer veel out-of-the-box functionaliteit toegevoegd kan worden. Hierdoor biedt Home Assistant zeer veel mogelijkheden. Zonder al te veel moeite kon ik mijn Nest, Apple TV en Kodi mediaspelers koppelen.

Het pakket heeft mijn interesse gewekt en ik ga er zeker nog verder induiken. Uiteraard zal ik hier dan ook menig artikel over schrijven. Voorlopig is mijn tip voor beginners: Begin eerst eens met Domoticz, dat voorkomt een hoop frustratie!

Je huis besturen via domotica met open-source software

In deze blog beschrijf ik hoe je middels een Raspberry Pi, een Nest thermostaat en een Z-Wave schakelaar de basis kunt leggen voor domotica in je huis. In de toekomst zal ik meer artikelen posten naarmate mijn eigen domotica-project vordert.

Ik maak enkel gebruik van open-source software, dus je hoeft geen software aan te schaffen waardoor de kosten zo minimaal mogelijk blijven.

We hebben de volgende zaken nodig:

  • Een Raspberry Pi (ik heb een type 3B gebruikt, met Wifi en Bluetooth on-board)
  • Een Z-Wave USB controller. (ik gebruik de USB-stick van AEON labs)
  • Een Micro SD-card (Ik heb een 16GB variant gebruikt, wat zeer ruim voldoende is)
  • Een Zwave schakelaar: voor dit projectje heb ik een “slimme” stekker van Neo Coolcam gebruikt.
    Deze plug je eenvoudig in je stopcontact, waarna je vervolgens een lamp in de stekker steekt.
  • Optioneel: Nest Learning Thermostat. (Als je geen Nest wilt gebruiken, dan kun je stap 7 in dit artikel overslaan)

Afhankelijk van de gebruikte computer (ik gebruik een MacBook) heb je een kaartlezer nodig om de SD-card te bewerken. Sommige computers hebben reeds een slot aan boord waar je deze kaart rechtstreeks in kunt steken.

De stappen

  1. De Raspberry Pi voorbereiden
  2. Verbinden met je Raspberry Pi
  3. Installatie van Domoticz
  4. Instellen van de ZWave USB stick
  5. Koppelen van je ZWave device
  6. Apparaat toevoegen in Domoticz
  7. Nest toevoegen aan Domoticz
  8. Veiligheid: Wijzig het standaard wachtwoord!

Stap 1: De Raspberry Pi voorbereiden

  • Sluit de SD-card aan op je computer. We gaan op deze SD-card nu Raspbian installeren. Dit is een linux-versie die geoptimaliseerd is voor de Raspberry Pi. Om te beginnen moeten een image downloaden die het besturingssysteem bevat. Deze kun je hier downloaden. Je kunt kiezen voor twee varianten: met of zonder Pixel. Pixel is een grafische gebruikersinterface. Voor dit project hebben we deze niet nodig, omdat we enkel middels de command line werken. Hoewel je kunt kiezen om het image te downloaden als torrent, raad ik je aan om het image als ZIP-bestand te downloaden.
  • Pak het ZIP-bestand uit met bijvoorbeeld 7-Zip (Windows) of Unzip (Linux). Wanneer je download via MacOS, zal na het downloaden de image automatisch uitgepakt worden.
  • De installation guide van RaspberryPi.org beveelt het gebruik van Etcher aan. Deze applicatie gebruiken we om het gedownloade image naar de SD-card te kopiëren. De applicatie is gratis te downloaden voor Windows, Linux of de Mac.
    • Open Etcher en selecteer het gedownloade .img-bestand op je harddisk.
    • Selecteer vervolgens de SD-card waar je het image naartoe wilt schrijven.
    • Klik nu op Flash en het kopiëren zal starten.
  • Open nu de SD-card op je computer en maak hier een bestandje aan met de naam ssh (zonder extensie). De inhoud van het bestandje is leeg. Door het plaatsen van dit bestandje zal de Raspberry Pi een SSH-server opstarten, waardoor we via het netwerk de Raspberry Pi kunnen bedienen, zonder dat we een scherm hoeven aan te sluiten.
  • Koppel de SD-card los van je computer en steek deze in de Raspberry Pi. Sluit vervolgens de Raspberry Pi middels een netwerkkabel aan op je netwerk en sluit de voedingsadapter aan. (Als je 100% zeker wilt zijn dat je Raspberry Pi volledig zonder problemen opstarten, dan kun je hem even middels een HDMI-kabel aansluiten op je TV zodat je het opstartproces kunt volgen)

Stap 2: Verbinden met je Raspberry Pi

Om te verbinden met je Raspberry Pi, moet je eerst zijn IP-adres achterhalen. De Raspberry Pi krijgt zijn IP-adres van je router middels een DHCP-request. Om het IP-adres te achterhalen heb je de volgende opties:

  • Je sluit hem middels een HDMI-kabel aan op je TV en start hem dan op. Tijdens de opstartberichten kun je zien welk IP-adres hij krijgt.
  • Je kijkt in de DHCP-tabel van je router. Daarin kun je zien welke IP-adressen er zijn uitgedeeld op het netwerk. De apparaten waaraan de IP-adressen zijn uitgedeeld staan er met hun naam (hostname) vermeld. De hostname voor onze Raspberry Pi is raspberrypi.

Wanneer je het IP-adres hebt achterhaald, gaan we verbinden middels een SSH-client. Op Linux en de Mac zit deze standaard als in het besturingssysteem. Gebruik je Windows, dan zul je een SSH-client moeten installeren. Een gratis SSH-client voor Windows is bijvoorbeeld Putty.

De standaar gebruikersnaam om mee in te loggen is pi. Het daarbij behorende standaard wachtwoord is raspberry. (Ik adviseer je vanwege veiligheid ten sterkste om het wachtwoord te wijzigen, hierover later meer)

In dit project gaan we er vanuit dat het IP-adres van de Raspberry Pi 192.168.1.5 is. Vervang daarom steeds dit IP-adres door het IP-adres van jouw Raspberry Pi. Om te verbinden vanuit Linux of de Mac, open je een terminal-venster en typ je het volgende commando:

ssh pi@192.168.1.5

Je wordt nu om het wachtwoord gevraagd. Voer nu als wachtwoord in: raspberry en toets enter.

Je ziet nu het volgende:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $

Stap 3: Installatie van Domoticz

Het installeren van Domoticz is zeer eenvoudig. Voer het volgende in en druk op enter:

sudo curl -L -k install.domoticz.com | sudo bash

Zodra Domoticz geïnstalleerd is, open je je internet-browser en surf je naar het volgende adres:

http://192.168.1.5:8080 (Vervang 192.168.20.5 door het IP-adres van jouw Raspberry Pi)

Je ziet nu bovenin een aantal keuzemogelijkheden en verder is je scherm nog vrij leeg. Geen nood, daar komt snel verandering in!

Voordat je verder gaat, stellen we Domoticz eerst in het Nederlands in. Dit is voor velen onder ons toch net iets gemakkelijk dan in het Engels. Klik hiervoor op Setup en vervolgens weer op Setup. Selecteer nu bij Language: Dutch en klik vervolgens op Apply Settings.

Stap 4: Instellen van de Zwave USB Stick

  • Klik in Domoticz eerst op Instellingen en vervolgens op Hardware. Voer bij naam een verwijzing naar je USB-stick in, bijvoorbeeld USB Stick.
  • Kies als type OpenZWave USB.
  • Kies vervolgens je seriële poort (USB poort). Meestal kun je hier maar één optie kiezen. (behalve als je je USB-stick in meerdere poorten hebt gestoken, dan zul je even moeten uitproberen welke poort voor jou werkt)
  • Klik tot slot op Toevoegen.

Stap 5: Koppelen van je ZWave device

Het koppelen van je ZWave device is sterk afhankelijk van de gebruikte ZWave adapter en ZWave device. Beide komen met een handleiding waarin staat hoe de koppelingsprocedure voor het apparaat werkt. Allereerst moet de USB-stick in een toevoeg-modus gezet worden. Dit is bij de USB-stick van AEON labs heel eenvoudig. Druk op de knop op de stick. De blauwe led op de stick zal nu langzaam gaan knipperen. Zodra het ZWave device gekoppeld is, zal de blauwe led 2 seconden gaan branden.

Het voordeel van de USB-stick van AEON labs is, dat hij een batterij bevat waardoor hij niet op een USB-poort aangesloten hoeft te zijn om het voor de koppelingsprocedure te gebruiken. Dit is bijzonder handig wanneer het ZWave device dat je wilt koppelen, zich niet in de buurt van de Raspberry Pi bevindt.

Wanneer je de toevoeg-modus op de stick hebt gestart (en de knipperende blauwe led dus ziet) schakel je de toevoeg-modus op de “slimme” stekker in. In het geval van de door ons gebruikte stekker van Neo Coolcam, druk je snel 3x achter elkaar op de knop op de stekker. Wanneer de toevoeg-modus gestart wordt, zal de led in de knop 5x rood knipperen. De blauwe led op de stick zal nu 2 seconden blauw gaan branden.

Steek nu de stick terug in je Raspberry Pi, bij voorkeur in dezelfde USB-poort als voorheen. (anders heb je kans dat je de seriële poort instelling opnieuw moet doen. (zie stap 4).

Klik nu op Instellingen -> Hardware.

Klik nu op de knop Instellingen naar de OpenZWave USB.

Als de koppelings-procedure succesvol is geweest, zie je nu Neo Coolcam Power Plug in je lijstje staan:

Zie je de Neo Coolcam Power Plug er niet tussen staan, voer de gehele koppelingsprocedure nogmaals uit.

Stap 6: Apparaat toevoegen in Domoticz

Klik in Domoticz op Instellingen en vervolgens op Apparaten. Je ziet nu meerdere apparaten. Dit komt doordat de power plug bestaat uit meerdere devices: Naast een schakelaar bevat de power plug ook nog verschillende sensoren voor bijvoorbeeld spanning, vermogen en verbruik. We concentreren ons nu vooralsnog op de schakelaar. Je herkent dit apparaat aan de IDX-waarde van 1 met het lampje ernaast. Klik bij dit apparaat op de groene buiten met de pijl naar rechts. Je wordt nu gevraagd om het apparaat een naam te geven. Zodra je dit hebt gedaan, kun je bovenin klikken op Schakelaars, waar je de schakelaar terug kunt vinden. Door op de lamp te klikken schakel je de lamp in. De afbeelding van de lamp wordt nu een brandende lamp. Door er nogmaals op te klikken gaat de lamp uit.

Door op de ster linksonder te klikken wordt deze toegevoegd aan je favorieten in je Dashboard. (De ster wordt dan geel)

 

Stap 7: Nest toevoegen aan Domoticz

Om je Nest thermostaat toe te voegen aan Domoticz, heb je je gebruikersnaam en wachtwoord voor Nest.com nodig.

  • Klik in Domoticz op Instellingen en vervolgens op Hardware.
  • Kies nu bij Type: Nest Thermostat/Protect.
  • Vul vervolgens je gebruikersnaam en wachtwoord van Nest.com in.
  • Klik nu op Toevoegen.

Je ziet nu dat je Nest Thermostaat wordt toegevoegd aan de hardware.

Vervolgens ga je naar Instellingen en dan naar Apparaten. Je ziet dat er wederom een aantal apparaten zijn toegevoegd. Deze apparaten hebben Nest als Hardware. Via de groene pijltje kun je de apparaten toevoegen aan Domoticz, net zoals we dat gedaan hebben met de Power Plug.

Het apparaat van het type Thermostaat kun je gebruiken om de temperatuur van je Nest in te stellen. De overige apparaten zijn eigenlijk alleen bedoeld om uit te lezen en niet om een instellingen te maken. Via het apparaat van het type Temp + Humidity kun je de temperatuur en luchtvochtigheid via je Nest uitlezen. De overige apparaten van het type Lighting 2 gebruik je om te bepalen of de verwarming actief is en om te bepalen of de Nest in de “Away” stand staat.

Let op!: De Nest learning thermostat wordt niet rechtstreeks gekoppeld aan Domoticz. Zowel de Nest als Domoticz praten met de Nest-servers via internet. De Nest-server functioneren dus eigenlijk als tussenpersoon. Zodra je internetverbinding niet (meer) werkt, zal ook de verbinding tussen Domoticz en Nest niet meer werken.

Stap 8: Veiligheid: Wijzig het standaard wachtwoord!

Om te voorkomen dat kwaadwillenden de controle over je nieuwe domotica-systeem overnemen, is het verstandig om je account-wachtwoord te wijzigen. (Het standaard wachtwoord “raspberry” is wel erg eenvoudig te raden). Dit doe je door middels SSH in te loggen en het volgende commando te geven:

passwd

Je wordt nu eerst gevraagd om het huidige wachtwoord (“raspberry”) in te voeren. Vervolgens wordt je gevraagd om een nieuw wachtwoord en tot slot moet je dit nieuwe wachtwoord nogmaals invoeren ter bevestiging.

De volgende keer kun je via SSH inloggen met pi als gebruikersnaam en je nieuwe wachtwoord.