Simple ECMA script to control rollershutter with window sensor

When I open the window (or door) that has roller shutters down, I want that roller shutter to go up. And when I close, it should go back to where it was. In Germany, we have a 3rd state (“Gekippt”-“Tilted”).

Not rocket sience here, but as I am new to javascript and syntax, I thought this might help someone get started.

Model is:


important items:
i have non-semantic group with all the window sensors and a non-semantic item that remembers the last position of the roller shutter.

And here is the script:

var logger = Java.type("org.slf4j.LoggerFactory").getLogger('org.openhab.rule.' + ctx.ruleUID);
var triggeringSensor = itemRegistry.getItem( event.itemName );
//var triggeringSensor = itemRegistry.getItem( 'WohnzimmerFensterMitteSensor_Position' )
var related_rollershutter = itemRegistry.getItem( triggeringSensor.getName().replace('Sensor_','Rollladen_') );
var related_rollershutter_lastposition = itemRegistry.getItem( related_rollershutter.getName().replace('Rollladen_','Rollladen_Last') );
switch (triggeringSensor.getState().toString()) {
  case 'Offen':
    events.sendCommand(related_rollershutter_lastposition, (related_rollershutter.getState().toString() ) );
    if ( parseInt( related_rollershutter.getState() ) > 0 ){
      events.sendCommand(related_rollershutter, 'UP');
    }
    break;
  case 'Geschlossen':
      events.sendCommand(related_rollershutter, related_rollershutter_lastposition.getState().toString() );
    break;
  case 'Gekippt':
    events.sendCommand(related_rollershutter_lastposition, related_rollershutter.getState().toString() ) ;
    if ( parseInt( related_rollershutter.getState() ) > 80 ){
      events.sendCommand(related_rollershutter, '80' );
    }
    break;
}

it is important to double check the naming on the items -> I use a “replace” function to link the sensor item (that triggers the rule) to the rollershutter item that change the pysical position.
ErdgeschossFensterHintenTuereSensor_Position
ErdgeschossFensterHintenTuereRollladen_Position

That’s it.
Greetings
PhiL

2 Likes