title: OpenHAB
text: open Home Automation Bus (openHAB) is een in Java ontwikkelde softwareoplossing, die componenten voor gebouwautomatisering van verschillende aanbieders op protocol-neutrale wijze in één fabrikantonafhankelijk platform met elkaar verbindt. Via al dan niet draadloze protocollen (ZigBee, WiFi, Bluetooth, Z-Wave, GSM, KNX, ethernet) kunnen lampen, gordijnen, alarm, audio en video aangestuurd en gemonitord worden.
  
  openHAB werd door Kai Kreuzer in 2010 opgezet en heeft vele mede-ontwikkelaars. Eind 2013 is besloten de openHAB-ontwikkeling deels als officieel Eclipse-project, onder de naam Eclipse SmartHome voort te zetten. openHAB en Eclipse SmartHome worden parallel ontwikkeld. Architectuur en functionaliteit worden overwegend in het Eclipse-SmartHome-Project ondergebracht, terwijl voor binding-ontwikkelaars de openHAB-website het eerst aangewezen adres is.
  
  In openHAB 2 ligt de focus op gebruikerscomfort bij het inrichten en configureren. Daarvoor zijn talrijke verbeteringen ten opzichte van de eerste versie doorgevoerd.
  
  openHAB is besturings-systeem onafhankelijk en is door het toevoegen van aanvullende bindingen met extra technologieën/protocollen uitbreidbaar. openHAB wordt onder de Eclipse Public License ontwikkeld en is open source. Als gebruikersinterfaces worden webbrowser, Android- en Apple iOS-systemen ondersteund.
  
  Ondersteuning en verspreiding 
  Belangrijke officiële ondersteuning is er bijvoorbeeld voor KNX, EnOcean, Insteon, Homematic en Hue. Op basis van Eclipse SmartHome zijn ook de eerste commerciële producten voor de massamarkt uitgekomen, zoals die van de Deutsche Telecom met QIVICON en Yetu, die beide Eclipse SmartHome als softwarebasis voor hun gateways gebruiken.
  
  Architectuur 
  
  Het openHAB-Project is opgedeeld in
   openhab-runtime: dit is het serverproces dat de acties uitvoert;
   openhab-designer: dit is een gebruiksvriendelijke configuratie-interface op basis van Eclipse.
  
  openHAB Runtime 
  De openHAB runtime is een pakket van OSGi bundels opgenomen in het OSGi Framework (Equinox). Het is een pure Java-oplossing waarvoor een JVM vereist is. Gebaseerd op het OSGi model, is in een zeer sterk modulaire architectuur voorzien, die het toevoegen of verwijderen van functionaliteit op de runtime mogelijk maakt zonder dat de service gestopt hoeft te worden.
  
  Communicatie 
  
  openHAB heeft twee interne communicatiekanalen:
   een asynchrone event-bus
   een item-repository (statusgeheugen)
  
  Event-bus 
  De event-bus is de basisservice van openHAB. Alle niet status gerelateerde bundels informeren hierlangs andere bundels over de status van events.
  
  Alle protocolbindings (die een fysieke link naar de echte hardware voorstellen) communiceren via deze event-bus.
  
  Als technische basis dient de OSGi EventAdmin service.
  
  Item-repository 
  Voor status gerelateerde functies biedt openHAB de item-repository, die met de event-bus verbonden is en de actuele status van de items bijhoudt. Hierdoor kan de item-repository gebruikt worden om de actuele status van een item op te vragen, bijvoorbeeld voor de weergave in een visualisatie, voor de verwerking in logica of voor de persistence (historie) service.
  
  De item-repository voorkomt daarmee dat de verbonden functie zijn status zelf op moet slaan en stelt deze in een centrale service ter beschikking.
  
  Sitemap 
  openHAB heeft een generieke configureerbare gebruikersinterface (UI), de zogenaamde sitemap. De sitemap is een boomstructuur van widgets, die de verschillende pagina's en de inhoud van de UI definiëren.
  
  Widgets kunnen items zijn, die de actuele status weergeven maar ook schakelaars of grafieken.
  Er kunnen verschillende sitemaps gedefinieerd worden, bijvoorbeeld voor mobiele apparaten of andere weergave-opties.
  
  Item aanbieders 
  Item-aanbieders bieden de mogelijkheid om de userinterface dynamisch te genereren. In de item- en groepsdefinities kunnen de afbeeldingen van de widgets geconfigureerd worden, zodat de sitemap van hieruit dynamisch samengesteld kan worden. Een toepassingsvoorbeeld is bijvoorbeeld om alle elementen uit een groep in één keer weer te geven door alleen de groep in de sitefile te declareren.
  
  openHAB designer 
  De openHAB designer is een Eclipse-RCP-toepassing voor het configureren van de openHAB-runtime. Het bevat een editor voor de benodigde configuratiegegevens en bevat syntaxis-controle, auto completion en context specifieke markeringen. Voor het maken van automatiseringslogica zijn functies gebruikt, waaraan de technologieën Xtext
  , Xbase, Quartz (tijdplansturing) en Joda Time (tijd- en datumberekeningen) ten grondslag liggen.
  
  Ondersteunde technologieën
  
  Bindingen 
  
  Het OSGi-platform staat vanwege de modulaire architectuur, flexibele extensietechnologieën toe.
  Daardoor kan de functionaliteit door het toevoegen van bindingen eenvoudig aangepast worden. De volgende bindingen zijn inmiddels beschikbaar en het aantal wordt voortdurend uitgebreid:
  
  Asterisk, Astro (Zonnestandberekeningen), Bluetooth, Comfo Air, CUPS, digitalSTROM, Daikin, DMX512, EnOcean, eKey, Epson Projector, Exec (Execute Command), Fritz!Box, Fritz AHA, GPIO, HDAnywhere, Heatmiser, HomeMatic, HTTP, IHC / ELKO, INSTEON Hub, IRTrans, KNX, Koubachi, MAX!Cube, MiLight, LCN Gebäudeleittechnik, Leviton/HAI Omnilink, Modbus TCP und RTU, MPD, MQTT, Netatmo, Network Health, Nibe Heatpump, Nikobus, Novelan/Luxtronic Heatpump, NTP, One-Wire, Onkyo AV Receiver, Open energy monitor, OpenPaths, OpenSprinkler, OSGi Configuration Admin, Philips Hue, Piface, Pioneer AV receiver, Plex, Plugwise, PLCBus, PulseAudio, Pushover, Prowl, PulseAudio Server, RFXCOM, Samsung TV, Serial, SNMP, Squeezebox, System Info, Somfy URTSI II, Sonos, Souliss, TCP/UDP, Tellstick, Swegon ventilation, TinkerForge, Tivo, VDR, Twitter, Wake-on-LAN, XBMC, Xively, xPL, Z-Wave
  
  Er zijn ook uitbreidingen die niet als binding geconfigureerd worden, maar als programmadeel geïntegreerd kunnen worden:
   Dropbox Support
   Google Calendar en CalDAV-ondersteuning
   Text to speech-Implementatie (TTS)
   HABDroid kan via Spraaksturing Acties uitvoeren
  Communities uit de IoT-wereld stellen op Arduino-gebaseerde platformen ter beschikking, die via seriële-, MQTT- of Souliss-bindingen op openHAB aangesloten kunnen worden.
  
  Persistence 
  De persistence service regelt de opslag van statusveranderingen van de verschillende items.
  Hiermee kan het verloop van een waarde worden gevisualiseerd, historische gegevens worden opgevraagd of bij een herstart van het systeem de oorspronkelijke stand weer worden ingenomen.
  
  De volgende services zijn momenteel beschikbaar:
  
   db4o – een Java-Object-Database
   rrd4j – een Java-Versie van de round-robin-Database RRDtool.
   MySQL – een interface naar een MySQL-database.
   Open.Sen.Se – een Internet-of-Things-platform
   logging using Logback – schrijft itemstatus naar een logfile met flexibele syntaxdefinitie
  
  Interfaces
  
  User Interfaces 
   Classic UI – klassieke webinterface
   Apple iOS client
   Android Client – HABDroid is een open source Android user interface voor openHAB
   Windows 10 client
   CometVisu
  
  NFC (Near Field Communicatie) 
  De Android-client HABDroid is in staat NFC-tags te beschrijven en te lezen. Hierdoor kan door het scannen van een specifieke NFC-tags een bijbehorende actie uitgevoerd worden.
  
  OSGi Console 
  
  openHAB kan via de OSGi-console bediend worden.
  
  Daarmee kunnen commando's over de eventbus verzonden worden, om bijvoorbeeld Items in- of uit te schakelen of de status op te vragen.
     ---openHAB commands---
     	openhab send <item> <command> – zend een opdracht naar een Item (bijv. Licht aan)
     	openhab status <item> – vraagt  de aktuele Status van een Item op
     	openhab say <sentence to say> – spreekt een Bericht uit met behulp van de TTS Speech-Engine
  
  Spraaksturing 
  Door middel van de mobiele applicatie HABDroid is spraakbesturing beschikbaar, hiervoor wordt gebruikgemaakt van de Google Speech Engine. Ook kan de Amazon spraakdienst (Alexa) met Amazon Echo of Amazon Dot op openHAB aangesloten worden. Dit wordt via HUE-emulatie uitgevoerd, maar zal in de toekomst ook via Alexa Skill aangeboden worden.
  
  XMPP Instant Messaging Console 
  openHAB ondersteunt toegang op afstand via XMPP (Jabber). Daarmee kan via een persoonlijk Jabber-account met de huisautomatisering „gechat“ worden. Commando's zijn vergelijkbaar met die van de OSGi-console.
  
  Google Calender Console 
  Andere mogelijkheden, openHAB-commando's te geven, kan tijdgestuurd via een bijbehorende instructie in Google Calendar of via CalDav-kalender (bijv. ownCloud).
  
  REST-API 
  De RESTful Interface voorziet in een open interface om openHAB te laten communiceren met andere systemen.
  
  my.openHAB 
  De clouddienst my.openHAB maakt het mogelijk om met de Android app (HABDroid) zonder poort ontsluiting of DynDNS toegang op afstand en directe push-notificaties te verwezenlijken. De service IFTTT is geïntegreerd in my.openHAB.
  
  MQTT 
  Door middel van de MQTT-binding kunnen item-statussen tussen de MQTT-broker en openHAB uitgewisseld worden.
  
  Externe links 
   openhab.org — Officiële website van openHAB
   eclipse.org/smarthome/ eclipseorg — Officiële website van Eclipse SmartHome
   innoq.com/... — Artikel van Kai Kreuzer, de uitvinder van openHAB over Eclipse SmartHome, 10 november 2014
   docs.openhab.org — Officiële openHAB 2 documentatie
   opensource.com - Overzicht open source domotica systemen
   tweakblogs.net - Aan de slag met openHAB 2  RFxcom  en  Milight, 27 april 2016
   mysensors.org - Controller overzicht
  
  Domotica
  Software geschreven in Java
  Opensourcesoftware en vrije software