умный таймер -подскажите алгоритм

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

Модератор: immortal

Ответить
gagarin74
Сообщения: 331
Зарегистрирован: Пн апр 06, 2015 9:51 am
Благодарил (а): 37 раз
Поблагодарили: 22 раза

умный таймер -подскажите алгоритм

Сообщение gagarin74 » Чт май 07, 2015 12:08 pm

Добрый день.Хотелось бы сделать выключение розетки по таймеру.
С электрической схемой проблем нет.
Нужна консультация по PHP и функций умного дома.
1 есть переменная $A -текущее время
2 есть переменная $B - состояние команды на подачу к реле (0 или 1)
3 есть переменная $D - время отчета в минутах (5,10,120 минут)
4 есть переменная $F - время остановки =$A+$D
Нужно что бы когда $F совпадала с текущем временем($A) переменная $B менялась
У меня проблема как получить $F , не могу понять (как пример к 24 минутам текущего времени ,прибавить 63 минут, что бы комп понял что это уже другой час)

P.s можно конечно запихнуть счетчик переменной в минутный цикл и он будет прибавлять +1 каждый раз и по истечение 63 раз переделает переменную $B. Но это как то не красиво. Может есть более универсальный способ?
itank
Сообщения: 9
Зарегистрирован: Вт мар 17, 2015 6:45 pm
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: умный таймер -подскажите алгоритм

Сообщение itank » Пт май 08, 2015 7:36 am

timeIs($tm) -- проверяет совпадает ли текущее время с передаваемым в формате hh:mm
timeBefore($tm) -- сравнивает время $tm (hh:mm) и текущее. Если текущее меньше, то 1 иначе 0
timeAfter($tm) -- сравнивает время $tm (hh:mm) и текущее. Если текущее больше, то 1 иначе 0
timeBetween($tm1, $tm2) -- проверяет входит ли текущее время в заданный интервал (каждое hh:mm, причем $tm1 может быть больше чем $tm2, например 23:00 05:00)

есть встроенные функции
http://smartliving.ru/Main/ProgrammingFunctions
и в Вашем случае лучше для получения $F лучше использовать
вот такой обвяз
Command:

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

$time = "00:24:00"; 
$time2 = "63 minutes";  
$timestamp = strtotime($time." +".$time2); 
$endTime = date("H:i:s", $timestamp); 
echo $endTime;
Result:
01:27:00



а можно в запуске метода установки таймера сразу вмантулить
SetTimeOut("title","commands", $timeout); -- $timeout в секундах (аналог AddScheduledJob("title","commands",time()+$timeout));

который выполнится через $timeout тогда и вычислять время отключения не надо - просто событие отключения вызовется сразу через 63 минуты
За это сообщение автора itank поблагодарили (всего 2):
gagarin74 (Пт май 08, 2015 9:55 am) • msw (Пн мар 27, 2017 9:09 pm)
Рейтинг: 2.33%
lysyy
Сообщения: 113
Зарегистрирован: Вт июн 09, 2015 9:41 pm
Откуда: Moscow
Благодарил (а): 15 раз
Поблагодарили: 9 раз

Re: умный таймер -подскажите алгоритм

Сообщение lysyy » Вс янв 03, 2016 4:52 pm

У меня таймер такой

Управление устройством в методе power01.ch8status

Метод объекта onActivity , запускается перед методом класса, что бы задержка была меньше. 60 - секунды, через которое вырубится.

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

sg("power01.ch8status","1");
// сбрасываем таймер выключения
ClearTimeOut("TurnOffTheLight");
// ставим новый таймер
SetTimeOut("TurnOffTheLight","sg('power01.ch8status','0');",60);
Ответить