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