Finally, I migrated my DSL wakeonlan network binding DSL Rule to ECMA Javascript.
Maybe you will find it useful:
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
var thingID = Java.type("org.openhab.core.model.script.actions.Things");
//logger.info("MyStatus: " + thingID.getThingStatusInfo('network:pingdevice:Windows10'));
//logger.info("MyActions: " + thingID.getActions('network','network:pingdevice:Windows10'));
function sleep(msec)
{
var e = new Date().getTime() + (msec);
while (new Date().getTime() <= e) {}
}
switch (event.itemCommand.toString()) {
case "ON": {
var myAction = thingID.getActions('network','network:pingdevice:Windows10');
if (myAction === null) {
logger.info("Actions not found, check thingUUID");
break;
}
else {
myAction.sendWakeOnLanPacket();
events.postUpdate("Windows10_ONOFF", ON);
sleep(500);
logger.info("Windows 10: " + items["Windows10_ONOFF"].toString());
break;
}
}
case "OFF": {
events.sendCommand("Windows10_OFF", ON); //Calls the exec binding with RPC shutdown command
events.postUpdate("Windows10_ONOFF", OFF); //Status of BasicUI proxy switch
sleep(500);
logger.info("Windows 10: " + items["Windows10_ONOFF"].toString());
break;
}
}
EXEC Binding with RPC shutdown command for the OFF case above: