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

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

Модератор: immortal

Ответить
inf
Сообщения: 4
Зарегистрирован: Вс ноя 12, 2023 8:28 pm

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

Сообщение inf »

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

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

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

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

Сообщение xor »

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

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

Сообщение inf »

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

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

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

Сообщение xor »

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') и, вообще, где этот код расположен
fandaymon
Сообщения: 1576
Зарегистрирован: Сб янв 13, 2018 5:00 pm

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

Сообщение fandaymon »

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
inf
Сообщения: 4
Зарегистрирован: Вс ноя 12, 2023 8:28 pm

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

Сообщение inf »

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

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

Ваши советы направили в нужную сторону, Спасибо.
fandaymon
Сообщения: 1576
Зарегистрирован: Сб янв 13, 2018 5:00 pm

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

Сообщение fandaymon »

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

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

Сообщение inf »

действительно не работало как надо, теперь так:
$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('солнце еще высоко');
}
Ruzalak
Сообщения: 1
Зарегистрирован: Ср фев 28, 2024 5:01 pm

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

Сообщение Ruzalak »

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('солнце еще высоко');
}
Благодарю, пригодилось
Pirvlav
Сообщения: 1
Зарегистрирован: Чт фев 29, 2024 12:56 am

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

Сообщение Pirvlav »

Ваши советы направили в нужную сторону, Спасибо.
Ответить