Включения освещения по расписанию

Написал скрипт для включения/выключения определенных групп освещения по времени в 8 включить, в 20 вылючить. Конфликта по синтаксису нет, но скрипт не работает.
Недоступна функция SetValue, насколько понимаю. Может кто сталкивался.

defineRule('Svet', {
    when: cron('*/10 * * * *'), // Каждые 10 минут
    then: function() {
        var currentTime = new Date();
        var currentHours = currentTime.getUTCHours() + 3; // Московское время (UTC+3)
        var currentMinutes = currentTime.getUTCMinutes();
        
        if (currentHours === 8 && currentMinutes === 00) {
            setValue('wb-mr6cv3_104/K2', 1);
            setValue('wb-mr6cv3_104/K4', 1);
            setValue('wb-mr6cv3_106/K2', 1);
            setValue('wb-mr6cv3_106/K4', 1);
            setValue('wb-mr6cv3_108/K1', 1);
            setValue('wb-mr6cv3_108/K3', 1);
            setValue('wb-mr6cv3_108/K4', 1);
        } else if (currentHours === 20 && currentMinutes === 00) {
            setValue('wb-mr6cv3_104/K2', 0);
            setValue('wb-mr6cv3_104/K4', 0);
            setValue('wb-mr6cv3_106/K2', 0);
            setValue('wb-mr6cv3_106/K4', 0);
            setValue('wb-mr6cv3_108/K1', 0);
            setValue('wb-mr6cv3_108/K3', 0);
            setValue('wb-mr6cv3_108/K4', 0);
        }
    }
});

Пробил через
log('Доступные функции: ', Object.keys(this));
Выдает:
2024-12-09 17:57:05 Доступные функции: global,__filename

dev["wb-mr6cv3_104/K2"] = 1;

В данном случае “каждые 10 секунд”. Это не “тот” cron

if (currentHours == 8 && currentMinutes == 00) {`

Я бы рекомендовал бы сделать так:

if(currentHours >= 8 && currentHours <= 20){
    dev["wb-mr6cv3_104/K2"] = 1;
    // остальные
}
else {
    dev["wb-mr6cv3_104/K2"] = 0;
    // остальные
}
1 Like

Добрый день.
А что такое “setValue”?
Где оно описано?

Изменил, как вы сказали. Появилась данная ошибка.


Изображение WhatsApp 2024-12-09 в 20.46.06_65e112c5

Хотя файл в этой директории

Не уверен по поводу пробела в имени скрипта.
Скрипт то выполняется?

Проверил, включая имя файла.
У меня этот скрипт работает, логика отрабатывает.

defineRule('Svet', {
         when: cron('*/10 * * * *'), // Только это не каждые 10 минут, а каждые 10 секунд..
         then: function () {
           var currentTime = new Date();
           var currentHours = currentTime.getUTCHours() + 3;
           var currentMinutes = currentTime.getUTCMinutes();

           if ( currentHours >= 8 && currentHours <= 21 ) 
           {
             log("Сейчас День = ", currentHours)
           
           } else{
           
             log ("Сейчас Ночь = ", currentHours)
           }
         }
});

PS. Поскольку выше - картинка, пришлось набирать текст вручную.
PPS вместо устройств “запускал” логи.

1 Like

Большое спасибо, проблема решена. Изменил значение в формате true/falce. Скрипт заработал. :man_facepalming:

Да, действительно, не обратил внимания.