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

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

Модератор: immortal

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

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

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

Доброго времени суток Господа!!!
Решил автоматизировать свои роллеты на окнах.
Собрал контроллеры на базе NodeMCU v3 и прошивке Tasmota. Все работает как часы. Теперь хочется создать сценарий на открытие и закрытие. Логику работы уже определил, а вот с php кодом проблема. Кто может помочь с данной ситуацией?
Логика такова: Из-за того, что наступают белые ночи, время заката происходит очень поздно...
Соответственно хочется, что бы закрытие происходило в 21.30(если закат еще не наступил (с этим проблем нет)), или на 30 минут раньше, чем должен быть закат солнца (Какое условие сработает раньше!!!). Вот с этим условием проблема: написал сценарий, что бы высчитать время закрытия роллет на 30 минут раньше заката (код тестовый):

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

$RunTime1=(gg('ow_fact.sunset')); // взял время заката
sg ('sunset.sunset', $RunTime1);
$RunTime2=mktime($RunTime1); //перевел его в Unixtime
sg ('sunset.UnixTime', $RunTime2);
$RunTime3=$RunTime2-1800; // отнял от него 1800 секунд (30 минут)
sg ('sunset.UnixTime30', $RunTime3);
$RunTime=date('H:i', $RunTime3); // вернул "нормальный" вид
$RunTime=date('H:i',$RunTime);
sg ('sunset.UnixTimeDate', $RunTime); // произвел запись

Изображение
Получается вот такая хрень!!!
Кто может подсказать в чем проблема????
Вложения
1.png
1.png (33.71 КБ) 2448 просмотров
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

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

Alexiy2 писал(а):
Пт май 21, 2021 12:53 pm
Получается вот такая хрень!!!
Кто может подсказать в чем проблема????
$RunTime=date('H:i', $RunTime3); // вернул "нормальный" вид
$RunTime=date('H:i',$RunTime);

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

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

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

[/quote]
$RunTime=date('H:i', $RunTime3); // вернул "нормальный" вид
$RunTime=date('H:i',$RunTime);

В первой строчке $RunTime Присваивается строка, а во второй $RunTime в виде строки используется в качестве таймстампа - конечно работает не правильно
[/quote]

Спасибо, что "ткнули" меня носом в мою ошибку. Но опять же проблема:
1800 это же 30 минут??? Вроде тут ни чего не попутал... После того, как закомментировал строчку $RunTime=date('H:i',$RunTime) получил вот такой ответ:
2.png
2.png (20.9 КБ) 2438 просмотров
Как видно, разница по времени не 30 минут, а 40!!!
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

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

Alexiy2 писал(а):
Пт май 21, 2021 1:53 pm
$RunTime=date('H:i', $RunTime3); // вернул "нормальный" вид
$RunTime=date('H:i',$RunTime);

В первой строчке $RunTime Присваивается строка, а во второй $RunTime в виде строки используется в качестве таймстампа - конечно работает не правильно
[/quote]

Спасибо, что "ткнули" меня носом в мою ошибку. Но опять же проблема:
1800 это же 30 минут??? Вроде тут ни чего не попутал... После того, как закомментировал строчку $RunTime=date('H:i',$RunTime) получил вот такой ответ:
2.png
Как видно, разница по времени не 30 минут, а 40!!!
[/quote]

Если просто закомментировать первую строчку, то тогда $RunTime нигде не определена. Там по идее должна быть $RunTime3
За это сообщение автора fandaymon поблагодарил:
Alexiy2 (Пт май 21, 2021 2:15 pm)
Рейтинг: 1.16%
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

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

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

Спасибо за помощь, но Ваш ответ не очень понятен для меня!!! Данный сценарий теперь выглядит вот так:

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

$RunTime1=(gg('ow_fact.sunset'));
sg ('sunset.sunset', $RunTime1);
$RunTime2=mktime($RunTime1);
sg ('sunset.UnixTime', $RunTime2);
$RunTime3=$RunTime2-1800;
sg ('sunset.UnixTime30', $RunTime3);
$RunTime=date('H:i', $RunTime3);
sg ('sunset.UnixTimeDate', $RunTime);
Но опять какая то херня!!!
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

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

Alexiy2 писал(а):
Пт май 21, 2021 2:20 pm
Спасибо за помощь, но Ваш ответ не очень понятен для меня!!! Данный сценарий теперь выглядит вот так:

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

$RunTime1=(gg('ow_fact.sunset'));
sg ('sunset.sunset', $RunTime1);
$RunTime2=mktime($RunTime1);
sg ('sunset.UnixTime', $RunTime2);
$RunTime3=$RunTime2-1800;
sg ('sunset.UnixTime30', $RunTime3);
$RunTime=date('H:i', $RunTime3);
sg ('sunset.UnixTimeDate', $RunTime);
Но опять какая то херня!!!
И mktime работает не так, как вы себе это представляете... 8-) Там скорее подошёл бы strtotime($RunTime1)
За это сообщение автора fandaymon поблагодарил:
Alexiy2 (Пт май 21, 2021 7:57 pm)
Рейтинг: 1.16%
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

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

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

И mktime работает не так, как вы себе это представляете... 8-) Там скорее подошёл бы strtotime($RunTime1)
Спасибо! Вот так нормально вычисляет!!! Как я и хотел!
А не могли бы подсказать, как написать нормально логику, что РАНЬШЕ сработает, и наоборот, что ПОЗЖЕ???
Какими командами????
:?: :?: :?: :?:
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

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

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

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

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

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

TrDA писал(а):
Пт май 21, 2021 8:16 pm
Alexiy2 писал(а):
Пт май 21, 2021 12:53 pm
Решил автоматизировать свои роллеты на окнах.
Собрал контроллеры на базе NodeMCU v3 и прошивке Tasmota. Все работает как часы.
Если это возможно можно(!) - хотелось-бы побольше грязных подробностей про "автоматизировать свои роллеты на окнах". Если, вас это не затруднит, плиз !!!
Меня ни капли не затруднит!!!! :D :D :D
так как зимой в ленинградской области закат наступает очень рано, а рассвет - поздно: то роллеты мы должны закрыть при условии на 30 минут раньше заката, а открывать, наоборот, на 30 минут позже рассвета. А летом у нас БЕЛЫЕ НОЧИ, соответственно рассвет очень ранний, а закат поздний.
Вот и хочется сделать так: Если закат будет происходить раньше (допустим 22 часов, в это время обычно начинаем укладываться спать), то запустить скрипт на закрытие окон, иначе закрывать в 22 часа ровно!!! Примерно как то так!!! :roll: :roll: :roll:

Или Вы не это имели ввиду????
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

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

Да любая логика пишется, главное, вы сами определитесь, по какому алгоритму должно все работать.
https://mjdm.ru/forum/viewtopic.php?f=2 ... 5&start=41
Ответить