ночной и дневной режим

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

ночной и дневной режим

Сообщение blackangel » Сб ноя 19, 2016 10:02 pm

скажите, вот в MD есть переход в ночной и дневной режим. Где оно настраивается? время перехода постоянно или берется из времени захода и восхода?

Что хочу сделать:

1. есть обьект у openweather, ow_fact.sunrise и ow_fact.sunset. значения там такого вида: 1479532463 а в морде показывает нормально (в морде это в самой панели управления - Погода от OpenWeatherMap.org) и значение там: Восход/заход солнца: 08:14:23 / 16:15:47

вот хотелось бы понять как это значение преобразуется в нормальное время?

2. нужно как то сделать посредством MD что бы в созданном объекте менялось значение 0 или 1 в зависимости от режима, дневной или ночной, и этот режим должен переключатся в зависимости от времени восхода и захода. Помогите реализовать.

P.S. значение 0 или 1 будут улетать в контроллер по modbus и управлять включением ночного освещения.
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: ночной и дневной режим

Сообщение Jager » Сб ноя 19, 2016 10:23 pm

blackangel писал(а):скажите, вот в MD есть переход в ночной и дневной режим. Где оно настраивается? время перехода постоянно или берется из времени захода и восхода?

Что хочу сделать:

1. есть обьект у openweather, ow_fact.sunrise и ow_fact.sunset. значения там такого вида: 1479532463 а в морде показывает нормально (в морде это в самой панели управления - Погода от OpenWeatherMap.org) и значение там: Восход/заход солнца: 08:14:23 / 16:15:47

вот хотелось бы понять как это значение преобразуется в нормальное время?

2. нужно как то сделать посредством MD что бы в созданном объекте менялось значение 0 или 1 в зависимости от режима, дневной или ночной, и этот режим должен переключатся в зависимости от времени восхода и захода. Помогите реализовать.

P.S. значение 0 или 1 будут улетать в контроллер по modbus и управлять включением ночного освещения.
У меня для этой цели работает вот такой скрипт из глубин форума, запускается 1 раз в сутки.

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

$sun_info = date_sun_info(time(), 55,0000000 52.0000000); // географические координаты

foreach ($sun_info as $key => $val) {

if ($key == 'sunrise') {

$sunrise = $val;
//echo 'Восход: '.date("H:i:s", $sunrise).'<br>';
setGlobal('ThisComputer.SunRiseTime',date("H:i", $sunrise));
}

if ($key == 'sunset') {

$sunset = $val;
$day_length = $sunset - $sunrise;

//echo 'Заход: '.date("H:i", $sunset).'<br>';
//echo 'Долгота дня: '.gmdate("H:i", $day_length).'<br>';
setGlobal('ThisComputer.SunSetTime',date("H:i", $sunset));
setGlobal('ThisComputer.LongTagTime',gmdate("H:i", $day_length));
}

if ($key == 'transit') {
//echo 'В зените: '.date("H:i:s", $val).'<br>';
setGlobal('ThisComputer.TransitTime',date("H:i", $val));
}

if ($key == 'civil_twilight_begin') {
//echo 'Начало утренних сумерек: '.date("H:i", $val).'<br>';
setGlobal('ThisComputer.Chicivil_beginTime',date("H:i", $val));
}

if ($key == 'civil_twilight_end') {
//echo 'Конец вечерних сумерек: '.date("H:i:s", $val).'<br>';
setGlobal('ThisComputer.civil_endTime',date("H:i", $val));
}

}
в onNewMinute такой код

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

if (timeIs(getGlobal('ThisComputer.SunSetTime'))) {
  say('Солнце заходит',2);
  SetTimeOut("lightOnTimer","callMethod('Megad3-8.turnOn');",1200); //включает уличное освещение с задержкой в 20 минут  
Соответственно вам можно сделать так

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

  SetTimeOut("lightOnTimer","setGlobal('объект.свойство,1');",1200);
За это сообщение автора Jager поблагодарил:
blackangel (Вс ноя 20, 2016 1:07 am)
Рейтинг: 1.16%
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: ночной и дневной режим

Сообщение Alexiy2 » Сб ноя 19, 2016 10:39 pm

blackangel писал(а):скажите, вот в MD есть переход в ночной и дневной режим. Где оно настраивается? время перехода постоянно или берется из времени захода и восхода?
Настраивается данная функция в ОБЪЕКТ-OperationalModes-NightMode, это и есть "Ночьной режим" (т.е. если он активирован, то в свойствах прописывается 1, иначе 0). Время перехода в данный режим можно настроить по разному, кто то настраивает через время восхода и заката, а кто то устанавливает датчик освещенности. Решать все Вам самим, как душа Ваша пожелает!
blackangel писал(а): 1. есть обьект у openweather, ow_fact.sunrise и ow_fact.sunset. значения там такого вида: 1479532463 а в морде показывает нормально (в морде это в самой панели управления - Погода от OpenWeatherMap.org) и значение там: Восход/заход солнца: 08:14:23 / 16:15:47
тут ни каких трудностей нет. В свойствах прописывается timestamp, его надо преобразовать в нормальное время. Привожу пример, как это можно проделать:
СпойлерПоказать
поправте немного файл app_openweather.class.php, который находится в папке ../modules/app_openweather. В данном файле найдите строки
$sunRise = $sunInfo["sunrise"];
$sunSet = $sunInfo["sunset"];
после этих строк допишите
$sunRiseData = date(('H:i'),$sunInfo["sunrise"]);
$sunSetData = date(('H:i'),$sunInfo["sunset"]);
далее находим строку
sg('ow_fact.sunrise', $sunRise);
и после неё вставляем следующие строки
sg('ThisComputer.SunRiseTime', $sunRiseData);
sg('ThisComputer.SunSetTime', $sunSetData);
blackangel писал(а): вот хотелось бы понять как это значение преобразуется в нормальное время?

2. нужно как то сделать посредством MD что бы в созданном объекте менялось значение 0 или 1 в зависимости от режима, дневной или ночной, и этот режим должен переключатся в зависимости от времени восхода и захода. Помогите реализовать.

P.S. значение 0 или 1 будут улетать в контроллер по modbus и управлять включением ночного освещения.
в Объект-Timer-onNewMinute должны быть такие строки (они по умолчанию должны стоять после установки системы):

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

if (timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')=="1") {
  setGlobal("isDark",0);
  callMethod('DarknessMode.deactivate');  
 } elseif (!timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')!="1") {
  setGlobal("isDark",1);
  callMethod('DarknessMode.activate');    
 }
За это сообщение автора Alexiy2 поблагодарили (всего 3):
blackangel (Вс ноя 20, 2016 1:07 am) • Amarok (Вс ноя 20, 2016 9:37 am) • Denis_k (Вт ноя 29, 2016 12:12 am)
Рейтинг: 3.49%
Аватара пользователя
71Gavrik71
Сообщения: 54
Зарегистрирован: Сб май 21, 2016 2:04 pm
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: ночной и дневной режим

Сообщение 71Gavrik71 » Пт янв 06, 2017 12:14 am

Чет не че не работает может кто подскажет???
iapet
Сообщения: 289
Зарегистрирован: Вт авг 18, 2015 6:23 pm
Благодарил (а): 8 раз
Поблагодарили: 36 раз

Re: ночной и дневной режим

Сообщение iapet » Вт янв 24, 2017 11:18 pm

71Gavrik71 писал(а):Чет не че не работает может кто подскажет???
Что именно?
Alexsan
Сообщения: 49
Зарегистрирован: Пн янв 02, 2017 5:39 pm
Откуда: Москва
Благодарил (а): 5 раз
Поблагодарили: 1 раз

Re: ночной и дневной режим

Сообщение Alexsan » Вс янв 29, 2017 6:17 pm

можно немного попадробней об этой теме,хотелось бы тоже такое сделать.... куда и что прописывать
iapet
Сообщения: 289
Зарегистрирован: Вт авг 18, 2015 6:23 pm
Благодарил (а): 8 раз
Поблагодарили: 36 раз

Re: ночной и дневной режим

Сообщение iapet » Вс янв 29, 2017 11:34 pm

Alexsan писал(а):можно немного попадробней об этой теме,хотелось бы тоже такое сделать.... куда и что прописывать
Подробнее уже некуда. Конкретные исходные данные дайте и что хотите напишите.. А так - "кубический конь в вакууме"...
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: ночной и дневной режим

Сообщение blackangel » Пт фев 03, 2017 2:06 pm

и снова здравствуйте! Спасибо всем кто отписался, очень полезная инфа и во многом помогла разобраться!

Остались такие вопросы с призывом о помощи, т.к. не очень силен в скриптах. Итак, что нужно:

я в объекте openweather - ow_fact, создал 2 свойства: ow_fact.sunrise2 и ow_fact.sunset2. Что нужно: получить в этих свойствах нормального вида время, взятое из свойств: ow_fact.sunrise, ow_fact.sunset в которых время в виде числа времени UNIX. т.е. подскажите где, куда, надо что создать, дописать что бы преобразовывать время.)))) Спасибо!
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: ночной и дневной режим

Сообщение Alexiy2 » Пт фев 03, 2017 2:23 pm

5-ю постами выше все описано. Не уж то читать лень?

Отправлено с моего SM-T116 через Tapatalk
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: ночной и дневной режим

Сообщение nick7zmail » Пт фев 03, 2017 2:29 pm

Создаёте в классе метод (time_fix к примеру), свойства ow_fact.sunrise, ow_fact.sunrise тоже прописываете в классе, и в поле "выполнять метод при изменении" привязываете метод time_fix (к обоим).
При изменении будет запускаться данный метод. В нем уже пишите преобразования по типу

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

sg('ow_fact.sunrise2', date('H:i', gg('ow_fact.sunrise'))); 
и со вторым так же....
За это сообщение автора nick7zmail поблагодарил:
Samir77 (Вт май 08, 2018 11:16 pm)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить