Bouw een slim huis met openHAB 2
Met openHAB 2 kun je echt heel veel slimme hardware automatisch aansturen. Variërend van je smart-tv en router tot slimme stopcontacten en lampen als de Philips Hue. Wij laten zien hoe.
Lees verder na de advertentie
Hoewel je bijna geen apparaat meer kunt kopen zonder internetaansluiting, is van samenwerken geen sprake. In de praktijk zijn het allemaal losse eilandjes, die niet eenvoudig aan elkaar te knopen zijn, laat staan dat je ze allemaal met één app kunt bedienen. Mede daarom breidt het aantal apps op je smartphone zich langzaam maar zeker steeds verder uit. Met de ene app schakel je de lampen draadloos in en uit, met de andere regel je de kamertemperatuur via de slimme thermostaat en met weer een andere bedien je je smart-tv. Enige vorm van samenhang tussen de afzonderlijke componenten en slimme schakelsystemen kun je vergeten. Kant-en-klare smarthomesystemen beloven je daarbij te helpen, maar zijn meestal extreem duur en werken alleen met componenten van dezelfde fabrikant.
Alles in één
De makers van de opensourcesoftware openHAB 2 willen hier een eind aan maken. Ze hebben zich ten doel gesteld zo veel mogelijk apparaten onder één dak te verenigen en op die manier van het hele huis een smarthome te maken. Het mooie hieraan is: openHAB 2 is opensource en wordt ontwikkeld door een aanzienlijke community. Bovendien draait het als Java-applicatie op bijna elke hardware. Een soortgelijke oplossing als Home Assistant draait alleen op een Linux-server of Raspberry Pi. Voor het configureren en het besturen van je smarthome zijn er meteen meerdere webinterfaces beschikbaar. Voor de eerste kennismaking volstaat het om openHAB 2 op een pc in een willekeurige map uit te pakken. Voor langdurig gebruik kun je beter een Raspberry Pi van de tweede of derde generatie gebruiken. Voor minder dan 150 euro kun je op een regenachtige middag je eigen huis duidelijk smarter maken.
Tip!
Ontworpen voor creators en professionals: configureer jouw eigen ASUS ProArt P16 nu.
- Ontdek hoe je veilig blijft zonder nieuwe pc te kopen.
- Big Tech onder de loep
- Alles over Wi-Fi 8
Eerste stappen met openHAB
Een paar maanden geleden heeft openHAB een flinke make-over naar versie 2 gehad. Nieuw is onder meer de webinterface Paper UI, waarmee je het grootste deel van de basisconfiguratie maar een paar muisklikken weg zijn. Voor veeleisender taken bestaat bij openHAB 2 de mogelijkheid in de configuratiebestanden van alles met een gewone teksteditor aan te passen aan je eigen wensen.
We hebben openHAB 2 op een Raspberry Pi 3 geïnstalleerd om Hue-lampen van Philips en elektrische rolluiken buiten te automatiseren. Het voorbeeldproject laat zien hoe je eigen projecten kunt implementeren.
Op welke hardware je openHAB 2 laat draaien maakt voor dit artikel verder niet uit. Het installeren ervan slaan we dan ook over, we nemen aan dat dit zonder al te veel problemen lukt. Op de website van het project staat voor alle gangbare besturingssystemen beschreven hoe je openHAB 2 moet installeren.
Na het installeren ga je om te beginnen naar de configuratie-interface Paper UI, die je in je browser opent via http://www.ct.nl/start of bij een Pi op http://openhabianpi:8080/start. Daar zijn bijna alle smarthome-objecten in te stellen.
Daarbij volgt openHAB 2 een logische hiërarchie om interfaces, componenten, protocollen en de afzonderlijke apparaten overzichtelijk te houden.
In drieën
Alles is ingedeeld in drie categorieën: bindings, things en items. Voor elk apparaat, elk protocol en elke webdienst heeft openHAB 2 een eigen add-on, zogeheten bindings. Die zorgen ervoor dat de software met de afzonderlijke apparaten kan communiceren. Dit is goed te vergelijken met de stuurprogramma’s oftewel device drivers onder Windows. De Hue-binding verbindt bijvoorbeeld alle Philips Hue-lampen. In de praktijk hoef je je maar af en toe met die bindings bezig te houden, namelijk bij het installeren van nieuwe smarthomehardware.
Omdat veel bindings meerdere fysieke apparaten aansturen, noemt openHAB 2 alle apparaten van een binding things. Die hebben op hun beurt vaak meerdere functies en verschillende toestanden. Veel bewegingsmelders meten bijvoorbeeld ook de temperatuur of de helderheid. Om die eigenschappen overzichtelijk te houden, kent openHAB 2 aan elk thing een of meerdere items toe. Items kunnen bijvoorbeeld schakelaars, dimmers, getallen, toestanden of groepen zijn.
Onderklassen
Als je via de Z-Wave-binding een bewegingssensor van Fibaro koopt, komt die in openHAB 2 tevoorschijn als thing Fibaro-Sensor-1. Als onderklasse heeft hij de items FibaroSensor1_SensorTemperature(nummer), FibaroSensor1_SensorLuminance(nummer) en FibaroSensor1_MotionAlarm(toestand). Vervolgens biedt openHAB 2 aan om een of meerdere van die items over te nemen. Je kunt ze in het vervolg dan uitlezen, als schakelaar gebruiken of de geleverde waarde toepassen als trigger voor geautomatiseerde regels.
De clou van het concept: items kunnen ook virtueel zijn. Als in een kamerlamp bijvoorbeeld twee slimme gloeilampen zitten die je gezamenlijk wilt schakelen, maak je in openHAB 2 gewoon een nieuw item aan met de gewenste naam en ken je daar de beide gloeilampen aan toe. De op die manier gemaakte virtuele schakelaar zet beide lichtbronnen daarna aan of uit.

Bindings
De bindings die je nodig hebt voor jouw smarthome-componenten zijn met de Paper UI bij Add-ons met een muisklik te installeren. In ons voorbeeld hebben we eerst de Hue Binding en de Z-Wave Binding geactiveerd.
Als een binding actief is, meldt de web interface van openHAB 2 meteen dat er nieuwe apparaten gevonden zijn. In ons voorbeeld duiken daar na het toevoegen van de Hue-binding ook de bijbehorende lampen op. Die kun je met een muisklik dan als things laten opslaan. Bij ‘Configuration / Things’ kun je op dezelfde manier als bij de (Fibaro-)bewegingsmelder selecteren voor welk thing een of meerdere items aangemaakt moeten worden, bijvoorbeeld een gekleurde lamp of een dimbare lamp. Dan maak je via de blauwe knop met het plusteken meteen ook een groepsschakelaar voor de woonkamer, overloop of badkamer aan en ken je daar de betreffende verlichting aan toe. De bewegingsmelder wordt op dezelfde manier ingesteld.
Daarna zijn de lampen via Paper UI in en uit te schakelen en is de temperatuur van de sensor uit te lezen. Paper UI is maar beperkt geschikt voor het feitelijk bedienen van de smarthome-apparaten, maar openHAB 2 heeft wel een interface die geschikt is voor smartphones en tablets en apps voor iOS en Android. Die kunnen willekeurige schakelaars en informatie in een zelf gekozen lay-out tonen.
Sitemap
Een tekstbestand bepaalt de inhoud en de lay-out van de interface. Die zogeheten sitemap staat onder de installatiemap in /conf/sitemaps en heeft in ons voorbeeld de volgende opbouw:
Frames verdelen de interface in delen. Een frame kan een titel en pictogram krijgen en schakelaars en waarden laten zien. De letterkleur wordt door openHAB 2 dynamisch gekozen afhankelijk van de waarde: hoge temperaturen worden in rood aangegeven, lage in blauw.

Bijna vanzelf
Een webinterface maakt je huis nog niet smart. In het ideale geval neemt een smarthome de dagelijkse routinetaken over van zijn bewoners en reageert automatisch op bepaalde situaties. Daar biedt openHAB 2 zogenaamde rules voor, die bij bepaalde toestanden actief worden en dan bijvoorbeeld schakelaars omzetten. Eenvoudige regels kun je bij Paper UI met een muisklik aanmaken. Bij complexere situaties loopt de interface echter al snel tegen zijn grenzen aan. Daarom hebben we gekozen voor tekstgebaseerde regels. Net als bij de sitemap gaat het daarbij om simpele tekstbestanden. Die staan in /conf/rules met de extensie .rules. Om ze te bewerken volstaat een editor als Notepad++ met syntax highlighting. Een betere keus is echter Eclipse, dat ook een syntaxiscontrole heeft. Alle regels volgen een simpele if-then-logica. Meerdere triggers zijn met een logische OR te koppelen. De operatoren AND en AND/OR worden door open- HAB 2 bij die triggers op dit moment niet ondersteund. Er zijn maar een paar regels code nodig om het licht in de badkamer met behulp van een bewegingssensor in te schakelen:
Op het moment dat je de badkamer binnengaat, wordt de bewegingssensor getriggerd. De toestand van het item FibaroSensor1_MotionAlarm gaat daarbij van OFF naar ON. Als openHAB 2 die trigger herkent, stuurt de regel het commando 100 (de gewenste helderheid) naar de lamp met nummer 6. Die simpele regel heeft de schoonheidsfout dat het licht ook overdag aangaat als er iemand binnenkomt. Omdat de gebruikte sensor ook de helderheid meet, is het mogelijk de regel zo uit te breiden dat de lamp alleen aangaat als het donker is. Daar is een eenvoudige if-then genoeg voor die eerst de helderheid van de sensor controleert. Is die boven de 24 lux, dan blijft de lamp uit.

Variabele helderheid
Vaak is de volledige helderheid van de badkamerlamp helemaal niet nodig – bijvoorbeeld als je ’s nachts even naar het toilet moet. Daar kun je dan weer meer if-theninstructies voor toevoegen. Die testen in ons voorbeeld of het uur groter of gelijk is aan 0 en kleiner dan 7. In de tijd van middernacht tot zeven uur ’s morgens wordt de lamp dan wel aangedaan, maar met een helderheid van maar vijf procent. Dat ziet er als volgt uit:
Automatisch weer uit
Dan ontbreekt natuurlijk nog wel een regel om het licht weer automatisch uit te doen. De gangbare bewegingssensoren hebben een instelbare time-out en zetten hun status dan weer op off als ze binnen die periode geen beweging meer waarnemen. Het programmeren van een uitschakelregel werkt echter net zo makkelijk:
Beide regels zijn in een gemeenschappelijk tekstbestand met bijvoorbeeld de naam badkamerlamp.rules te zetten. Om het overzicht te behouden adviseren we om alle bij elkaar horende regels in een eigen tekstbestand te zetten.
Voor een spiegellamp op de badkamer kunnen die regels wel werken, maar bij de plafondlamp in de woonkamer betekent dit dat het licht de hele tijd uitgaat als je een paar minuten stil een boek op de bank zit te lezen. Dat probleem is met variabelen op te lossen. Je kunt de inschakelregel met
eerst laten controleren of de lamp voorheen ook echt uitgeschakeld was. Zo ja, zet dan de variabele geactiveerd op 1.
De uitschakelregel wordt dan uitgebreid met if (geactiveerd == 1) om ervoor te zorgen dat het licht niet uitgaat als het van tevoren handmatig ingeschakeld werd.
Meer mogelijkheden
Ook wat meer uitgebreide en complexe projecten als een automatische rolluikbesturing zijn met openHAB 2 snel te maken. Als hardware hebben we een Roller Shutter-module van Fibaro gebruikt. Die wordt in de bedrading van de aanwezige rolluik- of jaloezie-schakelaar aangebracht en kun je vervolgens achter de schakelaar wegwerken. Omdat daar 230 volt op staat, moet je wel uitkijken bij het inbouwen. De module ondersteunt het Z-Waveprotocol en is net zo makkelijk als thing toe te voegen als hiervoor beschreven. De Shutter-module ondersteunt de commando’s UP, DOWN en STOP. Met een geschikte rolluikmotor kun je ze ook procentueel naar beneden laten zakken. Om het rolluik met een smartphone of tablet te kunnen bedienen, moet je aan de sitemap het volgende nog toevoegen:
In het vervolg kun je met een tik op je mobiele apparaat de ruimte verduisteren.
Routinetaken
Dat is ten opzichte van een wandschakelaar maar een kleine winst natuurlijk. Maar openHAB 2 heeft het sterke punt dat het kan helpen bij de routinetaken als het dagelijks open en dicht maken van de rolluiken. Om ervoor te zorgen dat de rolluiken ’s avonds automatisch omlaag gaan en ’s morgens weer omhoog, hebben we eerst de Astro Binding geïnstalleerd. Aan de hand daarvan haalt openHAB 2 dagelijks de tijden van zonsopkomst en zonsondergang op van internet. Die dienen dan als trigger. ’s Avonds start openHAB 2 eerst een timer van 30 minuten om het resterende daglicht nog te kunnen benutten:

Zonneschijn
Het is ook mogelijk om de rolluiken in de middag omlaag te laten als de zon aan het schijnen is. Maar dat vergt even wat handwerk: de rolluiken moeten alleen omlaag als de zon ook echt schijnt. Daar heeft openHAB 2 een Weather Binding voor nodig die de actuele gegevens van de verschillende weerproviders opvraagt. Die Weather Binding is een van de oudere bindings die nog voor openHAB 1 ontwikkeld zijn. Daarom moet je in het tekstbestand nog wat aanpassen. Gelukkig hebben legacy-add-ons een uitgebreide documentatie, zodat ze toch makkelijk te gebruiken zijn. Zet in het bestand weather .cfg in de map conf/services de geocoördinaten van de plaats, de plaatsnaam, de aanbieder van de weerdata en zijn APIkey. We hebben met OpenweatherMaps gewerkt: na een anonieme registratie krijg je dan gratis API-toegang tot de weerdata.
Weerdata
De items met de weerdata moeten eveneens handmatig in een tekstbestand opgeslagen worden. Daar hebben we een bestand met de naam weer.items voor aangemaakt en naar de map conf/items verplaatst. Daar worden items aangemaakt volgens het schema type, benaming, label, pictogram (optioneel) en apparaat dan wel databron.
Voor een rolluik- of jaloeziebesturing zijn met name de bewolkingsdichtheid en de windsnelheid relevant. Het zelf gemaakte bestand met de weeritems krijgt daardoor de volgende twee regels:
Als de app- of de webinterface extra weerdata moeten weergeven, moet je nog meer items aanmaken, bijvoorbeeld voor de temperatuur of de weersverwachting, en die vervolgens in het sitemap-bestand zetten.
Bij de regels voor het buiten houden van de zon ’s middags hebben we de tijd als trigger gebruikt. Daar gebruikt open- HAB 2 dezelfde syntaxis voor als cron-jobs bij Linux.
In het voorbeeld wordt het verduisteren toegepast in de maanden juni tot en met september, vanaf 11:30 ’s morgens. Er wordt eerst gekeken of de windsnelheid onder de 15 m/s (ongeveer 50 km/u) is. Bij sterkere wind blijven de rolluiken open. De drie daarop volgende if-statements laten de rolluiken afhankelijk van de bewolking en de kamertemperatuur voor 80, 60 of 40 procent naar beneden. Het ’s avonds weer omhoog laten wordt eveneens door een door de tijd gestuurde regel gedaan.
Experimenteren
Afhankelijk van de positie van het raam loont het om wat te experimenteren met de verschillende rolluikpercentages en de bewolkingsdichtheid. Als je voor alle muren van je huis de juiste parameters gevonden hebt, gebruik je de mechanische jaloezieschakelaar in de praktijk eigenlijk niet meer.
Voordat openHAB 2 de controle helemaal overneemt, moet je er zeker van zijn dat bij een storm met windsnelheden van meer dan 15 m/s alle rolluiken en jaloezieën automatisch omhoog gaan (zie de listing hieronder).

Om ervoor te zorgen dat de regels bij toenemende windsnelheid meteen actie ondernemen, gebruiken we de verandering daarvan als trigger. Het probleem daarbij is wel dat de windsnelheid dagelijks meerdere malen verandert – en op stormachtige dagen dan telkens boven de drempelwaarde blijft. De regel zou dan telkens weer actief worden, zelfs als de rolluiken allang weer omhoog zijn. Om de motoren en de modules niet continu te belasten, vragen we eerst naar de positie van de rolluiken en sturen we het signaal alleen naar de motoren als ze nog niet omhoog gegaan zijn.
En nog meer
Door de overgang naar openHAB 2 zijn de ontwikkelaars een heel stuk dichter gekomen bij het doel van een makkelijk te bedienen smarthome-centrale – ook al werken sommige bindings en complexe regels alleen maar als je de configuratie handmatig in tekstbestanden aanpast.
Toch is het experimenteren met open- HAB 2 leuk: door de ontelbare bindings worden er amper grenzen aan de fantasie van de gebruiker gesteld bij het maken van eigen automatiseringen. Je kunt bijvoorbeeld vrij makkelijk regelen dat de videoweergave pauzeert en de tv op mute gaat als de telefoon rinkelt.
Als je een tekort aan ideeën hebt of hulp bij het programmeren van de regels kunt gebruiken, staat er in de fora van de levendige community genoeg input. In tegenstelling tot commerciële oplossingen stimuleert openHAB 2 het experimenteren, zijn er veel flexibele oplossingen mogelijk en is het beduidend minder duur.
Tip!
Ben je opzoek naar nieuwe hardware, software of accessoires?
Je vindt het in onze computerwinkel!


Praat mee