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