scene_responder_background.js 4.09 KiB
var lWarn = {logln:function (o){}};
var lInfo = {logln:function (o){}};
var LOGFILE_NAME = "sr-config.log";
lWarn = new Logger(LOGFILE_NAME);
//lInfo = new Logger(LOGFILE_NAME);
function checkDelay(propPath) {
    var iLastTSNode=Property.getNode(propPath + "/lastTriggered");
    if (iLastTSNode==null) {
        lInfo.logln("delayed Trigger registered - no last triggered message");            
        return false; // verzgerte aktion aber noch net/schon getriggert -> abbruch
    var iDelayNode=Property.getNode(propPath + "/delay");
    if (iDelayNode==null)  {
        lInfo.logln("delayed Trigger registered - no delay node");
        return false; // kein Delay Node
    var iLastTime=iLastTSNode.getValue();
    var iNow= Math.floor((new Date()).getTime()/1000);
    var iDelay=iDelayNode.getValue();
    if (iNow>=(iLastTime+iDelay))
        return true;
    return false;
function checkInitial(propPath) {
    var iFirstTSNode=Property.getNode(propPath + "/firstTriggered");
    if (iFirstTSNode==null) {
        lInfo.logln("initial Trigger registered - no first triggered message");            
        return true; // Aktion noch nicht hinterlegt; daher aktion wird gestartet
    var iDelayNode=Property.getNode(propPath + "/delay");
    if (iDelayNode==null)  {
        lInfo.logln("delayed Trigger registered - no delay node");
        return false; // kein Delay Node
    var iFirstTime=iFirstTSNode.getValue();
    var iNow= Math.floor((new Date()).getTime()/1000);
    var iDelay=iDelayNode.getValue();
    if (iNow>=(iFirstTime+iDelay)) {
        lInfo.logln('lange nach dem letzten "ersten" Trigger -> aktion sicherlich schon ausgfhrt');
        return true;
    return false;
function updateDynamicDelta(propPath) {
    lInfo.logln("delayed Trigger registered - singulary action - Update "+propPath+"/lastTriggered ");    
    Property.setProperty(propPath +  "/lastTriggered", Math.floor((new Date()).getTime()/1000));
function updateInitialDelta(propPath) {
    lInfo.logln("initial Trigger registered - singulary action - Update "+propPath+"/lastTriggered ");    
    Property.setProperty(propPath +  "/firstTriggered", Math.floor((new Date()).getTime()/1000));
if (raisedEvent.name=="system-addon-scene-responder.delayedAction") {
    lInfo.logln("delayed Trigger registered - singulary action - check for execute");
    if (checkDelay(raisedEvent.parameter.path)) {
        lInfo.logln("delayed Trigger registered - singulary action - execute one the action");        
        (new Event('action_execute',{path:raisedEvent.parameter.path})).raise();
        Property.getNode(raisedEvent.parameter.path).removeChild("lastTriggered");
    } else {
        lInfo.logln("delayed Trigger registered - singulary action - to early");        
7172737475767778798081828384858687888990919293949596979899100101102
if (raisedEvent.name=="system-addon-scene-responder.delayedTrigger") { lInfo.logln("delayed Trigger registered - singulary action - update and queue execution"); var iDelay=0; var iDelayNode=Property.getNode(raisedEvent.parameter.path + "/delay"); if (iDelayNode!=null) iDelay=iDelayNode.getValue(); updateDynamicDelta(raisedEvent.parameter.path); (new Event('system-addon-scene-responder.delayedAction',{path:raisedEvent.parameter.path, time : '+' + iDelay})).raise(); } if (raisedEvent.name=="system-addon-scene-responder.initialTrigger") { lInfo.logln("initial Trigger registered - singulary action - update and queue execution"); var iDelay=0; var iDelayNode=Property.getNode(raisedEvent.parameter.path + "/delay"); if (iDelayNode!=null) iDelay=iDelayNode.getValue(); if (checkInitial(raisedEvent.parameter.path)) { updateInitialDelta(raisedEvent.parameter.path); lInfo.logln("initial Trigger registered - singulary action - execute once the action"); (new Event('action_execute',{path:raisedEvent.parameter.path, time : '+' + iDelay})).raise(); } else { lInfo.logln("initial Trigger registered - singulary action - to early"); } }