не работает clearSchedule

Вопросы и информация о скриптах для ioBroker
Antworten
VoRoN
Beiträge: 3
Registriert: 05.07.2018, 17:03

не работает clearSchedule

Beitrag von VoRoN » 11.07.2018, 12:10

Добрый день,

Просьба помочь разобраться, есть следующий код, при изменении состоянии обе ветви if срабатывают, но в ветви ложь не происходит остановка шедулера. Как его сохранять и останавливать?

Code: Alles auswählen

on({id: /^mihome\.0\.devices\.sensor_wleak_aq1_.*\.state$/, change: 'ne'}, function(obj){
    var state       = obj.state.val;

    var parentObj   = getParentObj(obj);
    var schID       = parentObj._id + '.schID';
    var schIDObj;

    if (state){
        schIDObj  = schedule('*/2 * * * * *', function(){
            console.log('State ON');
        });
        setObject(schID, schIDObj);
    } else {
        console.log('State OFF');
        schObj = getObject(schID);
        clearSchedule(schObj);
    }
});

Benutzeravatar
instalator
guru
Beiträge: 1272
Registriert: 09.11.2014, 16:50
Wohnort: Барнаул
Kontaktdaten:

Re: не работает clearSchedule

Beitrag von instalator » 11.07.2018, 15:37

VoRoN hat geschrieben:
11.07.2018, 12:10
Добрый день,

Просьба помочь разобраться, есть следующий код, при изменении состоянии обе ветви if срабатывают, но в ветви ложь не происходит остановка шедулера. Как его сохранять и останавливать?
А так?

Code: Alles auswählen

on({id: /^mihome\.0\.devices\.sensor_wleak_aq1_.*\.state$/, change: 'ne'}, function(obj){
    var state       = obj.state.val;

    var parentObj   = getParentObj(obj);
    var schID       = parentObj._id + '.schID';
    var schIDObj;

    if (state){
        schIDObj  = schedule('*/2 * * * * *', function(){
            console.log('State ON');
        });
        setObject(schID, schIDObj);
    } else {
        console.log('State OFF');
        schObj = getObject(schID);
        clearSchedule(schIDObj);
    }
});
Высокий уровень Децибел вреден для здоровья!
Мой блог

VoRoN
Beiträge: 3
Registriert: 05.07.2018, 17:03

Re: не работает clearSchedule

Beitrag von VoRoN » 11.07.2018, 15:49

это опечатка у меня в коде была при сокращении кода :) , не работает

вот так заработало

Code: Alles auswählen

var schObj = {};

on({id: /^mihome\.0\.devices\.sensor_wleak_aq1_.*\.state$/, change: 'ne'}, function(obj){
    
    var state       = obj.state.val;

    var parentObj   = getParentObj(obj);
    var parentName  = parentObj.common.name;
    var schID       = parentObj._id + '.schID';
    
    if (state){
        schObj[schID]  = schedule('*/2 * * * * *', function(){
           console.log('State ON: ' + parentName);
        });
        
    } else {
        var sch = schObj[schID];
        
        printObj(schObj);
        console.log('State OFF');
        
        clearSchedule(sch);
        delete schObj[schID];
    }
});
viewtopic.php?t=8011

VoRoN
Beiträge: 3
Registriert: 05.07.2018, 17:03

Re: не работает clearSchedule

Beitrag von VoRoN » 11.07.2018, 15:57

но вопрос, как записать id шедулера в объект чтоб потом его можно было получить в другом скрипте остался )

Benutzeravatar
instalator
guru
Beiträge: 1272
Registriert: 09.11.2014, 16:50
Wohnort: Барнаул
Kontaktdaten:

Re: не работает clearSchedule

Beitrag von instalator » 11.07.2018, 16:13

VoRoN hat geschrieben:
11.07.2018, 15:57
но вопрос, как записать id шедулера в объект чтоб потом его можно было получить в другом скрипте остался )
Я думаю начать надо с вопроса что требуется и планируется в итоге получить
Высокий уровень Децибел вреден для здоровья!
Мой блог

Antworten