Страница 4 из 4

Re: Подскажите как правильно создать таймер!

Добавлено: Пт фев 28, 2020 1:06 am
Divan
Имеется люстра Xiaomi Yeelight JIAOYUE 650, хочу создать сценарии на поэтапное снижение яркости с 40% до 10% в течение 30 минут, где каждые 5 минут будет снижаться яркость на 5%, привожу таблицу ниже. Тут нужно создать таймер, где каждые 5 минут будет запускаться сценарии и по достижении яркости 10% запуск сценария прекратится. Как это сделать?

5 минут - 35%
10 минут - 30%
15 минут - 25%
20 минут - 20%
25 минут - 15%
30 минут - 10%


И как сделать текстовый отсчет времени как у датчиков xiaomi?
SPOILERSPOILER_SHOW
Снимок3.JPG
Снимок3.JPG (14.61 КБ) 1489 просмотров

Re: Подскажите как правильно создать таймер!

Добавлено: Пт фев 28, 2020 2:40 am
fandaymon
Divan писал(а): Пт фев 28, 2020 1:06 am Имеется люстра Xiaomi Yeelight JIAOYUE 650, хочу создать сценарии на поэтапное снижение яркости с 40% до 10% в течение 30 минут, где каждые 5 минут будет снижаться яркость на 5%, привожу таблицу ниже. Тут нужно создать таймер, где каждые 5 минут будет запускаться сценарии и по достижении яркости 10% запуск сценария прекратится. Как это сделать?

5 минут - 35%
10 минут - 30%
15 минут - 25%
20 минут - 20%
25 минут - 15%
30 минут - 10%


И как сделать текстовый отсчет времени как у датчиков xiaomi?
SPOILERSPOILER_SHOW
Снимок3.JPG
Создай 6 таймеров с разными названиями на все эти отрезки времени, каждый из которых будет выставлять свою яркость, да и всё
Ну или один таймер который будет запускать сценарий с параметром яркость. В самом сценарии выставляешь полученную яркость и запускаешь таймер вызывающий сценарий уже с новой яркостью через 5 минут. Если параметр = 10, то яркость выставляешь и больше ничего не запускаешь.

Сценарий XLight

Код: Выделить всё

$Brightness=$params['Brightness'];
sg('Xiaomi.Brigtness',$Brightness); //Тут свои объекты и свойства
if ($Brightness>30) {
$Brightness-=5;
SetTimeOut('Xlight_Brightness',"rs('XLight',array('Brightness'=>$Brightness));",5*60);
}
Первоначальный запуск rs('XLight',array('Brightness'=>40));

Как-то так

Re: Подскажите как правильно создать таймер!

Добавлено: Пт фев 28, 2020 10:35 am
Divan
Сделал как вы написали - не работает, но все равно вам спасибо за идею. Я сделал иначе и это рабочий вариант + создал свойство-метод bg_bright и привязал сценарии к методу bg_bright, где при значении от 40 до 10 сработает сценарии. Но если я не хочу, чтобы это срабатывало, то добавил еще правило на проверку bg_dimming, если оно равно 0, то плавное выключение амбилайт не будет работать.

В виде blockly
SPOILERSPOILER_SHOW
Амбилайт затемнение.JPG
Амбилайт затемнение.JPG (71.38 КБ) 1441 просмотр
или в виде кода

Код: Выделить всё

$Brightness;


$Brightness = getGlobal('Xiaomi_Yeelight_JIAOYUE650.bg_bright') - 5;
if (getGlobal('Xiaomi_Yeelight_JIAOYUE650.bg_power') == 1 && getGlobal('Xiaomi_Yeelight_JIAOYUE650.bg_dimming') == 1) {
  if (getGlobal('Xiaomi_Yeelight_JIAOYUE650.bg_bright') >= 10 && getGlobal('Xiaomi_Yeelight_JIAOYUE650.bg_bright') <= 40) {
    clearTimeOut('Амбилайт_затемнение');
    $timerCode=<<<EOT
      setGlobal('Xiaomi_Yeelight_JIAOYUE650.bg_bright', $Brightness);
EOT;
    setTimeOut('Амбилайт_затемнение', $timerCode, (int)('300'));
  } else if (getGlobal('Xiaomi_Yeelight_JIAOYUE650.bg_bright') == 5) {
    setGlobal('Xiaomi_Yeelight_JIAOYUE650.bg_power', '0');
  }
}
Выложил видео как это работает