Всем Добрый День! Помогите исправить скрипт. Скрипт сделан WB AI robot. Нужно чтобы в 7 утра лента включалась на 10 процентов и каждую минуту добавляла яркость плюс 10. Испробовал многие варианты и уже нет идей. Спасибо большое!
defineRule(“led”, {
when: cron(“00 07 * * *”),
then: function() {
var brightness = 10; // Начальное значение яркости
var maxBrightness = 100; // Максимальное значение яркости
var increment = 10; // Увеличение яркости
var interval = 60000; // Интервал в миллисекундах
function adjustBrightness() {
if (brightness <= maxBrightness) {
// Включаем ленту
publish("/devices/wb-led_1/controls/Channel 1", "true");
// Устанавливаем яркость
publish("/devices/wb-led_1/controls/Channel 1 Brightness", brightness.toString());
brightness += increment;
setTimeout(adjustBrightness, interval);
}
}
adjustBrightness();
}
});
В целом логика сценария у вас верная, проблема не в идее, а в способе реализации таймера в движке wb-rules.
Обратите внимание, что wb-rules — это не браузерный JavaScript.
Механизмы setTimeout / рекурсивных вызовов функций внутри thenне рекомендуются для периодических действий по времени, так как такие таймеры плохо контролируются и могут некорректно работать.
В документации для подобных задач (изменение яркости во времени, удержание кнопки, пошаговое управление) используется другой подход:
запуск периодического таймера через startTicker();
отдельное правило, которое реагирует на timers["имя"].firing и выполняет шаг изменения;
остановка таймера через stop() при достижении нужного значения.