1573 lines
60 KiB
HTML
1573 lines
60 KiB
HTML
<!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>Persistence - 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/persistence.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 & Discovery</a></li>
|
||
<li><a href="/v2.2/concepts/audio.html">Audio & 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 & 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 & 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 & 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/persistence.html">latest version</a></li>
|
||
<li><a href="/v2.2/configuration/persistence.html">v2.2<i class="tiny material-icons right">lens</i></a></li>
|
||
<li><a href="/v2.2/../v2.1/configuration/persistence.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="persistence">Persistence</h1>
|
||
|
||
<p>openHAB can store data over time; this is known as persistence.
|
||
The data may be retrieved at a later time, for example to restore your system after startup, or to prepare graphs for display on a UI.</p>
|
||
|
||
<p>openHAB persists Item states in a database, and most popular databases are supported.
|
||
You may have more than one persistence add-on loaded, and each of these may be configured independently.</p>
|
||
|
||
<p>A complete list of supported persistence add-ons may be found in the <a href="/v2.2/addons/persistence.html">persistence</a> section of the on-line openHAB documentation.</p>
|
||
|
||
<p>Please refer to the <a href="/v2.2/addons/persistence.html">available persistence service add-on</a> documentation for your selected persistence add-on for configuration instructions.</p>
|
||
|
||
<h2 id="default-persistence-service">Default Persistence Service</h2>
|
||
|
||
<p>It is important to select a default persistence service.
|
||
You should do this even if you have only one persistence add-on installed.</p>
|
||
|
||
<p>To select a default persistence service, in paper UI, select Configuration and then System from the side menu.
|
||
Scroll down to “Persistence”, and select your default service from the drop-down list.
|
||
Note that you must first install a persistence add-on before you make this selection.
|
||
Be sure to save your choice once you have selected your default service.</p>
|
||
|
||
<h2 id="persistence-configuration">Persistence Configuration</h2>
|
||
|
||
<p>The information below allows you to determine which Item states are persisted, when they are persisted, and where they are stored.</p>
|
||
|
||
<p>Persistence Strategies are configured in a file named <code class="highlighter-rouge"><persistenceservice>.persist</code>, stored in <code class="highlighter-rouge">$OPENHAB_CONF/persistence</code>.
|
||
Replace “persistenceservice” with the name of your persistence add-on (e.g. <code class="highlighter-rouge">rrd4j.persist</code>).</p>
|
||
|
||
<h3 id="persistence-triggers">Persistence Triggers</h3>
|
||
|
||
<p>The persistence of an Item’s state may be triggered when that Item changes state or when the Item is updated (even if its state did not change).
|
||
Persistence may also be triggered by a time-related event (see Cron Persistence Triggers below).</p>
|
||
|
||
<h3 id="strategies">Strategies</h3>
|
||
|
||
<p>This section allows you to name and define one or more <code class="highlighter-rouge">Strategies</code> and to select a default strategy.
|
||
The syntax is as follows:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Strategies</span> <span class="o">{</span>
|
||
<span class="o"><</span><span class="n">strategyName1</span><span class="o">></span> <span class="o">:</span> <span class="s">"cronexpression1"</span>
|
||
<span class="o"><</span><span class="n">strategyName2</span><span class="o">></span> <span class="o">:</span> <span class="s">"cronexpression2"</span>
|
||
<span class="o">...</span>
|
||
<span class="k">default</span> <span class="o">=</span> <span class="n">everyChange</span>
|
||
<span class="o">...</span>
|
||
<span class="o">}</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>The <code class="highlighter-rouge">default</code> parameter assigns a strategy to be used if one is not specified in the <code class="highlighter-rouge">Items</code> section below.
|
||
The <code class="highlighter-rouge">default</code> parameter may be omitted from the <code class="highlighter-rouge">Strategies</code> section, but only if a strategy is provided in each line of the <code class="highlighter-rouge">Items</code> section.
|
||
If the <code class="highlighter-rouge">strategy</code> portion of the <code class="highlighter-rouge">itemlist</code> is omitted in the <code class="highlighter-rouge">Items</code> section, the <code class="highlighter-rouge">default</code> strategy specified in the <code class="highlighter-rouge">Strategies</code> section will be applied.</p>
|
||
|
||
<h4 id="predefined-strategies">Predefined Strategies</h4>
|
||
|
||
<p>The following strategies are defined internally and may be used in place of <code class="highlighter-rouge">strategyName</code> above:</p>
|
||
|
||
<ul>
|
||
<li><code class="highlighter-rouge">everyChange</code>: persist the Item state whenever its state has changed</li>
|
||
<li><code class="highlighter-rouge">everyUpdate</code>: persist the Item state whenever its state has been updated, even if it did not change</li>
|
||
<li><code class="highlighter-rouge">restoreOnStartup</code>: load and initialize the last persisted state of the Item on openHAB startup (if the Item state is undefined (<code class="highlighter-rouge">UNDEF</code>)).</li>
|
||
</ul>
|
||
|
||
<h4 id="cron-persistence-triggers">Cron Persistence Triggers</h4>
|
||
<p>openHAB uses <a href="http://www.quartz-scheduler.org/documentation/quartz-2.1.x/quick-start.html">Quartz</a> for time-related cron events.
|
||
See the <a href="/v2.2/configuration/rules-dsl.html#time-based-triggers">Rules article</a> for more information.</p>
|
||
|
||
<h3 id="items">Items</h3>
|
||
|
||
<p>This section defines which items should be persisted with which strategy.
|
||
The syntax is as follows:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Items</span> <span class="o">{</span>
|
||
<span class="o"><</span><span class="n">itemlist1</span><span class="o">></span> <span class="o">[-></span> <span class="s">"<alias1>"</span><span class="o">]</span> <span class="o">:</span> <span class="o">[</span><span class="n">strategy</span> <span class="o">=</span> <span class="o"><</span><span class="n">strategy1</span><span class="o">>,</span> <span class="o"><</span><span class="n">strategy2</span><span class="o">>,</span> <span class="o">...]</span>
|
||
<span class="o"><</span><span class="n">itemlist2</span><span class="o">></span> <span class="o">[-></span> <span class="s">"<alias2>"</span><span class="o">]</span> <span class="o">:</span> <span class="o">[</span><span class="n">strategy</span> <span class="o">=</span> <span class="o"><</span><span class="n">strategyX</span><span class="o">>,</span> <span class="o"><</span><span class="n">strategyY</span><span class="o">>,</span> <span class="o">...]</span>
|
||
<span class="o">...</span>
|
||
|
||
<span class="o">}</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>where <code class="highlighter-rouge"><itemlist></code> is a comma-separated list consisting of one or more of the following options:</p>
|
||
|
||
<ul>
|
||
<li><code class="highlighter-rouge">*</code> - this line should apply to all items in the system</li>
|
||
<li><code class="highlighter-rouge"><itemName></code> a single Item identified by its name. This Item can be a group Item. But note that only the group value will be persisted. The value of the individual group members will not be persisted using this option.</li>
|
||
<li><code class="highlighter-rouge"><groupName>*</code> - all members of this group will be persisted, but not the group itself. If no strategies are provided, the default strategies that are declared in the first section are applied. Optionally, an alias may be provided if the persistence service requires special names (e.g. a table to be used in a database, a feed id for an IoT service, etc.)</li>
|
||
</ul>
|
||
|
||
<p>The example <code class="highlighter-rouge">Items</code> section below takes advantage of a <code class="highlighter-rouge">default</code> entry in the <code class="highlighter-rouge">Strategies</code> section.
|
||
Assume the <code class="highlighter-rouge">Strategies</code> section contains the line:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="k">default</span> <span class="o">=</span> <span class="n">everyChange</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>then the following section,</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Items</span> <span class="o">{</span>
|
||
<span class="n">GF_Hall_Light</span>
|
||
<span class="o">}</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>will cause the state of <code class="highlighter-rouge">GF_Hall_Light</code> to be persisted on every change.</p>
|
||
|
||
<p>Below you will find a complete example persistence configuration file:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// persistence strategies have a name and definition and are referred to in the "Items" section</span>
|
||
<span class="n">Strategies</span> <span class="o">{</span>
|
||
<span class="n">everyHour</span> <span class="o">:</span> <span class="s">"0 0 * * * ?"</span>
|
||
<span class="n">everyDay</span> <span class="o">:</span> <span class="s">"0 0 0 * * ?"</span>
|
||
|
||
<span class="c1">// if no strategy is specified for an Item entry below, the default list will be used</span>
|
||
<span class="k">default</span> <span class="o">=</span> <span class="n">everyChange</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="cm">/*
|
||
* Each line in this section defines for which Item(s) which strategy(ies) should be applied.
|
||
* You can list single items, use "*" for all items or "groupitem*" for all members of a group
|
||
* Item (excl. the group Item itself).
|
||
*/</span>
|
||
<span class="n">Items</span> <span class="o">{</span>
|
||
<span class="c1">// persist the Item state of Heating_Mode and Notifications_Active on every change and restore them from the db at startup</span>
|
||
<span class="n">Heating_Mode</span><span class="o">,</span> <span class="nl">Notifications_Active:</span> <span class="n">strategy</span> <span class="o">=</span> <span class="n">everyChange</span><span class="o">,</span> <span class="n">restoreOnStartup</span>
|
||
|
||
<span class="c1">// additionally, persist all temperature and weather values every hour</span>
|
||
<span class="n">Temperature</span><span class="o">*,</span> <span class="n">Weather</span><span class="o">*</span> <span class="o">:</span> <span class="n">strategy</span> <span class="o">=</span> <span class="n">everyHour</span>
|
||
<span class="o">}</span>
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="restoring-item-states-on-restart">Restoring Item States on Restart</h2>
|
||
|
||
<p>When restarting your openHAB installation you may find there are times when your logs indicate some Items have the state, <code class="highlighter-rouge">UNDEF</code>.
|
||
This is because, by default, Item states are not persisted when openHAB restarts - even if you have installed a persistence add-on.
|
||
In order for items to be persisted across openHAB restarts, you must define a <code class="highlighter-rouge">restoreOnStartup</code> strategy for all your items.
|
||
Then, whatever state they were in before the restart will be restored automatically.
|
||
The following example persists all items on every change and restores them at startup:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Strategies</span> <span class="o">{</span>
|
||
<span class="k">default</span> <span class="o">=</span> <span class="n">everyUpdate</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="n">Items</span> <span class="o">{</span>
|
||
<span class="o">*</span> <span class="o">:</span> <span class="n">strategy</span> <span class="o">=</span> <span class="n">everyChange</span><span class="o">,</span> <span class="n">restoreOnStartup</span>
|
||
<span class="o">}</span>
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="persistence-extensions-in-scripts-and-rules">Persistence Extensions in Scripts and Rules</h2>
|
||
|
||
<p>To make use of persisted states inside scripts and rules, a few useful extensions have been defined on items.
|
||
Note that these extensions are only available to be applied to Items.
|
||
They are not generally available for use in Scripts or Rules.</p>
|
||
|
||
<p>Example:</p>
|
||
|
||
<p>The statement</p>
|
||
|
||
<p><code class="highlighter-rouge">Temperature.historicState(now.minusDays(1))</code></p>
|
||
|
||
<p>will return the state of the Item “Temperature” from 24 hours ago.
|
||
You can easily imagine that you can implement very powerful rules using this feature.</p>
|
||
|
||
<p>Here is the full list of available persistence extensions:</p>
|
||
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Persistence Extension</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.persist</code></td>
|
||
<td>Persists the current State of the Item</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.lastUpdate</code></td>
|
||
<td>Queries for the last update timestamp of a given Item</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.historicState(AbstractInstant)</code></td>
|
||
<td>Retrieves the State of an Item at a certain point in time</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.changedSince(AbstractInstant)</code></td>
|
||
<td>Checks if the State of the Item has (ever) changed since a certain point in time</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.updatedSince(AbstractInstant)</code></td>
|
||
<td>Checks if the state of the Item has been updated since a certain point in time</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.maximumSince(AbstractInstant)</code></td>
|
||
<td>Gets the maximum value of the State of a persisted Item since a certain point in time</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.minimumSince(AbstractInstant)</code></td>
|
||
<td>Gets the minimum value of the State of a persisted Item since a certain point in time</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.averageSince(AbstractInstant)</code></td>
|
||
<td>Gets the average value of the State of a persisted Item since a certain point in time</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.deltaSince(AbstractInstant)</code></td>
|
||
<td>Gets the difference in value of the State of a given Item since a certain point in time</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.previousState()</code></td>
|
||
<td>Gets the previous State of a persisted Item (returns HistoricItem)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.previousState(true)</code></td>
|
||
<td>Gets the previous State of a persisted Item, skips Items with equal State values and searches the first Item with State not equal the current State (returns HistoricItem)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge"><item>.sumSince(AbstractInstant)</code></td>
|
||
<td>Gets the sum of the previous States of a persisted Item since a certain point in time</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p>These extensions use the default persistence service.
|
||
(Refer to ‘Default Persistence Service’ above to configure this.)
|
||
You may specify a different persistence service by appending a String as an optional additional parameter at the end of the extension.</p>
|
||
|
||
<p><strong>Example</strong>
|
||
To persist an Item called <code class="highlighter-rouge">Lights</code> in an rrd4j database, you would enter the following:
|
||
<code class="highlighter-rouge">Lights.persist("rrd4j")</code></p>
|
||
|
||
<h3 id="date-and-time-extensions">Date and Time Extensions</h3>
|
||
|
||
<p>A number of date and time calculations have been made available in openHAB through incorporation of <a href="http://joda-time.sourceforge.net/">Jodatime</a>.
|
||
This makes it very easy to perform actions based upon time.
|
||
Here are some examples:</p>
|
||
|
||
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Lights</span><span class="o">.</span><span class="na">changedSince</span><span class="o">(</span><span class="n">now</span><span class="o">.</span><span class="na">minusMinutes</span><span class="o">(</span><span class="mi">2</span><span class="o">).</span><span class="na">minusSeconds</span><span class="o">(</span><span class="mi">30</span><span class="o">))</span>
|
||
<span class="n">Temperature</span><span class="o">.</span><span class="na">maximumSince</span><span class="o">(</span><span class="n">now</span><span class="o">.</span><span class="na">toDateMidnight</span><span class="o">)</span>
|
||
<span class="n">Temperature</span><span class="o">.</span><span class="na">minimumSince</span><span class="o">(</span><span class="n">parse</span><span class="o">(</span><span class="s">"2012-01-01"</span><span class="o">))</span>
|
||
<span class="n">PowerMeter</span><span class="o">.</span><span class="na">historicState</span><span class="o">(</span><span class="n">now</span><span class="o">.</span><span class="na">toDateMidnight</span><span class="o">.</span><span class="na">withDayOfMonth</span><span class="o">(</span><span class="mi">1</span><span class="o">))</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>The “now” variable can be used for relative time expressions, while “parse()” can define absolute dates and times.
|
||
See the <a href="http://joda-time.sourceforge.net/api-release/org/joda/time/format/ISODateTimeFormat.html#dateTimeParser()">Jodatime documentation</a> for information on accepted formats for string parsing.</p>
|
||
|
||
<h2 id="startup-behavior">Startup Behavior</h2>
|
||
|
||
<p>Persistence services and the Rule engine are started in parallel.
|
||
Because of this, it is possible that, during an openHAB startup, Rules will execute before Item states used by those Rules have been restored.
|
||
(In this case, those unrestored Items have an “undefined” state when the Rule is executed.)
|
||
Therefore, Rules that rely on persisted Item states may not work correctly on a consistent basis.</p>
|
||
|
||
<h3 id="workaround-1">Workaround 1</h3>
|
||
|
||
<p>A workaround which helps in some cases is to create an Item e.g. “delayed_start” that is set to “OFF” at startup and to “ON” some time later (when it can be assumed that persistence has restored all items).
|
||
You can then write a Rule that restores Items from your persistence service after the delay has completed.
|
||
The time of the delay must be determined by experimentation.
|
||
How long you need to wait before changing your “delayed_start” Item from “OFF” to “ON” depends upon the size of your home automation project and the performance of your platform.</p>
|
||
|
||
<!-- TODO: Need a code example for Workaround 1. -->
|
||
|
||
<h3 id="workaround-2">Workaround 2</h3>
|
||
|
||
<p>Create <code class="highlighter-rouge">$OPENHAB_CONF/rules/refresh.rules</code> with the following content (This rule runs only once when openHAB starts):</p>
|
||
|
||
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>var boolean reloadOnce <span class="o">=</span> Temperature
|
||
rule <span class="s2">"Refresh rules after persistence service has started"</span>
|
||
when System started
|
||
<span class="k">then
|
||
if</span><span class="o">(</span>reloadOnce<span class="o">)</span>
|
||
executeCommandLine<span class="o">(</span><span class="s2">"</span><span class="nv">$OPENHAB_CONF</span><span class="s2">/rules/rules_refresh.sh"</span><span class="o">)</span>
|
||
<span class="k">else
|
||
</span>println<span class="o">(</span><span class="s2">"reloadOnce is false"</span><span class="o">)</span>
|
||
reloadOnce <span class="o">=</span> <span class="nb">false
|
||
</span>end
|
||
</code></pre></div></div>
|
||
|
||
<p>Create a refresh script <code class="highlighter-rouge">$OPENHAB_CONF/rules_refresh.sh</code> and make it executable (<code class="highlighter-rouge">chmod +x rules_refresh.sh</code>):</p>
|
||
|
||
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#This script is called by openHAB after the persistence service has started</span>
|
||
sleep 5
|
||
<span class="nb">cd</span> <span class="o">[</span>full_path_to_openhab_config_directory]/rules
|
||
<span class="nv">RULES</span><span class="o">=</span><span class="sb">`</span>find <span class="k">*</span>.rules |grep <span class="nt">-v</span> refresh.rules
|
||
<span class="k">for </span>f <span class="k">in</span> <span class="nv">$RULES</span>
|
||
<span class="k">do
|
||
</span>touch <span class="nv">$f</span>
|
||
<span class="k">done</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>The script waits for five seconds and then touches all <code class="highlighter-rouge">*.rules</code> files (except <code class="highlighter-rouge">refresh.rules</code>).
|
||
This causes openHAB to reload all rules (openHAB automatically reloads rules when their creation date/time changes).
|
||
Other rules files may be added on new lines.
|
||
Note - you will have to experiment to find the appropriate sleep value for your specific system.</p>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer>
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col s12 m7">
|
||
Copyright © 2017 by the <a href="https://github.com/openhab">openHAB Community</a> and the <a href="http://www.openhabfoundation.org/">openHAB Foundation 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>
|
||
|