Открытие закрытие роллетных ставень

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

Модератор: immortal

Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Открытие закрытие роллетных ставень

Сообщение Alexiy2 » Пт май 21, 2021 8:59 pm

Chainik писал(а):
Пт май 21, 2021 8:48 pm
Да любая логика пишется, главное, вы сами определитесь, по какому алгоритму должно все работать.
https://mjdm.ru/forum/viewtopic.php?f=2 ... 5&start=41
Уважаемый Chainik!!!
Закат и рассвет давно присутствует (берется из модуля погоды), как прибавить 30 минут к рассвету я знал, а вот как сделать на 30 минут раньше - Добрые люди подсказали!!! У меня не та команда стояла, поэтому высчитывалось некорректно. С PHP я на ВЫ! Читаю мануалы и пробую что то сделать! А вот со временем, ЧТО НАСТУПИТ РАНЬШЕ, я как то пока не нашел, поэтому и спрашиваю у сообщества. И, надеюсь, что какой-нибудь знающий человек подскажет... А может и сам найду раньше ответа сообщества... Всех благодарю за посильную помощь...
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Открытие закрытие роллетных ставень

Сообщение fandaymon » Пт май 21, 2021 9:15 pm

Alexiy2 писал(а):
Пт май 21, 2021 8:04 pm
И mktime работает не так, как вы себе это представляете... 8-) Там скорее подошёл бы strtotime($RunTime1)
Спасибо! Вот так нормально вычисляет!!! Как я и хотел!
А не могли бы подсказать, как написать нормально логику, что РАНЬШЕ сработает, и наоборот, что ПОЗЖЕ???
Какими командами????
:?: :?: :?: :?:
Самое простое - во время вычислений -30 минут вычислить strtotime('22:00') и посмотреть что меньше
Делать это в какое-нибудь время типа 2 часа ночи, например, в сценарии Hourly

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

$h=(int)date('G',time());

if ($h==2) {
 $RunTime1=(gg('ow_fact.sunset'));
 $RunTime2=strtotime($RunTime1);
 $RunTime2=$RunTime2-1800;
 $RunTime3=strtotime('22:00');

 if ($RunTime3 > $RunTime2) {
  AddScheduledJob("CloseCurtain","rs('Close_Curtains');", $RunTime2 );
 } else {
  AddScheduledJob("CloseCurtain","rs('Close_Curtains');", $RunTime3 );
 }
}
Как-то так... Не проверял 8-)
В нужное время выполнится скрипт Close_Curtains
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Открытие закрытие роллетных ставень

Сообщение Alexiy2 » Пт май 21, 2021 9:18 pm

fandaymon писал(а):
Пт май 21, 2021 9:15 pm
Alexiy2 писал(а):
Пт май 21, 2021 8:04 pm
И mktime работает не так, как вы себе это представляете... 8-) Там скорее подошёл бы strtotime($RunTime1)
Спасибо! Вот так нормально вычисляет!!! Как я и хотел!
А не могли бы подсказать, как написать нормально логику, что РАНЬШЕ сработает, и наоборот, что ПОЗЖЕ???
Какими командами????
:?: :?: :?: :?:
Самое простое - во время вычислений -30 минут вычислить strtotime('22:00') и посмотреть что меньше
Делать это в какое-нибудь время типа 2 часа ночи, например, в сценарии Onhourly

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

$h=(int)date('G',time());

if ($h==2) {
 $RunTime1=(gg('ow_fact.sunset'));
 $RunTime2=strtotime($RunTime1);
 $RunTime2=$RunTime2-1800;
 $RunTime3=strtotime('22:00');

 if ($RunTime3 > $RunTime2) {
  AddScheduledJob("CloseCurtain","rs('Close_Curtains');", $RunTime2 );
 } else {
  AddScheduledJob("CloseCurtain","rs('Close_Curtains');", $RunTime3 );
 }
}
Как-то так... Не проверял 8-)
В нужное время выполнится скрипт Close_Curtains
Спасибо за подсказку!!!! Только что читал статью о Сравнении дат и времени!!! Там так же написано!!!! Огромнейшая БЛАГОДАРНОСТЬ Вам!!!
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Открытие закрытие роллетных ставень

Сообщение Alexiy2 » Пт май 21, 2021 9:53 pm

Отдельное спасибо Уважаемому мною fandaymon за подсказки!!!
Сценарий получился вот таким для определения времени закрытия роллет:

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

//$RunTime1=(gg('ow_fact.sunset')); // берем время заката
$RunTime2=strtotime($RunTime1); // Переводим его в UNIXTime
$RunTime3=$RunTime2-1800; // Вычитаем 30 минут
$RunTime4=strtotime('22:00');
if ($RunTime4 >= $RunTime3) {
$RunTime3=date('H:i', $RunTime3);
sg ('sunset.Start', $RunTime3);
} else {
$RunTime4=date('H:i', $RunTime4);
sg ('sunset.Start', $RunTime4);
}
Но опять загвоздка... Решил я установить время заката после полуночи (бывает у нас такое "счастье" в разгар белых ночей) и скрипт отработал не верно. Почему он так сделал я понимаю, а вот как это исправить, буду думать и читать далее.
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Открытие закрытие роллетных ставень

Сообщение fandaymon » Пт май 21, 2021 10:39 pm

Alexiy2 писал(а):
Пт май 21, 2021 9:53 pm
Отдельное спасибо Уважаемому мною fandaymon за подсказки!!!
Сценарий получился вот таким для определения времени закрытия роллет:

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

//$RunTime1=(gg('ow_fact.sunset')); // берем время заката
$RunTime2=strtotime($RunTime1); // Переводим его в UNIXTime
$RunTime3=$RunTime2-1800; // Вычитаем 30 минут
$RunTime4=strtotime('22:00');
if ($RunTime4 >= $RunTime3) {
$RunTime3=date('H:i', $RunTime3);
sg ('sunset.Start', $RunTime3);
} else {
$RunTime4=date('H:i', $RunTime4);
sg ('sunset.Start', $RunTime4);
}
Но опять загвоздка... Решил я установить время заката после полуночи (бывает у нас такое "счастье" в разгар белых ночей) и скрипт отработал не верно. Почему он так сделал я понимаю, а вот как это исправить, буду думать и читать далее.
Добавить ещё сравнение $RunTime2 с strtotime('06:00'), если меньше то в $RunTime3 помещать $RunTime4
За это сообщение автора fandaymon поблагодарил:
lihodeev (Сб май 22, 2021 4:48 pm)
Рейтинг: 1.16%
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: Открытие закрытие роллетных ставень

Сообщение TrDA » Сб май 22, 2021 11:25 pm

Alexiy2 писал(а):
Пт май 21, 2021 8:32 pm
TrDA писал(а):
Пт май 21, 2021 8:16 pm
Alexiy2 писал(а):
Пт май 21, 2021 12:53 pm
Решил автоматизировать свои роллеты на окнах.
Собрал контроллеры на базе NodeMCU v3 и прошивке Tasmota. Все работает как часы.
Если это возможно можно(!) - хотелось-бы побольше грязных подробностей про "автоматизировать свои роллеты на окнах". Если, вас это не затруднит, плиз !!!
Меня ни капли не затруднит!!!! :D :D :D
Или Вы не это имели ввиду????
Меня интересовали "грязные" технические подробности.
Всем удачи.
Спрашивайте - не стесняйтесь.
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Открытие закрытие роллетных ставень

Сообщение Alexiy2 » Вс май 23, 2021 9:47 pm

[/quote]

Меня интересовали "грязные" технические подробности.
[/quote]
Что то я не пойму сленга Вашего! Можно на более русском народном. А то я только учу данный язык. Мы так не общались... ;)
Вы про железо имеете ввиду? Или прошивку?
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Открытие закрытие роллетных ставень

Сообщение Jilber » Вс май 23, 2021 9:53 pm

Я думаю будет интересно и железо, и прошивки, и схемы, и фото... :-)
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Открытие закрытие роллетных ставень

Сообщение Alexiy2 » Вт май 25, 2021 10:54 am

Jilber писал(а):
Вс май 23, 2021 9:53 pm
Я думаю будет интересно и железо, и прошивки, и схемы, и фото... :-)
к сожалению контроллеры уже установлены в свои родные места, и сделать фото не предоставляется возможным. Заказал с Китая на оставшиеся окна NodeMcu и релюшки. Как придет посылка, буду делать еще три контроллера, вот тогда и напишу с фото отчет по проделанной работе.
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: Открытие закрытие роллетных ставень

Сообщение TrDA » Ср май 26, 2021 11:33 am

Alexiy2 писал(а):
Вс май 23, 2021 9:47 pm
Меня интересовали "грязные" технические подробности.
[/quote]
Что то я не пойму сленга Вашего! Можно на более русском народном. А то я только учу данный язык. Мы так не общались... ;)
Вы про железо имеете ввиду? Или прошивку?
[/quote]
Особенно(!) интересно про железо.
Всем удачи.
Спрашивайте - не стесняйтесь.
Ответить