Страница 1 из 3
Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 12:53 pm
Alexiy2
Доброго времени суток Господа!!!
Решил автоматизировать свои роллеты на окнах.
Собрал контроллеры на базе 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); // произвел запись

Получается вот такая хрень!!!
Кто может подсказать в чем проблема????
Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 1:36 pm
fandaymon
Alexiy2 писал(а): ↑Пт май 21, 2021 12:53 pm
Получается вот такая хрень!!!
Кто может подсказать в чем проблема????
$RunTime=date('H:i', $RunTime3); // вернул "нормальный" вид
$RunTime=date('H:i',$RunTime);
В первой строчке $RunTime Присваивается строка, а во второй $RunTime в виде строки используется в качестве таймстампа - конечно работает не правильно
Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 1:53 pm
Alexiy2
[/quote]
$RunTime=date('H:i', $RunTime3); // вернул "нормальный" вид
$RunTime=date('H:i',$RunTime);
В первой строчке $RunTime Присваивается строка, а во второй $RunTime в виде строки используется в качестве таймстампа - конечно работает не правильно
[/quote]
Спасибо, что "ткнули" меня носом в мою ошибку. Но опять же проблема:
1800 это же 30 минут??? Вроде тут ни чего не попутал... После того, как закомментировал строчку $RunTime=date('H:i',$RunTime) получил вот такой ответ:

- 2.png (20.9 КБ) 3831 просмотр
Как видно, разница по времени не 30 минут, а 40!!!
Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 1:59 pm
fandaymon
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
Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 2:20 pm
Alexiy2
Спасибо за помощь, но Ваш ответ не очень понятен для меня!!! Данный сценарий теперь выглядит вот так:
Код: Выделить всё
$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);
Но опять какая то херня!!!
Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 3:39 pm
fandaymon
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 работает не так, как вы себе это представляете...

Там скорее подошёл бы strtotime($RunTime1)
Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 8:04 pm
Alexiy2
И mktime работает не так, как вы себе это представляете...

Там скорее подошёл бы strtotime($RunTime1)
Спасибо! Вот так нормально вычисляет!!! Как я и хотел!
А не могли бы подсказать, как написать нормально логику, что
РАНЬШЕ сработает, и наоборот, что
ПОЗЖЕ???
Какими командами????

Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 8:16 pm
TrDA
Alexiy2 писал(а): ↑Пт май 21, 2021 12:53 pm
Решил автоматизировать свои роллеты на окнах.
Собрал контроллеры на базе NodeMCU v3 и прошивке Tasmota. Все работает как часы.
Если это возможно можно(!) - хотелось-бы побольше грязных подробностей про "автоматизировать свои роллеты на окнах". Если, вас это не затруднит, плиз !!!
Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 8:32 pm
Alexiy2
TrDA писал(а): ↑Пт май 21, 2021 8:16 pm
Alexiy2 писал(а): ↑Пт май 21, 2021 12:53 pm
Решил автоматизировать свои роллеты на окнах.
Собрал контроллеры на базе NodeMCU v3 и прошивке Tasmota. Все работает как часы.
Если это возможно можно(!) - хотелось-бы побольше грязных подробностей про "автоматизировать свои роллеты на окнах". Если, вас это не затруднит, плиз !!!
Меня ни капли не затруднит!!!!
так как зимой в ленинградской области закат наступает очень рано, а рассвет - поздно: то роллеты мы должны закрыть при условии
на 30 минут раньше заката, а открывать, наоборот, на 30 минут позже рассвета. А летом у нас БЕЛЫЕ НОЧИ, соответственно рассвет очень ранний, а закат поздний.
Вот и хочется сделать так: Если закат будет происходить раньше (допустим 22 часов, в это время обычно начинаем укладываться спать), то запустить скрипт на закрытие окон, иначе закрывать в 22 часа ровно!!! Примерно как то так!!!
Или Вы не это имели ввиду????
Re: Открытие закрытие роллетных ставень
Добавлено: Пт май 21, 2021 8:48 pm
Chainik
Да любая логика пишется, главное, вы сами определитесь, по какому алгоритму должно все работать.
https://mjdm.ru/forum/viewtopic.php?f=2 ... 5&start=41