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…

 

Spots dimmen met de Fibaro Dimmer 2

Vandaag heb ik de spots op onze overloop maar eens aangesloten. Dat werd wel tijd want de gaten in het plafond zaten er al vier jaar…

Op de plek van de oude lichtschakelaar zat helaas alleen een fase-draad en een schakeldraad, iets wat veel voorkomend is bij lichtschakelingen. De nul-draad, om de stroomkring rond te krijgen, zit alleen bij de lamp en niet bij de schakelaar. Helaas hebben de meeste ZWave schakelaars een nul-draad nodig voor hun eigen voeding. De Fibaro Dimmer 2 heeft dit niet nodig en kan 2-draads aangesloten worden. Je zou hem zelfs als gewone schakelaar kunnen gebruiken en de dimmer-functionaliteit laten voor wat het is, maar omdat ik 4 inbouwspots gebruik, leek het me wel aardig om ze ook dimbaar te maken.

Dit is het 2-draads aansluitschema voor een enkele en een dubbele schakelaar:

Aansluitschema Fibaro Dimmer 2-draads

Op dit moment heb ik er voor gekozen om de bestaande schakelaar te gebruiken. Dat wil zeggen dat de spots met deze schakelaar alleen in- en uitgeschakeld kunnen worden. Ik heb dan ook het single switch schema gebruikt. Het dimmen gebeurt dan via Domoticz en HomeKit. In een later stadium zal ik de schakelaar vervangen door pulsdrukkers, zodat ook de dimfunctie via de schakelaar bediend kan worden.

Vanwege het lage vermogen door het gebruik van LED-spots was ik bang dat het niet helemaal vlekkeloos zou gaan, maar uiteindelijk bleek alles prima te werken. Enkel op een vermogen van lager dan 5% gaat één spotje niet aan. Binnenkort zal ik een dimmer-bypass bijschakelen of we dit hiermee kunnen verhelpen.

5% vermogen geeft namelijk prima verlichting om nét genoeg te zien als je ’s nachts naar het toilet gaat. De bedoeling is dan ook om de spots ’s nachts aan te sturen via een beweging-sensor.

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.