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

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение 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?
СпойлерПоказать
Снимок3.JPG
Снимок3.JPG (14.61 КБ) 1405 просмотров
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
fandaymon
Сообщения: 1570
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

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

Сообщение fandaymon » Пт фев 28, 2020 2:40 am

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?
СпойлерПоказать
Снимок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));

Как-то так
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Пт фев 28, 2020 10:35 am

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

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

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

$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');
  }
}
Выложил видео как это работает
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить