openhab-docs/v2.2/configuration/jsr223.html

1829 lines
60 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>JSR223 Scripting - 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/configuration/jsr223.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/../configuration/jsr223.html">latest version</a></li>
<li><a href="/v2.2/configuration/jsr223.html">v2.2<i class="tiny material-icons right">lens</i></a></li>
<li><a href="/v2.2/../v2.1/configuration/jsr223.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">
<h1 id="jsr223-scripting">JSR223 Scripting</h1>
<blockquote>
<p>Note: This feature is for users who have or are willing to learn some programming skills
and are comfortable working with the command line prompt of the operating system hosting openHAB.
<em>The Experimental Rule Engine add-on must be installed to define rules.</em></p>
</blockquote>
<h2 id="overview">Overview</h2>
<p><a href="https://docs.oracle.com/javase/6/docs/technotes/guides/scripting/">JSR223</a> (<a href="https://jcp.org/aboutJava/communityprocess/pr/jsr223/index.html">spec</a>)
is a standard scripting API for Java Virtual Machine (JVM)
<a href="https://en.wikipedia.org/wiki/List_of_JVM_languages">languages</a>.
The JVM languages provide varying levels of support for the JSR223 API and interoperability with the Java runtime.
Currently the following languages are known to work well for openHAB scripting:
<a href="http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html"><strong>Oracle Nashorn</strong></a> (Javascript bundled with Java),
<a href="http://www.jython.org/"><strong>Jython</strong></a> (Python on the JVM) and
<a href="http://www.groovy-lang.org/"><strong>Apache Groovy</strong></a> (JVM scripting language).</p>
<p>Although JSR223 scripts can be used as a general-purpose extension language for openHAB,
the most common usage will be for defining openHAB rules.</p>
<h3 id="language-specific-documentation">Language-Specific Documentation</h3>
<ul>
<li><a href="jsr223-js.html">Javascript</a></li>
<li><a href="jsr223-jython.html">Jython</a></li>
<li>Groovy (TODO)</li>
</ul>
<h3 id="script-locations">Script Locations</h3>
<p>Scripts should be placed in the USERDATA/automation/jsr223 directory. For example,
in Linux installations created with a package installer,
the directory would be <code class="highlighter-rouge">/etc/openhab2/automation/jsr223</code>.</p>
<p>At system start time the scripts will be loaded in an order based on their name
and then top-down through the directory hierarchy.
Note that while scripts may be placed in subdirectories of <code class="highlighter-rouge">jsr223</code>,
they should not have the same names as scripts in other directories (this may be changed in the future).
For example, with the following directory structure…</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>automation/jsr223
01/
script1.py
scriptx.py
00script.py
script2.py
</code></pre></div></div>
<p>the load order will be: <code class="highlighter-rouge">00script.py</code>, <code class="highlighter-rouge">01/script1.py</code>, <code class="highlighter-rouge">script2.py</code>, <code class="highlighter-rouge">01/scriptx.py</code>.</p>
<p><a name="trigger_types"></a></p>
<h3 id="trigger-types-all-jsr223-languages">Trigger Types (all JSR223 languages)</h3>
<p>The following trigger types are defined by openHAB (custom triggers can also be defined)
and take the specified configuration parameters.</p>
<table>
<thead>
<tr>
<th>Trigger: <code class="highlighter-rouge">core.ItemCommandTrigger</code></th>
<th> </th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">itemName</code></td>
<td>The item name</td>
<td>TEXT</td>
</tr>
<tr>
<td><code class="highlighter-rouge">command</code></td>
<td>The command</td>
<td>TEXT</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Trigger: <code class="highlighter-rouge">core.ItemStateUpdateTrigger</code></th>
<th> </th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">itemName</code></td>
<td>The item name</td>
<td>TEXT</td>
</tr>
<tr>
<td><code class="highlighter-rouge">state</code></td>
<td>The state</td>
<td>TEXT</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Trigger: <code class="highlighter-rouge">core.ItemStateChangeTrigger</code></th>
<th> </th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">itemName</code></td>
<td>The item name</td>
<td>TEXT</td>
</tr>
<tr>
<td><code class="highlighter-rouge">previousState</code></td>
<td>The previous state</td>
<td>TEXT</td>
</tr>
<tr>
<td><code class="highlighter-rouge">state</code></td>
<td>The state</td>
<td>TEXT</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Trigger: <code class="highlighter-rouge">timer.GenericCronTrigger</code></th>
<th> </th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">cronExpression</code></td>
<td>The cron expression</td>
<td>TEXT</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Trigger: <code class="highlighter-rouge">timer.TimeOfDayTrigger</code></th>
<th> </th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">time</code></td>
<td>The time in “hh:mm” format</td>
<td>TEXT</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Trigger: <code class="highlighter-rouge">core.GenericEventTrigger</code></th>
<th> </th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">eventTopic</code></td>
<td>default: “smarthome/<em>” (for channel events: “smarthome/channels/</em>/triggered”)</td>
<td>TEXT</td>
</tr>
<tr>
<td><code class="highlighter-rouge">eventSource</code></td>
<td>item name, channel UID</td>
<td>TEXT</td>
</tr>
<tr>
<td><code class="highlighter-rouge">eventTypes</code></td>
<td>ItemCommandEvent, ItemStateEvent</td>
<td>TEXT</td>
</tr>
</tbody>
</table>
<h3 id="additional-information">Additional Information</h3>
<ul>
<li><a href="https://github.com/eclipse/smarthome/wiki/Scripted-Rule-Support">Scripted Rule Support</a> -
Early documentation on JSR223 usage in openHAB 2. Includes IDE setup instructions.</li>
</ul>
<p><a name="presets"></a></p>
<h3 id="predefined-script-variables-all-jsr223-languages">Predefined Script Variables (all JSR223 languages)</h3>
<p>To faciliate JSR223 scripting, several openHAB-related variables are automatically predefined. These presets include:</p>
<ul>
<li><a href="#default_presets">Default</a></li>
<li><a href="#rulesimple_presets"><code class="highlighter-rouge">RuleSimple</code></a></li>
<li><a href="#rulesupport_presets"><code class="highlighter-rouge">RuleSupport</code></a></li>
<li><a href="#rulefactories_presets"><code class="highlighter-rouge">RuleFactories</code></a></li>
</ul>
<p><a name="default_presets"></a></p>
<h4 id="default-variables-no-preset-loading-required">Default Variables (no preset loading required)</h4>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">State</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.types.State</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">Command</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.types.State</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">DateTime</code></td>
<td><code class="highlighter-rouge">org.joda.time.DateTime</code> (if Jodatime is available)</td>
</tr>
<tr>
<td><code class="highlighter-rouge">LocalTime</code></td>
<td><code class="highlighter-rouge">org.joda.time.LocalTime</code> (if Jodatime is available)</td>
</tr>
<tr>
<td><code class="highlighter-rouge">StringUtils</code></td>
<td><code class="highlighter-rouge">org.apache.commons.lang.StringUtils</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">URLEncoder</code></td>
<td><code class="highlighter-rouge">java.net.URLEncoder</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">FileUtils</code></td>
<td><code class="highlighter-rouge">org.apache.commons.io.FileUtils</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">FilenameUtils</code></td>
<td><code class="highlighter-rouge">org.apache.commons.io.FilenameUtils</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">File</code></td>
<td><code class="highlighter-rouge">java.io.File</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">IncreaseDecreaseType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.IncreaseDecreaseType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">DECREASE</code></td>
<td><code class="highlighter-rouge">IncreaseDecreaseType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">INCREASE</code></td>
<td><code class="highlighter-rouge">IncreaseDecreaseType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">OnOffType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.OnOffType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">ON</code></td>
<td><code class="highlighter-rouge">OnOffType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">OFF</code></td>
<td><code class="highlighter-rouge">OnOffType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">OpenClosedType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.OpenClosedType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">OPEN</code></td>
<td><code class="highlighter-rouge">OpenClosedType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">CLOSED</code></td>
<td><code class="highlighter-rouge">OpenClosedType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">StopMoveType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.StopMoveType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">STOP</code></td>
<td><code class="highlighter-rouge">StopMoveType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">MOVE</code></td>
<td><code class="highlighter-rouge">StopMoveType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">UpDownType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.UpDownType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">UP</code></td>
<td><code class="highlighter-rouge">UpDownType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">DOWN</code></td>
<td><code class="highlighter-rouge">UpDownType</code> enum item</td>
</tr>
<tr>
<td><code class="highlighter-rouge">DecimalType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.DecimalType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">HSBType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.HSBType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">PercentType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.PercentType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">PointType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.PointType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">StringType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.core.library.types.StringType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">items</code></td>
<td>Instance of <code class="highlighter-rouge">java.util.Map&amp;lt;String, State&amp;gt;</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">itemRegistry</code></td>
<td>Instance of <code class="highlighter-rouge">org.eclipse.smarthome.core.items.ItemRegistry</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">ir</code></td>
<td>Alias for <code class="highlighter-rouge">itemRegistry</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">things</code></td>
<td>Instance of <code class="highlighter-rouge">org.eclipse.smarthome.core.thing.ThingRegistry</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">events</code></td>
<td>(internal) Used to send events, post commands, etc. <a href="#event_operations">Details</a> below]</td>
</tr>
<tr>
<td><code class="highlighter-rouge">rules</code></td>
<td>Instance of <code class="highlighter-rouge">org.eclipse.smarthome.automation.RuleRegistry</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">scriptExtension</code></td>
<td>(internal) For loading script presets.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">se</code></td>
<td>Alias for <code class="highlighter-rouge">scriptExtension</code></td>
</tr>
</tbody>
</table>
<p><a name="#event_operations"></a></p>
<h5 id="events-operations"><code class="highlighter-rouge">events</code> operations</h5>
<ul>
<li><code class="highlighter-rouge">postUpdate(String, String)</code></li>
<li><code class="highlighter-rouge">postUpdate(Item, Number)</code></li>
<li><code class="highlighter-rouge">postUpdate(Item, String)</code></li>
<li><code class="highlighter-rouge">postUpdate(Item, State)</code></li>
<li><code class="highlighter-rouge">sendCommand(String, String)</code></li>
<li><code class="highlighter-rouge">sendCommand(Item, Number)</code></li>
<li><code class="highlighter-rouge">sendCommand(Item, String)</code></li>
<li><code class="highlighter-rouge">sendCommand(Item, Command)</code></li>
<li><code class="highlighter-rouge">storeStates(Item...)</code></li>
<li><code class="highlighter-rouge">restoreStates(Map&lt;Item, State&gt;)</code></li>
</ul>
<p><a name="rulesimple_presets"></a></p>
<h4 id="rulesimple-extensionpreset">RuleSimple Extension/Preset</h4>
<p>These variables are loaded using:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">scriptExtension</span><span class="o">.</span><span class="n">importPreset</span><span class="p">(</span><span class="s">"RuleSimple"</span><span class="p">)</span>
</code></pre></div></div>
<p>The primary usage of this preset is for defining rule (<code class="highlighter-rouge">SimpleRule</code>) subclasses.
See language-specific documentation for examples.</p>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>SimpleRule</td>
<td>Base class for Jython Rules</td>
</tr>
<tr>
<td>SimpleActionHandler</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.module.script.rulesupport.shared.simple.SimpleActionHandler</code></td>
</tr>
<tr>
<td>SimpleConditionHandler</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.module.script.rulesupport.shared.simple.SimpleConditionHandler</code></td>
</tr>
<tr>
<td>SimpleTriggerHandler</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.module.script.rulesupport.shared.simple.SimpleTriggerHandler</code></td>
</tr>
<tr>
<td>TriggerType</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.type.TriggerType</code></td>
</tr>
<tr>
<td>ConfigDescriptionParameter</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.config.core.ConfigDescriptionParameter</code></td>
</tr>
<tr>
<td>ModuleType</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.type.ModuleType</code></td>
</tr>
<tr>
<td>ActionType</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.type.ActionType</code></td>
</tr>
<tr>
<td>Visibility</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.Visibility</code> enum</td>
</tr>
</tbody>
</table>
<p><a name="rulesupport_presets"></a></p>
<h4 id="rulesupport-extensionpreset">RuleSupport Extension/Preset</h4>
<p>These variables are loaded using:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">scriptExtension</span><span class="o">.</span><span class="n">importPreset</span><span class="p">(</span><span class="s">"RuleSupport"</span><span class="p">)</span>
</code></pre></div></div>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>automationManager</td>
<td>Instance for managing rules and other openHAB module instances. (e.g., <code class="highlighter-rouge">addRule</code>)</td>
</tr>
<tr>
<td>Configuration</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.config.core.Configuration</code></td>
</tr>
<tr>
<td>Action</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.config.core.Action</code></td>
</tr>
<tr>
<td>Condition</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.config.core.Condition</code></td>
</tr>
<tr>
<td>Trigger</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.config.core.Trigger</code></td>
</tr>
<tr>
<td>Rule</td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.config.core.Action.Rule</code> (use <code class="highlighter-rouge">SimpleRule</code> for defining rules)</td>
</tr>
</tbody>
</table>
<p><a name="rulefactories_presets"></a></p>
<h4 id="rulefactories-extension">RuleFactories Extension</h4>
<blockquote>
<p>NOTE: Advanced usage</p>
</blockquote>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">scriptExtension</span><span class="o">.</span><span class="n">importPreset</span><span class="p">(</span><span class="s">"RuleFactories"</span><span class="p">)</span>
</code></pre></div></div>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">ActionHandlerFactory</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.module.script.rulesupport.shared.factories.ActionHandlerFactory</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">ConditionHandlerFactory</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.module.script.rulesupport.shared.factories.ConditionHandlerFactory</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">TriggerHandlerFactory</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.module.script.rulesupport.shared.factories.TriggerHandlerFactory</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">TriggerType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.type.TriggerType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">ConfigDescriptionParameter</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.config.core.ConfigDescriptionParameter</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">ModuleType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.type.ModuleType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">ActionType</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.type.ActionType</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">Visibility</code></td>
<td><code class="highlighter-rouge">org.eclipse.smarthome.automation.Visibility</code> enum</td>
</tr>
</tbody>
</table>
</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>