Re: Как реализовать 3 состояния для одного выключателя?
Добавлено: Вс окт 13, 2019 3:09 pm
а нет сцены новостей
Обсуждение проекта
https://www.mjdm.ru/forum/
а нет сцены новостей
Там же ниже привязывается нужное свойство.Divan писал(а): Вс окт 13, 2019 1:25 pm Нужна помощь, как сделать, чтобы при выборе функции, можно было выставлять время для Ночного режима или для заката?SPOILERSPOILER_SHOWПоле выбора radio.JPG
Выкладываю инструкцию, как настроить новости. Сам готовый объект Weather можете скачать здесь, вот так он будет выглядеть, тут есть и ночной режим. Пока я с ним разбираюсь, хочу понять как нужно настроить Ночной режим, чтобы можно было переключать по закату или по времени. Как разберусь, выложу инструкцию.
Код: Выделить всё
http://www.vesti.md/rss/news.xml
Код: Выделить всё
$Msn=(gg("Mainsity.Say_news"));
if ($Msn=='свежие новости') {
$data=SQLSelectOne("SELECT * FROM rss_items ORDER BY ADDED DESC LIMIT 1");
//вариант с фильтром по каналу: $data=SQLSelectOne("SELECT * FROM rss_items WHERE CHANNEL_ID=5 ORDER BY ADDED DESC LIMIT 1"); //вместо 5 нужный ID канала
$news_text=$data['BODY']; // текст новости
$news_header=$data['TITLE']; // заголовок
setGlobal('Mainsity.eventsTitle',$news_header);
setGlobal('Mainsity.eventsNews',$news_text);
$status="";
$tm=(gg("Mainsity.Say_news_text"));
if ($tm=='Заголовок') {
$status.=(''.$news_header.' ');
} elseif ($tm=='Новость') {
$status.=(''.$news_text.' ');
} else{
$status.=(''.$news_header.'. '.$news_text.'. ');
}
say($status,5);
}
Код: Выделить всё
if (getGlobal("DarknessMode.active") == 1 && getGlobal('NightMode.mode') == 2) {
callMethod('NightMode.activate');
} else if (getGlobal("DarknessMode.active") == 0 && getGlobal('NightMode.mode') == 2) {
callMethod('NightMode.deactivate');
}
Код: Выделить всё
$sun_info = date_sun_info(time(), 46.984, 28.8358);
foreach ($sun_info as $key => $val) {
if ($key == 'sunrise') {
$sunrise = $val;
setGlobal('ThisComputer.SunRiseTime',date("H:i", $sunrise));
}
if ($key == 'sunset') {
$sunset = $val;
$day_length = $sunset - $sunrise;
setGlobal('ThisComputer.SunSetTime',date("H:i", $sunset));}}
Очень странный способ включать Ночной режим при включение Тёмного времени суток...Divan писал(а): Вс окт 13, 2019 11:23 pm
Вариант кода в PHPКод: Выделить всё
if (getGlobal("DarknessMode.active") == 1 && getGlobal('NightMode.mode') == 2) { callMethod('NightMode.activate'); } else if (getGlobal("DarknessMode.active") == 0 && getGlobal('NightMode.mode') == 2) { callMethod('NightMode.deactivate'); }
Если из всего массива нужны только sunset и sunrise, то можно не перебирать все элементы массива, а ссылаться на них сразуDivan писал(а): Вс окт 13, 2019 11:23 pm Осталось сделать сценарии "Вычисляем восход и заход солнца" и в CRON настроить на запуск сценария раз в сутки в 00:00. Данный сценарии позволит вычислить восход и заход солнца, который внесет данные в ThisComputer.SunSetTime и ThisComputer.SunRiseTimeКод для сценария "Вычисляем восход и заход солнца"SPOILERSPOILER_SHOW06 - восход и заход солнца.JPG
03 - создаем сценарии Вычисляем восход и заход солнца.JPGКод: Выделить всё
$sun_info = date_sun_info(time(), 46.984, 28.8358); foreach ($sun_info as $key => $val) { if ($key == 'sunrise') { $sunrise = $val; setGlobal('ThisComputer.SunRiseTime',date("H:i", $sunrise)); } if ($key == 'sunset') { $sunset = $val; $day_length = $sunset - $sunrise; setGlobal('ThisComputer.SunSetTime',date("H:i", $sunset));}}
В onNewMinute вместо того что есть сейчас прописывается примерно такой код:Divan писал(а): Пн окт 14, 2019 2:42 am про Кишинёв, мой косяк. Можете, если не трудно написать правильный код для заката и восхода солнца? Если я в методе onNewMinute в коде ночного режима пропишу правило, чтобы срабатывал, если у night mode стоит значение 1, это будет работать?
Код: Выделить всё
if (timeIs(gg('NightModeStart'))) {
callMethod('NightMode.activate');
} elseif (timeIs(gg('NightModeEnd'))) {
callMethod('NightMode.deactivate');
}
Код: Выделить всё
$h=(int)date('G',time());
if ($h==3) {
$sun_info = date_sun_info(time(), 55.75, 37.62); //Примерно координаты Москвы
setGlobal('SunRiseTime',date("H:i", $sun_info['sunrise']));
setGlobal('SunSetTime',date("H:i", $sun_info['sunset']));
if (gg('NightMode.mode')==2) {
setGlobal('NightModeEnd',date("H:i", $sun_info['sunrise']));
setGlobal('NightModeStart ',date("H:i", $sun_info['sunset']));
}
}На самом деле новичкам подробно разжевывают и не один раз... Просто каждый новичок (почти каждый) считает что его проблема уникальна, поэтому даже не пытается поискать решение на форуме, а сразу открывает новую тему со своей проблемой и форум загромождается постоянными повторами одного и того же... А люди все занятые, повторять одно и тоже не особо интересно, в конце концов если человек ленится потратить своё время на поиск, то почему ты должен тратить своё время и писать одно и тоже? Но это так - не претензия лично к вам, просто мысли вслухDivan писал(а): Пн окт 14, 2019 2:42 am "logrus", когда жинка автора скалкой приголубит - иной раз мне вас не понять, может вам понятно, но мне лично не ясно что вы этим хотите сказать. Потом здесь на форуме новичкам никто подробно не разжевывает, а я стараюсь разобраться, понять и помочь таким же новичкам, как и я. Вы так и не ответили на мой вопрос, как решать проблему в одну строку, даже не ответили мне в личку. Игнор!?