Страница 1 из 1

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

Добавлено: Чт май 07, 2015 12:08 pm
gagarin74
Добрый день.Хотелось бы сделать выключение розетки по таймеру.
С электрической схемой проблем нет.
Нужна консультация по 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. Но это как то не красиво. Может есть более универсальный способ?

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

Добавлено: Пт май 08, 2015 7:36 am
itank
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 минуты

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

Добавлено: Вс янв 03, 2016 4:52 pm
lysyy
У меня таймер такой

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

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

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

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