openhab-docs/v2.2/addons/bindings/mqtt1/readme.html

1628 lines
57 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--<link rel="shortcut icon" href="https://www.openhab.org/favicon.png"></link>-->
<title>MQTT - Bindings - openHAB 2 - Empowering the Smart Home</title>
<!-- CSS -->
<link type="text/css" rel="stylesheet" href="/v2.2/css/materialize.css" media="screen,projection" />
<link type="text/css" rel="stylesheet" href="/v2.2/css/pygments-jekyll-style.css" />
<link type="text/css" rel="stylesheet" href="/v2.2/css/styles.css" />
<link type="text/css" rel="stylesheet" href="/v2.2/css/openhab.css" />
<link type="text/css" rel="stylesheet" href="/v2.2/css/collapsible.css" />
<!-- Font -->
<link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
<link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400,700" />
<link rel="canonical" href="https://docs.openhab.org/addons/bindings/mqtt1/readme.html" />
<script type="text/javascript">var gaProperty = 'UA-47717934-3';var disableStr = 'ga-disable-' + gaProperty;if (document.cookie.indexOf(disableStr + '=true') > -1) {window[disableStr] = true;}</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-47717934-3', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
</script>
</head>
<body class="documentation">
<div id="header" class="navbar-fixed">
<nav role="navigation">
<div class="container">
<div class="nav-wrapper">
<a href="/v2.2/index.html"><img id="logo" src="/images/logo.png" /></a>
<a href="#" data-activates="nav-mobile" class="button-collapse"><i class="material-icons">menu</i></a>
<ul class="right hide-on-med-and-down">
<li><a href="/tutorials/index.html">Tutorials</a></li>
<li><a href="/v2.2/introduction.html">User Manual</a></li>
<li><a href="/developers/index.html">Developer Guide</a></li>
<li><a target="_blank" href="https://community.openhab.org">Community Forum</a></li>
<li><a target="_blank" href="https://github.com/openhab">GitHub</a></li>
<li class="search"><i class="material-icons">search</i></li>
<li class="search">
<form method="GET" id="searchform" class="search-form" action="/search">
<input id="query" name="q" type="text" class="search-form-input" placeholder="search" />
</form>
</li>
</ul>
<ul id="nav-mobile" class="side-nav">
<li><a href="/v2.2/index.html">Home</a></li>
<li><a href="/tutorials/index.html">Tutorials</a></li>
<li><a href="/v2.2/introduction.html">User Manual</a></li>
<li><a href="/developers/index.html">Developer Guide</a></li>
<li><a target="_blank" href="https://community.openhab.org">Community Forum</a></li>
<li><a target="_blank" href="https://github.com/openhab">GitHub</a></li>
<li class="search">
<form method="GET" id="searchformmob" class="search-form" action="/search">
<input id="querymob" name="q" type="text" class="search-form-input" placeholder="search" />
</form>
</li>
</ul>
</div>
</div>
</nav>
</div>
<section id="documentation" class="text content-wrapper">
<div class="container">
<div class="side-nav-wrapper">
<ul class="nav">
<li><a href="/v2.2/introduction.html">Introduction</a></li>
<li><a href="/v2.2/concepts/index.html">Concepts</a>
<ul>
<li><a href="/v2.2/concepts/index.html">Overview</a></li>
<hr />
<li><a href="/v2.2/concepts/things.html">Things</a></li>
<li><a href="/v2.2/concepts/items.html">Items</a></li>
<li><a href="/v2.2/concepts/discovery.html">Inbox &amp; Discovery</a></li>
<li><a href="/v2.2/concepts/audio.html">Audio &amp; Voice</a></li>
</ul>
</li>
<li><a href="/v2.2/installation/index.html">Installation</a>
<ul>
<li><a href="/v2.2/installation/index.html">Overview</a></li>
<hr />
<li><a href="/v2.2/installation/linux.html">Linux</a></li>
<li><a href="/v2.2/installation/windows.html">Windows</a></li>
<li><a href="/v2.2/installation/macosx.html">Mac OS X</a></li>
<hr />
<li><a href="/v2.2/installation/openhabian.html">openHABian</a></li>
<li><a href="/v2.2/installation/docker.html">Docker</a></li>
<hr />
<li><a href="/v2.2/installation/rasppi.html">Raspberry Pi</a></li>
<li><a href="/v2.2/installation/pine.html">Pine A64</a></li>
<li><a href="/v2.2/installation/synology.html">Synology DiskStation</a></li>
<li><a href="/v2.2/installation/qnap.html">QNAP NAS</a></li>
<hr />
<li><a href="/v2.2/installation/security.html">Security &amp; Remote Access</a></li>
<li><a href="http://www.myopenhab.org">myopenHAB</a></li>
</ul>
</li>
<li><a href="/v2.2/configuration/index.html">Configuration</a>
<ul>
<li><a href="/v2.2/configuration/index.html">Overview</a></li>
<hr />
<li><a href="/v2.2/configuration/things.html">Things</a></li>
<li><a href="/v2.2/configuration/items.html">Items</a></li>
<li><a href="/v2.2/configuration/sitemaps.html">Sitemaps</a></li>
<li><a href="/v2.2/configuration/transform.html">Transformations</a></li>
<li><a href="/v2.2/configuration/persistence.html">Persistence</a></li>
<li><a href="/v2.2/configuration/rules-dsl.html">Rules</a></li>
<li><a href="/v2.2/configuration/jsr223.html">JSR223 Scripting</a>
<ul>
<li><a href="/v2.2/configuration/jsr223.html">Overview</a>
<hr />
<li><a href="/v2.2/configuration/jsr223-js.html">Javascript</a></li>
<li><a href="/v2.2/configuration/jsr223-jython.html">Jython</a></li>
</ul>
</li>
<li><a href="/v2.2/configuration/services.html">Services</a></li>
<hr />
<li><a href="/v2.2/configuration/packages.html">Initial Setup Packages</a></li>
<li><a href="/v2.2/configuration/homebuilder.html">Home Builder</a></li>
<li><a href="/v2.2/configuration/paperui.html">Paper UI</a></li>
<li><a href="/v2.2/configuration/habmin.html">HABmin</a></li>
<li><a href="/v2.2/configuration/habpanel.html">HABPanel</a></li>
<li><a href="/v2.2/configuration/rules-ng.html">Rules (Experimental)</a></li>
<li><a href="/v2.2/configuration/editors.html">Editors</a></li>
<hr />
<li><a href="/v2.2/configuration/multimedia.html">Audio &amp; Voice</a></li>
</ul>
</li>
<li><a href="/v2.2/addons/index.html">Add-ons</a>
<ul>
<li><a href="/v2.2/addons/index.html">Overview</a></li>
<hr />
<li><a href="/v2.2/addons/bindings.html">Bindings</a>
<ul>
<li><a href="/v2.2/addons/bindings.html">Overview</a></li>
<hr />
<li><a href="/v2.2/addons/bindings/airquality/readme.html">Air Quality</a></li>
<li><a href="/v2.2/addons/bindings/alarmdecoder1/readme.html">Alarm Decoder</a></li>
<li><a href="/v2.2/addons/bindings/allplay/readme.html">AllPlay</a></li>
<li><a href="/v2.2/addons/bindings/amazondashbutton/readme.html">Amazon Dash Button</a></li>
<li><a href="/v2.2/addons/bindings/anel1/readme.html">Anel NET-PwrCtrl</a></li>
<li><a href="/v2.2/addons/bindings/astro/readme.html">Astro</a></li>
<li><a href="/v2.2/addons/bindings/atlona/readme.html">Atlona</a></li>
<li><a href="/v2.2/addons/bindings/autelis/readme.html">Autelis Pool Control</a></li>
<li><a href="/v2.2/addons/bindings/avmfritz/readme.html">AVM FRITZ!</a></li>
<li><a href="/v2.2/addons/bindings/bigassfan/readme.html">BigAssFan</a></li>
<li><a href="/v2.2/addons/bindings/boschindego/readme.html">Bosch Indego</a></li>
<li><a href="/v2.2/addons/bindings/bticino1/readme.html">Bticino</a></li>
<li><a href="/v2.2/addons/bindings/caldav-command1/readme.html">CalDAV Command</a></li>
<li><a href="/v2.2/addons/bindings/caldav-personal1/readme.html">CalDAV Personal</a></li>
<li><a href="/v2.2/addons/bindings/chromecast/readme.html">Chromecast</a></li>
<li><a href="/v2.2/addons/bindings/cm11a/readme.html">Cm11a (X10 controller)</a></li>
<li><a href="/v2.2/addons/bindings/comfoair1/readme.html">ComfoAir</a></li>
<li><a href="/v2.2/addons/bindings/coolmasternet/readme.html">CoolMasterNet</a></li>
<li><a href="/v2.2/addons/bindings/denon1/readme.html">Denon</a></li>
<li><a href="/v2.2/addons/bindings/digitalstrom/readme.html">digitalSTROM</a></li>
<li><a href="/v2.2/addons/bindings/dlinksmarthome/readme.html">D-Link Smart Home</a></li>
<li><a href="/v2.2/addons/bindings/dmx/readme.html">DMX</a></li>
<li><a href="/v2.2/addons/bindings/dscalarm/readme.html">DSC Alarm</a></li>
<li><a href="/v2.2/addons/bindings/dsmr1/readme.html">DSMR</a></li>
<li><a href="/v2.2/addons/bindings/ebus1/readme.html">eBUS</a></li>
<li><a href="/v2.2/addons/bindings/ecobee1/readme.html">Ecobee</a></li>
<li><a href="/v2.2/addons/bindings/ecotouch1/readme.html">EcoTouch</a></li>
<li><a href="/v2.2/addons/bindings/ekey1/readme.html">ekey</a></li>
<li><a href="/v2.2/addons/bindings/energenie1/readme.html">Energenie</a></li>
<li><a href="/v2.2/addons/bindings/enocean1/readme.html">EnOcean</a></li>
<li><a href="/v2.2/addons/bindings/enphaseenergy1/readme.html">Enphase Energy</a></li>
<li><a href="/v2.2/addons/bindings/epsonprojector1/readme.html">Epson Projector</a></li>
<li><a href="/v2.2/addons/bindings/exec/readme.html">Exec</a></li>
<li><a href="/v2.2/addons/bindings/expire1/readme.html">Expire</a></li>
<li><a href="/v2.2/addons/bindings/fatekplc1/readme.html">Fatek PLC</a></li>
<li><a href="/v2.2/addons/bindings/feed/readme.html">Feed</a></li>
<li><a href="/v2.2/addons/bindings/feican/readme.html">Feican</a></li>
<li><a href="/v2.2/addons/bindings/folding/readme.html">Folding@home</a></li>
<li><a href="/v2.2/addons/bindings/freebox/readme.html">Freebox</a></li>
<li><a href="/v2.2/addons/bindings/freeswitch1/readme.html">FreeSWITCH</a></li>
<li><a href="/v2.2/addons/bindings/fritzbox1/readme.html">Fritz!Box</a></li>
<li><a href="/v2.2/addons/bindings/fritzboxtr0641/readme.html">Fritzbox (using TR064 protocol)</a></li>
<li><a href="/v2.2/addons/bindings/fs201/readme.html">FS20</a></li>
<li><a href="/v2.2/addons/bindings/fsinternetradio/readme.html">FS Internet Radio</a></li>
<li><a href="/v2.2/addons/bindings/garadget1/readme.html">Garadget</a></li>
<li><a href="/v2.2/addons/bindings/gardena/readme.html">Gardena</a></li>
<li><a href="/v2.2/addons/bindings/gc100ir1/readme.html">Global Cache IR</a></li>
<li><a href="/v2.2/addons/bindings/globalcache/readme.html">GlobalCache</a></li>
<li><a href="/v2.2/addons/bindings/harmonyhub/readme.html">Logitech Harmony Hub</a></li>
<li><a href="/v2.2/addons/bindings/hdanywhere/readme.html">HDanywhere</a></li>
<li><a href="/v2.2/addons/bindings/hdpowerview/readme.html">Hunter Douglas PowerView</a></li>
<li><a href="/v2.2/addons/bindings/heatmiser1/readme.html">Heatmiser</a></li>
<li><a href="/v2.2/addons/bindings/homematic/readme.html">Homematic</a></li>
<li><a href="/v2.2/addons/bindings/http1/readme.html">HTTP</a></li>
<li><a href="/v2.2/addons/bindings/hue/readme.html">Philips Hue</a></li>
<li><a href="/v2.2/addons/bindings/icloud/readme.html">iCloud</a></li>
<li><a href="/v2.2/addons/bindings/ihc1/readme.html">IHC / ELKO</a></li>
<li><a href="/v2.2/addons/bindings/insteonplm1/readme.html">Insteon PLM</a></li>
<li><a href="/v2.2/addons/bindings/intertechno1/readme.html">Intertechno</a></li>
<li><a href="/v2.2/addons/bindings/ipp/readme.html">IPP</a></li>
<li><a href="/v2.2/addons/bindings/ipx8001/readme.html">IPX800</a></li>
<li><a href="/v2.2/addons/bindings/irtrans1/readme.html">IRTrans</a></li>
<li><a href="/v2.2/addons/bindings/jeelink/readme.html">Jeelink</a></li>
<li><a href="/v2.2/addons/bindings/jointspace1/readme.html">jointSPACE</a></li>
<li><a href="/v2.2/addons/bindings/keba/readme.html">Keba</a></li>
<li><a href="/v2.2/addons/bindings/knx1/readme.html">KNX</a></li>
<li><a href="/v2.2/addons/bindings/kodi/readme.html">Kodi</a></li>
<li><a href="/v2.2/addons/bindings/kostalinverter/readme.html">Kostal Inverter</a></li>
<li><a href="/v2.2/addons/bindings/koubachi1/readme.html">Koubachi</a></li>
<li><a href="/v2.2/addons/bindings/lcn1/readme.html">LCN</a></li>
<li><a href="/v2.2/addons/bindings/lgtv1/readme.html">LG TV</a></li>
<li><a href="/v2.2/addons/bindings/lgtvserial/readme.html">LG TV control using serial protocol</a></li>
<li><a href="/v2.2/addons/bindings/lgwebos/readme.html">LG webOS</a></li>
<li><a href="/v2.2/addons/bindings/lifx/readme.html">LIFX</a></li>
<li><a href="/v2.2/addons/bindings/lirc/readme.html">LIRC</a></li>
<li><a href="/v2.2/addons/bindings/loxone/readme.html">Loxone</a></li>
<li><a href="/v2.2/addons/bindings/lutron/readme.html">Lutron</a></li>
<li><a href="/v2.2/addons/bindings/max/readme.html">MAX!</a></li>
<li><a href="/v2.2/addons/bindings/maxcul1/readme.html">MAX!CUL</a></li>
<li><a href="/v2.2/addons/bindings/meteostick/readme.html">Meteostick</a></li>
<li><a href="/v2.2/addons/bindings/miele/readme.html">Miele@home</a></li>
<li><a href="/v2.2/addons/bindings/mihome/readme.html">Xiaomi Mi Smart Home</a></li>
<li><a href="/v2.2/addons/bindings/milight/readme.html">Milight/Easybulb/Limitless</a></li>
<li><a href="/v2.2/addons/bindings/minecraft/readme.html">Minecraft</a></li>
<li><a href="/v2.2/addons/bindings/mios1/readme.html">MiOS Bridge</a></li>
<li><a href="/v2.2/addons/bindings/mochadx101/readme.html">Mochad X10</a></li>
<li><a href="/v2.2/addons/bindings/modbus1/readme.html">Modbus</a></li>
<li><a href="/v2.2/addons/bindings/mqtt1/readme.html">MQTT</a></li>
<li><a href="/v2.2/addons/bindings/mqttitude1/readme.html">OwnTracks (formerly MQTTitude)</a></li>
<li><a href="/v2.2/addons/bindings/myq1/readme.html">Chamberlain MyQ</a></li>
<li><a href="/v2.2/addons/bindings/neohub1/readme.html">NeoHub</a></li>
<li><a href="/v2.2/addons/bindings/nest/readme.html">Nest</a></li>
<li><a href="/v2.2/addons/bindings/netatmo/readme.html">Netatmo</a></li>
<li><a href="/v2.2/addons/bindings/network/readme.html">Network</a></li>
<li><a href="/v2.2/addons/bindings/networkupstools1/readme.html">Network UPS Tools</a></li>
<li><a href="/v2.2/addons/bindings/nibeheatpump1/readme.html">Nibe Heatpump</a></li>
<li><a href="/v2.2/addons/bindings/nikobus1/readme.html">Nikobus</a></li>
<li><a href="/v2.2/addons/bindings/nikohomecontrol/readme.html">Niko Home Control</a></li>
<li><a href="/v2.2/addons/bindings/novelanheatpump1/readme.html">Novelan/Luxtronic Heat Pump</a></li>
<li><a href="/v2.2/addons/bindings/ntp/readme.html">NTP</a></li>
<li><a href="/v2.2/addons/bindings/oceanic/readme.html">Oceanic</a></li>
<li><a href="/v2.2/addons/bindings/onebusaway/readme.html">OneBusAway</a></li>
<li><a href="/v2.2/addons/bindings/onewire1/readme.html">OneWire</a></li>
<li><a href="/v2.2/addons/bindings/onkyo/readme.html">Onkyo</a></li>
<li><a href="/v2.2/addons/bindings/openenergymonitor1/readme.html">Open Energy Monitor</a></li>
<li><a href="/v2.2/addons/bindings/opensprinkler/readme.html">OpenSprinkler</a></li>
<li><a href="/v2.2/addons/bindings/orvibo/readme.html">Orvibo</a></li>
<li><a href="/v2.2/addons/bindings/owserver1/readme.html">OWServer</a></li>
<li><a href="/v2.2/addons/bindings/panasonictv1/readme.html">Panasonic TV</a></li>
<li><a href="/v2.2/addons/bindings/piface1/readme.html">Piface</a></li>
<li><a href="/v2.2/addons/bindings/pioneeravr/readme.html">PioneerAVR Configuration</a></li>
<li><a href="/v2.2/addons/bindings/plex1/readme.html">Plex</a></li>
<li><a href="/v2.2/addons/bindings/plugwise/readme.html">Plugwise</a></li>
<li><a href="/v2.2/addons/bindings/powermax1/readme.html">Visonic Powermax</a></li>
<li><a href="/v2.2/addons/bindings/pulseaudio/readme.html">Pulseaudio</a></li>
<li><a href="/v2.2/addons/bindings/regoheatpump/readme.html">RegoHeatPump</a></li>
<li><a href="/v2.2/addons/bindings/rfxcom/readme.html">RFXCOM</a></li>
<li><a href="/v2.2/addons/bindings/rme/readme.html">RME</a></li>
<li><a href="/v2.2/addons/bindings/rotelra1x/readme.html">Rotel Amplifier</a></li>
<li><a href="/v2.2/addons/bindings/russound/readme.html">Russound</a></li>
<li><a href="/v2.2/addons/bindings/rwesmarthome1/readme.html">RWE SmartHome</a></li>
<li><a href="/v2.2/addons/bindings/samsungac1/readme.html">Samsung Air Conditioner</a></li>
<li><a href="/v2.2/addons/bindings/samsungtv/readme.html">Samsung TV</a></li>
<li><a href="/v2.2/addons/bindings/sapp1/readme.html">Picnet Sapp</a></li>
<li><a href="/v2.2/addons/bindings/satel1/readme.html">Satel Integra Alarm System</a></li>
<li><a href="/v2.2/addons/bindings/sensebox/readme.html">senseBox</a></li>
<li><a href="/v2.2/addons/bindings/serial1/readme.html">Serial</a></li>
<li><a href="/v2.2/addons/bindings/serialbutton/readme.html">Serial Button</a></li>
<li><a href="/v2.2/addons/bindings/silvercrestwifisocket/readme.html">Silvercrest Wifi Plug</a></li>
<li><a href="/v2.2/addons/bindings/sleepiq/readme.html">SleepIQ</a></li>
<li><a href="/v2.2/addons/bindings/smaenergymeter/readme.html">SMA Energy Meter</a></li>
<li><a href="/v2.2/addons/bindings/snmp1/readme.html">SNMP</a></li>
<li><a href="/v2.2/addons/bindings/sonance1/readme.html">Sonance</a></li>
<li><a href="/v2.2/addons/bindings/sonos/readme.html">Sonos</a></li>
<li><a href="/v2.2/addons/bindings/souliss1/readme.html">Souliss</a></li>
<li><a href="/v2.2/addons/bindings/squeezebox/readme.html">Logitech Squeezebox</a></li>
<li><a href="/v2.2/addons/bindings/swegonventilation1/readme.html">Swegon Ventilation</a></li>
<li><a href="/v2.2/addons/bindings/synopanalyzer/readme.html">Synop Analyzer</a></li>
<li><a href="/v2.2/addons/bindings/systeminfo/readme.html">Systeminfo</a></li>
<li><a href="/v2.2/addons/bindings/tankerkoenig/readme.html">Tankerkönig</a></li>
<li><a href="/v2.2/addons/bindings/tcp1/readme.html">TCP & UDP</a></li>
<li><a href="/v2.2/addons/bindings/tellstick/readme.html">Tellstick</a></li>
<li><a href="/v2.2/addons/bindings/tesla/readme.html">Tesla</a></li>
<li><a href="/v2.2/addons/bindings/tinkerforge1/readme.html">TinkerForge</a></li>
<li><a href="/v2.2/addons/bindings/toon/readme.html">Toon</a></li>
<li><a href="/v2.2/addons/bindings/tplinksmarthome/readme.html">TPLinkSmartHome</a></li>
<li><a href="/v2.2/addons/bindings/tradfri/readme.html">TRÅDFRI</a></li>
<li><a href="/v2.2/addons/bindings/upb1/readme.html">UPB</a></li>
<li><a href="/v2.2/addons/bindings/urtsi/readme.html">Somfy URTSI II</a></li>
<li><a href="/v2.2/addons/bindings/vitotronic/readme.html">Vitotronic</a></li>
<li><a href="/v2.2/addons/bindings/weather1/readme.html">Weather</a></li>
<li><a href="/v2.2/addons/bindings/weatherunderground/readme.html">WeatherUnderground</a></li>
<li><a href="/v2.2/addons/bindings/wemo/readme.html">Belkin Wemo</a></li>
<li><a href="/v2.2/addons/bindings/wifiled/readme.html">WiFi LED</a></li>
<li><a href="/v2.2/addons/bindings/windcentrale/readme.html">Windcentrale</a></li>
<li><a href="/v2.2/addons/bindings/wol1/readme.html">Wake-on-LAN</a></li>
<li><a href="/v2.2/addons/bindings/xbmc1/readme.html">XBMC binding (for KODI) (1.x)</a></li>
<li><a href="/v2.2/addons/bindings/yahooweather/readme.html">YahooWeather</a></li>
<li><a href="/v2.2/addons/bindings/yamahareceiver/readme.html">Yamahareceiver</a></li>
<li><a href="/v2.2/addons/bindings/zigbee/readme.html">ZigBee</a></li>
<li><a href="/v2.2/addons/bindings/zoneminder/readme.html">Zoneminder</a></li>
<li><a href="/v2.2/addons/bindings/zwave/readme.html">ZWave</a></li>
<li><a href="/v2.2/addons/bindings/zway/readme.html">Z-Way</a></li>
</ul>
</li>
<li><a href="/v2.2/addons/uis.html">User Interfaces</a>
<ul>
<li><a href="/v2.2/addons/uis.html">Overview</a></li>
<hr />
<li><a href="/v2.2/addons/uis/basic/readme.html">Basic UI</a></li>
<li><a href="/v2.2/addons/uis/classic/readme.html">Classic UI</a></li>
<li><a href="/v2.2/addons/uis/habmin/readme.html">HABmin</a></li>
<li><a href="/v2.2/addons/uis/habpanel/doc/habpanel.html"></a></li>
<li><a href="/v2.2/addons/uis/habpanel/readme.html">HABPanel</a></li>
<li><a href="/v2.2/addons/uis/paper/readme.html">Paper UI</a></li>
<hr />
<li><a href="/v2.2/addons/uis/apps/android.html">Android App</a></li>
<li><a href="/v2.2/addons/uis/apps/ios.html">iOS App</a></li>
<li><a href="/v2.2/addons/uis/apps/windows.html">Windows 10 App</a></li>
<hr />
<li><a href="/v2.2/addons/iconsets/classic/readme.html">Iconset (classic)</a></li>
</ul>
</li>
<li><a href="/v2.2/addons/persistence.html">Persistence</a>
<ul>
<li><a href="/v2.2/addons/persistence.html">Overview</a></li>
<hr />
<li><a href="/v2.2/addons/persistence/influxdb/readme.html">InfluxDB (0.9 and newer)</a></li>
<li><a href="/v2.2/addons/persistence/jdbc/readme.html">JDBC</a></li>
<li><a href="/v2.2/addons/persistence/jpa/readme.html">Java Persistence API (JPA)</a></li>
<li><a href="/v2.2/addons/persistence/mapdb/readme.html">mapdb</a></li>
<li><a href="/v2.2/addons/persistence/mqtt/readme.html">MQTT</a></li>
<li><a href="/v2.2/addons/persistence/mysql/readme.html">MySQL</a></li>
<li><a href="/v2.2/addons/persistence/rrd4j/readme.html">rrd4j</a></li>
</ul>
</li>
<li><a href="/v2.2/addons/actions.html">Actions</a>
<ul>
<li><a href="/v2.2/addons/actions.html">Overview</a></li>
<hr />
<li><a href="/v2.2/addons/actions/ecobee/readme.html">Ecobee</a></li>
<li><a href="/v2.2/addons/actions/mail/readme.html">Mail</a></li>
<li><a href="/v2.2/addons/actions/mios/readme.html">MiOS</a></li>
<li><a href="/v2.2/addons/actions/mqtt/readme.html">MQTT</a></li>
<li><a href="/v2.2/addons/actions/nma/readme.html">NotifyMyAndroid</a></li>
<li><a href="/v2.2/addons/actions/pebble/readme.html">Pebble</a></li>
<li><a href="/v2.2/addons/actions/prowl/readme.html">Prowl</a></li>
<li><a href="/v2.2/addons/actions/pushbullet/readme.html">Pushbullet</a></li>
<li><a href="/v2.2/addons/actions/pushover/readme.html">Pushover</a></li>
<li><a href="/v2.2/addons/actions/pushsafer/readme.html">Pushsafer</a></li>
<li><a href="/v2.2/addons/actions/satel/readme.html">Satel</a></li>
<li><a href="/v2.2/addons/actions/telegram/readme.html">Telegram</a></li>
<li><a href="/v2.2/addons/actions/twitter/readme.html">Twitter</a></li>
<li><a href="/v2.2/addons/actions/xbmc/readme.html">XBMC</a></li>
<li><a href="/v2.2/addons/actions/xmpp/readme.html">XMPP</a></li>
</ul>
</li>
<li><a href="/v2.2/addons/transformations.html">Transformations</a>
<ul>
<li><a href="/v2.2/addons/transformations.html">Overview</a></li>
<hr />
<li><a href="/v2.2/addons/transformations/exec/readme.html">Exec</a></li>
<li><a href="/v2.2/addons/transformations/javascript/readme.html">JavaScript</a></li>
<li><a href="/v2.2/addons/transformations/jsonpath/readme.html">JsonPath</a></li>
<li><a href="/v2.2/addons/transformations/map/readme.html">Map</a></li>
<li><a href="/v2.2/addons/transformations/regex/readme.html">RegEx</a></li>
<li><a href="/v2.2/addons/transformations/scale/readme.html">Scale</a></li>
<li><a href="/v2.2/addons/transformations/xpath/readme.html">XPath</a></li>
<li><a href="/v2.2/addons/transformations/xslt/readme.html">XSLT</a></li>
</ul>
</li>
<li><a href="/v2.2/addons/voices.html">Voice Services</a>
<ul>
<li><a href="/v2.2/addons/voices.html">Overview</a></li>
<hr />
<li><a href="/v2.2/addons/voices/mactts/readme.html">MacOS Text-to-Speech</a></li>
<li><a href="/v2.2/addons/voices/marytts/readme.html">Mary Text-to-Speech</a></li>
<li><a href="/v2.2/addons/voices/voicerss/readme.html">VoiceRSS Text-to-Speech</a></li>
</ul>
</li>
<hr />
<li><a href="/v2.2/addons/io.html">3rd Party Integration</a>
<ul>
<li><a href="/v2.2/addons/io.html">Overview</a></li>
<hr />
<li><a href="/v2.2/addons/ios/alexa-skill/readme.html">Amazon Alexa Skill</a></li>
<li><a href="/v2.2/addons/ios/dropbox/readme.html">Dropbox Synchronization</a></li>
<li><a href="/v2.2/addons/ios/gcal/readme.html">Google Calendar Scheduler</a></li>
<li><a href="/v2.2/addons/ios/homekit/readme.html">HomeKit Add-on</a></li>
<li><a href="/v2.2/addons/ios/hueemulation/readme.html">openHAB Hue Emulation</a></li>
<li><a href="/v2.2/addons/ios/imperihome/readme.html">ImperiHome integration service</a></li>
<li><a href="/v2.2/addons/ios/mycroft-skill/readme.html">Mycroft AI Skill</a></li>
<li><a href="/v2.2/addons/ios/openhabcloud/readme.html">openHAB Cloud Connector</a></li>
<hr />
<li><a href="/v2.2/configuration/restdocs.html">REST API</a></li>
<li><a href="/v2.2/configuration/eclipseiotmarket.html">Eclipse IoT Marketplace</a></li>
<li><a href="http://www.myopenhab.org/" target="_blank">IFTTT</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="/v2.2/administration/index.html">Advanced Functionality</a>
<ul>
<li><a href="/v2.2/administration/index.html">Overview</a></li>
<hr />
<li><a href="/v2.2/administration/console.html">Console</a></li>
<li><a href="/v2.2/administration/runtime.html">Runtime Commands</a></li>
<li><a href="/v2.2/administration/bundles.html">Bundle Management</a></li>
<li><a href="/v2.2/administration/logging.html">Logging</a></li>
<hr />
<li><a href="/v2.2/administration/jsondb.html">JsonDB Storage</a></li>
</ul>
</li>
<li><a href="/v2.2/appendix/help.html">Community Guidance</a>
<ul>
<li><a href="/v2.2/appendix/help.html">Finding Help &amp; FAQs</a></li>
<li><a href="/v2.2/appendix/contributing.html">Contributing</a></li>
</ul>
</li>
</ul>
</div>
<div id="versioning" class="row valign-wrapper">
<div class="col s12 right-align">
<ul id="dropdown-versioning" class="dropdown-content">
<li><a href="/v2.2/../addons/bindings/mqtt1/readme.html">latest version</a></li>
<li><a href="/v2.2/addons/bindings/mqtt1/readme.html">v2.2<i class="tiny material-icons right">lens</i></a></li>
<li><a href="/v2.2/../v2.1/addons/bindings/mqtt1/readme.html">v2.1</a></li>
</ul>
<a class="btn dropdown-button grey lighten-1" href="#!" data-activates="dropdown-versioning" title="Select which version of this openHAB documentation article you want to read.">
Switch Article Version<i class="material-icons right">arrow_drop_down</i>
</a>
</div>
</div>
<div class="content">
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
<h1 id="mqtt-binding">MQTT Binding</h1>
<p>This binding allows openHAB to act as an MQTT client, so that openHAB items
can send and receive <a href="http://mqtt.org/">MQTT</a> messages to/from an MQTT broker.
It does not provide MQTT broker functionality, for this you may want to have a
look at <a href="http://mosquitto.org/">Mosquitto</a> or others. There are test servers
available at m2m.eclipse.org and test.mosquitto.org.</p>
<p>openHAB provides MQTT support on different levels. The table below gives a quick overview:</p>
<table>
<thead>
<tr>
<th>Level</th>
<th>Description</th>
<th>Usage</th>
<th>Configuration</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Transport</strong></td>
<td>Shared transport functions for setting up MQTT broker connections.</td>
<td>Ideal if you want to roll your own binding using MQTT as the transport.</td>
<td><code class="highlighter-rouge">services/mqtt.cfg</code></td>
</tr>
<tr>
<td><strong>Item binding</strong></td>
<td>Allows MQTT publish/subscribe configuration on item level</td>
<td>Ideal for highly customized in and outbound message scenarios.</td>
<td><code class="highlighter-rouge">items/*.items</code></td>
</tr>
<tr>
<td><strong>Event bus binding</strong></td>
<td>Publish/receive all states/commmands directly on the openHAB eventbus.</td>
<td>Perfect for integrating multiple openHAB instances or broadcasting all events.</td>
<td><code class="highlighter-rouge">services/mqtt-eventbus.cfg</code></td>
</tr>
<tr>
<td><strong>Persistence</strong></td>
<td>Uses persistent strategies to push messages on change or a regular interval.</td>
<td>Perfect for persisting time series to a public service like Xively. (See MQTT persistence service.)</td>
<td><code class="highlighter-rouge">persist/mqtt.persist</code></td>
</tr>
</tbody>
</table>
<p>The OwnTracks (formerly Mqttitude) binding is also available, which is an extension of this binding.</p>
<h2 id="transport-configuration">Transport Configuration</h2>
<p>In order to consume or publish messages to an MQTT broker, you need to define all the brokers which you want to connect to, in your <code class="highlighter-rouge">services/mqtt.cfg</code> file.</p>
<table>
<thead>
<tr>
<th>Property</th>
<th>Default</th>
<th style="text-align: center">Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.url</td>
<td> </td>
<td style="text-align: center">Yes</td>
<td>URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883</td>
</tr>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.clientId</td>
<td>random</td>
<td style="text-align: center">No*</td>
<td>Client ID to use when connecting to the broker. If not provided a random default is generated. Usually restricted to 23 characters in length. (see the <code class="highlighter-rouge">allowLongerClientIds</code> setting)</td>
</tr>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.user</td>
<td> </td>
<td style="text-align: center">Yes</td>
<td>User ID to authenticate with the broker.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.pwd</td>
<td> </td>
<td style="text-align: center">Yes</td>
<td>Password to authenticate with the broker.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.qos</td>
<td>0</td>
<td style="text-align: center">No</td>
<td>Set the quality of service level for sending messages to this broker. Possible values are 0 (Deliver at most once), 1 (Deliver at least once) or 2 (Deliver exactly once).</td>
</tr>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.retain</td>
<td>false</td>
<td style="text-align: center">No</td>
<td>True or false. Defines if the broker should retain the messages sent to it.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.async</td>
<td>true</td>
<td style="text-align: center">No</td>
<td>True or false. Defines if messages are published asynchronously or synchronously.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.keepAlive</td>
<td>60</td>
<td style="text-align: center">No</td>
<td>Integer. Defines the keep alive interval in seconds.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">&lt;broker&gt;</code>.allowLongerClientIds</td>
<td>false</td>
<td style="text-align: center">No</td>
<td>True or false. If set to true, allows the use of clientId values up to 65535 characters long. NOTE: clientId values longer than 23 characters may not be supported by all MQTT servers. Check the server documentation.</td>
</tr>
</tbody>
</table>
<p><code class="highlighter-rouge">&lt;broker&gt;</code> is an alias name for the MQTT broker. This is the name you can use in the item binding configurations afterwards.<br />
* <code class="highlighter-rouge">&lt;broker&gt;</code>.clientId is not required to be provided because a random value will be generated if a value is not provided.</p>
<h3 id="example-configurations">Example Configurations</h3>
<p>Example configuration of a simple broker connection:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>m2m-eclipse.url=tcp://m2m.eclipse.org:1883
</code></pre></div></div>
<p>Example configuration of an encrypted broker connection with authentication:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mosquitto.url=ssl://test.mosquitto.org:8883
mosquitto.user=administrator
mosquitto.pwd=mysecret
mosquitto.qos=1
mosquitto.retain=true
mosquitto.async=false
</code></pre></div></div>
<h2 id="item-configuration-for-inbound-messages">Item Configuration for Inbound Messages</h2>
<p>Below you can see the structure of the inbound MQTT configuration string.
Inbound configurations allow you to receive MQTT messages into an openHAB
item. Every item is allowed to have multiple inbound (or outbound)
configurations.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Item myItem {mqtt="&lt;direction&gt;[&lt;broker&gt;:&lt;topic&gt;:&lt;type&gt;:&lt;transformer&gt;], &lt;direction&gt;[&lt;broker&gt;:&lt;topic&gt;:&lt;type&gt;:&lt;transformation&gt;], ..."}
</code></pre></div></div>
<p>Since 1.6 it is possible to add an optional fifth configuration like:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Item myItem {mqtt="&lt;direction&gt;[&lt;broker&gt;:&lt;topic&gt;:&lt;type&gt;:&lt;transformer&gt;:&lt;regex_filter&gt;], &lt;direction&gt;[&lt;broker&gt;:&lt;topic&gt;:&lt;type&gt;:&lt;transformation&gt;], ..."}
</code></pre></div></div>
<table>
<thead>
<tr>
<th>Property</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>direction</td>
<td>This is always “&lt;” for inbound messages.</td>
</tr>
<tr>
<td>broker</td>
<td>The broker alias as it is defined in the openHAB configuration.</td>
</tr>
<tr>
<td>topic</td>
<td>The MQTT Topic to subscribe to.</td>
</tr>
<tr>
<td>type</td>
<td>Describes what the message content contains: a status update or command. Allowed values are state or command.</td>
</tr>
<tr>
<td>transformation</td>
<td>Rule defining how to transform the received message content into something openHAB recognizes. Transformations are defined in the format of TRANSFORMATION_NAME(transformation_function). Allowed values are default or any of the transformers provided in the org.openhab.core.transform bundle. Custom transformations can be contributed directly to the transform bundle by making the Transformation available through Declarative Services. Any value other than the above types will be interpreted as static text, in which case the actual content of the message is ignored.</td>
</tr>
<tr>
<td>regex_filter (optional, since 1.6)</td>
<td>A string representing a regular expression. Only messages that match this expression will be further processed. All other messages will be dropped. Use Case: If multiple different data is sent over one topic (for example multiple sensors of one device), it is possible to distinguish the messages for different items. Example “.<em>” (excluding the quotes) will match every message, “.</em>"type"=2\n.*” (excluding the quotes) will match every message including type=2.</td>
</tr>
</tbody>
</table>
<h3 id="example-inbound-configurations">Example Inbound Configurations</h3>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Number temperature "temp [%.1f]" {mqtt="&lt;[publicweatherservice:london-city/temperature:state:default]"}
Number waterConsumption "consum [%d]" {mqtt="&lt;[mybroker:myHome/watermeter:state:XSLT(parse_water_message.xslt)]"}
Switch doorbell "bell [%s]" {mqtt="&lt;[mybroker:myHome/doorbell:command:ON]"}
Number mfase1 "mfase1 [%.3f]" {mqtt="&lt;[flukso:sensor/9cf3d75543fa82a4662fe70df5bf4fde/gauge:state:REGEX(.*,(.*),.*)]"}
Number humidity "humidity [%.1f%%]" {mqtt="&lt;[broker:weatherstation/readings:state:JS(convertPercent.js):humidity=.*]"}
</code></pre></div></div>
<h2 id="item-configuration-for-outbound-messages">Item Configuration for Outbound Messages</h2>
<p>Below you can see the structure of the outbound MQTT configuration string.
Outbound configurations allow you to publish (send) an MQTT message to the
MQTT broker when an item receives a command or state update, and other MQTT
clients that are subscribed to the given topic on the same broker, like
Arduino devices for example, will receive those messages.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Item itemName { mqtt="&lt;direction&gt;[&lt;broker&gt;:&lt;topic&gt;:&lt;type&gt;:&lt;trigger&gt;:&lt;transformation&gt;]" }
</code></pre></div></div>
<table>
<thead>
<tr>
<th>Property</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>direction</td>
<td>This is always “&gt;” for outbound messages.</td>
</tr>
<tr>
<td>broker</td>
<td>The broker alias as it was defined in the openHAB configuration.</td>
</tr>
<tr>
<td>topic</td>
<td>The MQTT Topic to publish messages to.</td>
</tr>
<tr>
<td>type</td>
<td>state or command. Indicates whether the receiving of a status update or command triggers the sending of an outbound message.</td>
</tr>
<tr>
<td>trigger</td>
<td>Specifies an openHAB command or state (e.g. ON, OFF, a DecimalType, ..) which triggers the sending of an outbound message. Use <code class="highlighter-rouge">*</code> to indicate that any command or state should trigger the sending.</td>
</tr>
<tr>
<td>transformation</td>
<td>Rule defining how to create the message content. Transformations are defined in the format of TRANSFORMATION_NAME(transformation_function). Allowed values are default or any of the transformers provided in the org.openhab.core.transform bundle. Custom transformations can be contributed directly to the transform bundle by making the Transformation available through Declarative Services. Any value other than the above types will be interpreted as static text, in which case this text is used as the message content.</td>
</tr>
</tbody>
</table>
<p>When the message content for an outbound message is created, the following variables are replaced with their respective values:</p>
<ul>
<li>${itemName} : name of the item which triggered the sending</li>
<li>${state} : current state of the item (only for type state)</li>
<li>${command} : command which triggered the sending of the message (only for type command)</li>
</ul>
<h3 id="example-outbound-configurations">Example Outbound Configurations</h3>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Switch mySwitch {mqtt="&gt;[mybroker:myhouse/office/light:command:ON:1],&gt;[mybroker:myhouse/office/light:command:OFF:0]"}
Switch mySwitch {mqtt="&gt;[mybroker:myhouse/office/light:command:ON:1],&gt;[mybroker:myhouse/office/light:command:*:Switch ${itemName} was turned ${command}]"}
</code></pre></div></div>
<h2 id="event-bus-binding-configuration">Event Bus Binding Configuration</h2>
<p>In addition to configuring MQTT publish/subscribe options for specific openHAB
items, you can also define a generic configuration in the <code class="highlighter-rouge">services/mqtt-eventbus.cfg</code>
file which will act on <strong>ALL</strong> status updates or commands on the openHAB event
bus.</p>
<p>The following properties can be used to configure MQTT for the openHAB event
bus in the file <code class="highlighter-rouge">services/mqtt-eventbus.cfg</code>:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>broker=&lt;broker&gt;
statePublishTopic=&lt;statePublishTopic&gt;
commandPublishTopic=&lt;commandPublishTopic&gt;
stateSubscribeTopic=&lt;stateSubscribeTopic&gt;
commandSubscribeTopic=&lt;commandSubscribeTopic&gt;
</code></pre></div></div>
<p>The properties indicated by <code class="highlighter-rouge">&lt;...&gt;</code> need to be replaced with an actual value.
The table below lists the meaning of the different properties.</p>
<table>
<thead>
<tr>
<th>Property</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>broker</td>
<td>Name of the broker as it is defined in the <code class="highlighter-rouge">services/mqtt.cfg</code>. If this property is not available, no event bus MQTT binding will be created.</td>
</tr>
<tr>
<td>statePublishTopic</td>
<td>When available, all status updates which occur on the openHAB event bus are published to the provided topic. The message content will be the status. The variable ${item} will be replaced during publishing with the item name for which the state was received.</td>
</tr>
<tr>
<td>commandPublishTopic</td>
<td>When available, all commands which occur on the openHAB event bus are published to the provided topic. The message content will be the command. The variable ${item} will be replaced during publishing with the item name for which the command was received.</td>
</tr>
<tr>
<td>stateSubscribeTopic</td>
<td>When available, all status updates received on this topic will be posted to the openHAB event bus. The message content is assumed to be a string representation of the status. The topic should include the variable ${item} to indicate which part of the topic contains the item name which can be used for posting the received value to the event bus.</td>
</tr>
<tr>
<td>commandSubscribeTopic</td>
<td>When available, all commands received on this topic will be posted to the openHAB event bus. The message content is assumed to be a string representation of the command. The topic should include the variable <code class="highlighter-rouge">${item}</code> to indicate which part of the topic contains the item name which can be used for posting the received value to the event bus.</td>
</tr>
</tbody>
</table>
<h3 id="example-configurations-1">Example Configurations</h3>
<p>Example configuration for an event bus binding, which sends all commands to an
MQTT broker and receives status updates from that broker. This scenario could
be used, for example, to link 2 openHAB instances together where the master
instance sends all commands to the slave instance and the slave instance sends
all status updates back to the master. The example below shows an example
configuration for the master node.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>broker=m2m-eclipse
commandPublishTopic=/openHAB/out/${item}/command
stateSubscribeTopic=/openHAB/in/${item}/state
</code></pre></div></div>
<h2 id="using-the-transport-orgopenhabiotransportmqtt-bundle">Using the transport (org.openhab.io.transport.mqtt) bundle</h2>
<p>When the default MQTT binding configuration options are not sufficient for
your needs, you can also use the MQTT transport bundle directly from within
your own binding.</p>
<h2 id="mqttservice">MqttService</h2>
<p>Using the MqttService, your binding can add custom message consumers and
publishers to any of the defined MQTT brokers. You dont have to worry about
(re)connection issues; all of this is done by the transport.mqtt bundle. The
MqttService class is available to your binding through Declarative Services.
A good example on how to use the MqttService can be found in the org.openhab.persistence.mqtt
bundle.</p>
<h2 id="eclipse-paho">Eclipse Paho</h2>
<p>If the above service doesnt provide all the flexibility you need, you can
also use the Eclipse Paho library directly in your binding. To make the
library available, its sufficient to add a dependency to the org.openhab.io.transport.mqtt
bundle and to add org.eclipse.paho.client.mqtttv3 to your list of imported packages.</p>
</div>
</div>
</section>
<footer>
<div class="container">
<div class="row">
<div class="col s12 m7">
Copyright &copy; 2017 by the <a href="https://github.com/openhab">openHAB Community</a> and the <a href="http://www.openhabfoundation.org/">openHAB&nbsp;Foundation&nbsp;e.V.</a>
</div>
<div class="col s12 m5">
<ul class="list-inline right-align">
<li><a href="/imprint.html">Imprint</a></li>
<li><a href="/privacy.html">Privacy Policy</a></li>
<li><a href="http://www.openhab.org">openHAB Website</a></li>
<li><a href=# onclick="printPage()">Print This Page</a></li>
</ul>
</div>
</div>
</div>
</footer>
<script src="/v2.2/js/jquery.min.js"></script>
<script src="/v2.2/js/jquery.scrollme.min.js"></script>
<script src="/v2.2/js/jquery.sticky.js"></script>
<script src="/v2.2/js/materialize.min.js"></script>
<script src="/v2.2/js/init.js"></script>
<script src="/v2.2/js/functions.js"></script>
</body>
</html>