WakeonLan Network Binding ECMA Javascript for OH3

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:

1 Like