Добрый день.Хотелось бы сделать выключение розетки по таймеру.
С электрической схемой проблем нет.
Нужна консультация по 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. Но это как то не красиво. Может есть более универсальный способ?
умный таймер -подскажите алгоритм
Модератор: immortal
-
- Сообщения: 9
- Зарегистрирован: Вт мар 17, 2015 6:45 pm
- Благодарил (а): 1 раз
- Поблагодарили: 2 раза
Re: умный таймер -подскажите алгоритм
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:
Result:
01:27:00
а можно в запуске метода установки таймера сразу вмантулить
SetTimeOut("title","commands", $timeout); -- $timeout в секундах (аналог AddScheduledJob("title","commands",time()+$timeout));
который выполнится через $timeout тогда и вычислять время отключения не надо - просто событие отключения вызовется сразу через 63 минуты
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;
01:27:00
а можно в запуске метода установки таймера сразу вмантулить
SetTimeOut("title","commands", $timeout); -- $timeout в секундах (аналог AddScheduledJob("title","commands",time()+$timeout));
который выполнится через $timeout тогда и вычислять время отключения не надо - просто событие отключения вызовется сразу через 63 минуты
- Рейтинг: 2.33%
-
- Сообщения: 113
- Зарегистрирован: Вт июн 09, 2015 9:41 pm
- Откуда: Moscow
- Благодарил (а): 15 раз
- Поблагодарили: 9 раз
Re: умный таймер -подскажите алгоритм
У меня таймер такой
Управление устройством в методе power01.ch8status
Метод объекта onActivity , запускается перед методом класса, что бы задержка была меньше. 60 - секунды, через которое вырубится.
Управление устройством в методе power01.ch8status
Метод объекта onActivity , запускается перед методом класса, что бы задержка была меньше. 60 - секунды, через которое вырубится.
Код: Выделить всё
sg("power01.ch8status","1");
// сбрасываем таймер выключения
ClearTimeOut("TurnOffTheLight");
// ставим новый таймер
SetTimeOut("TurnOffTheLight","sg('power01.ch8status','0');",60);