Включить если == после заката

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

Модератор: immortal

Ответить
inf
Сообщения: 4
Зарегистрирован: Вс ноя 12, 2023 8:28 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Включить если == после заката

Сообщение inf » Вс ноя 12, 2023 8:51 pm

Дорогой друг, прошу помощи в логике сценария включения реле только после заката.

if (timeIs('ThisComputer.SunSetTime')) {
sg('Relay00.status', 1);
SetTimeOut("myTimer_002","sg('Relay00.status', 0);",1*360);

2 и3 пункт отдельно отрабатывают
видимо где-то ошибка в условии но где?
Аватара пользователя
xor
Сообщения: 2035
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 282 раза
Поблагодарили: 627 раз

Re: Включить если == после заката

Сообщение xor » Вс ноя 12, 2023 11:47 pm

inf писал(а):
Вс ноя 12, 2023 8:51 pm
Дорогой друг, прошу помощи в логике сценария включения реле только после заката.

if (timeIs('ThisComputer.SunSetTime')) {
sg('Relay00.status', 1);
SetTimeOut("myTimer_002","sg('Relay00.status', 0);",1*360);

2 и3 пункт отдельно отрабатывают
видимо где-то ошибка в условии но где?
if (timeIs(gg('ThisComputer.SunSetTime')) ?
inf
Сообщения: 4
Зарегистрирован: Вс ноя 12, 2023 8:28 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Включить если == после заката

Сообщение inf » Пн ноя 13, 2023 10:01 pm

if (timeIs(gg('ThisComputer.SunSetTime'))) {
sg('Relay00.status', 1);
SetTimeOut("myTimer_002","sg('Relay00.status', 0);",1*10);

в таком виде тоже не работает
Аватара пользователя
xor
Сообщения: 2035
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 282 раза
Поблагодарили: 627 раз

Re: Включить если == после заката

Сообщение xor » Пн ноя 13, 2023 11:39 pm

inf писал(а):
Пн ноя 13, 2023 10:01 pm
if (timeIs(gg('ThisComputer.SunSetTime'))) {
sg('Relay00.status', 1);
SetTimeOut("myTimer_002","sg('Relay00.status', 0);",1*10);

в таком виде тоже не работает
тогда покажите, чему у вас равно gg('ThisComputer.SunSetTime') и, вообще, где этот код расположен
За это сообщение автора xor поблагодарил:
inf (Сб ноя 18, 2023 12:01 am)
Рейтинг: 1.16%
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Включить если == после заката

Сообщение fandaymon » Ср ноя 15, 2023 11:30 pm

inf писал(а):
Пн ноя 13, 2023 10:01 pm
if (timeIs(gg('ThisComputer.SunSetTime'))) {
sg('Relay00.status', 1);
SetTimeOut("myTimer_002","sg('Relay00.status', 0);",1*10);

в таком виде тоже не работает
Это условие сработает только если системное время будет равно SunSetTime, минутой раньше или минутой позже - не сработает

Я так понимаю, задача в том чтобы какой-то триггер включал что-то только когда темно?

Тогда проще всего проверять gg('DarknessMode.active') == 1
За это сообщение автора fandaymon поблагодарил:
inf (Сб ноя 18, 2023 12:01 am)
Рейтинг: 1.16%
inf
Сообщения: 4
Зарегистрирован: Вс ноя 12, 2023 8:28 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Включить если == после заката

Сообщение inf » Пт ноя 17, 2023 9:34 pm

В переменной ThisComputer.SunSetTime была строка(возможно) т.к say (gg('ThisComputer.SunSetTime')); какое то значение выдавал
сделал сценарий с функцией date_sun_info, теперь конструкция if (timeIs>(gg('ThisComputer.SunSetTime'))) { заработала

проверять по gg('DarknessMode.active') == 1 ,эта идея пришла ко мне и вникнув в метод onNewMinute увидел что это уже написано в коде осталось только брать значение.

Ваши советы направили в нужную сторону, Спасибо.
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Включить если == после заката

Сообщение fandaymon » Пн ноя 20, 2023 4:31 am

inf писал(а):
Пт ноя 17, 2023 9:34 pm
конструкция if (timeIs>(gg('ThisComputer.SunSetTime'))) { заработала
Не могла она заработать. timeIs($time) это функция МДМ, которая сравнивает текущее время в формате 'H:i' ('03:31') со строчкой, переданной в виде аргумента $time. timeIs без скобок это вообще не пойми что и, по идее, должно выдавать ошибку
inf
Сообщения: 4
Зарегистрирован: Вс ноя 12, 2023 8:28 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Включить если == после заката

Сообщение inf » Вс ноя 26, 2023 8:21 pm

действительно не работало как надо, теперь так:
$dark=(gg('ThisComputer.isDark'));
if ($dark == 1) {
say('включаем свет');
sg('Relay00.status', 1);
SetTimeOut("myTimer_999","sg('Relay00.status', 0);",360);
SetTimeOut("myTimer_998","say('вЫключаем свет');",360);
} else{
say('солнце еще высоко');
}
Ответить