Я тут немного "допилил", может кому пригодиться!
1. В классе "
MegaLight" добавляем свойства
Ваш_объект
.date_info
Ваш_объект
.previous_unix_time
Ваш_объект
.time_ON
Ваш_объект
.time_OFF
Ваш_объект
.total_time
Ваш_объект
.total_unix_time
Ваш_объект
.info - в поле "info" вписываем ручками где лампа находится к примеру "на кухне".
2. В объекте "
ThisComputer" в методе "
setRelayState" заменить на код ниже
Код: Выделить всё
$objects=getObjectsByClass("MegaLight");
foreach($objects as $obj) {
if(gg($obj['TITLE'].".ID") == $params["id"])
{
sg($obj['TITLE'].".status", $params["on"]);
sg($obj['TITLE'].".value", $params["v"]);
$now_date = date("d-m-Y H:i:s");
if(gg($obj['TITLE'].".status") == '1')
{
sg($obj['TITLE'].".time_ON", $now_date);
sg($obj['TITLE'].".on_off_auto", 'Вкл.');
say('Свет включили '.gg($obj['TITLE'].".info").' с настенного выключателя!',1);
}
else
{
sg($obj['TITLE'].".time_OFF", $now_date);
sg($obj['TITLE'].".on_off_auto", 'Откл.');
say('Свет отключили '.gg($obj['TITLE'].".info").' с настенного выключателя!',1);
$time_ON=gg($obj['TITLE'].".time_ON"); // Время предыдущего включения света
$time_OFF=gg($obj['TITLE'].".time_OFF"); // Время предыдущего отключения света
$total_unix_time =gg($obj['TITLE'].".total_unix_time"); // Общее время работы лампы
$A = strtotime($time_OFF) - strtotime($time_ON); // Расчитываем предыдущее количество секунд работы лампы
sg($obj['TITLE'].".previous_unix_time",$A); // Записываем предыдущее время работы в свойство объекта
$B = $total_unix_time + $A; // Расчитываем общее количество секунд работы лампы
sg($obj['TITLE'].".total_unix_time",$B); // Устанавливаем общее время работы
#callMethod($obj['TITLE']. ".Test_time_metod");
$diff = $B;
$years = floor($diff / (365*60*60*24));
if ($years > 0)
$years = $years."-год(а/лет/)";
else
$years = FALSE;
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
if ($months > 0)
$months = $months."-месяц(а/ев)";
else
$months = FALSE;
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
if ($days > 0)
$days = $days."-день(я/ей)";
else
$days = FALSE;
$hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24) / (60*60));
if ($hours > 0)
$hours = $hours."-час(а/ов)";
else
$hours = FALSE;
$minutes = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60);
if ($minutes > 0)
$minutes = $minutes."-минут(а/ы)";
else
$minutes = FALSE;
$seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minutes*60));
if ($seconds > 0)
$seconds = $seconds."-секунд";
else
$seconds = FALSE;
setGlobal($obj['TITLE'].".total_time",("$years$months$days$hours$minutes$seconds"));
}
break;
}
}
В результате мы получим:
Каждый раз когда будет ВКЛючен/ОТКЛючен какой либо выключатель света не важно как, с телефона, компа или с настенного выключателя у нас фиксируется время! Зная время включения и отключения легко посчитать время работы, как последнее время работы, так и общее время работы за какой-то период времени.
Порою на производстве нужно знать сколько времени проработал тот, или иной станок/агрегат. Зная заявленное время работы производителем минус фактическое отработанное время можно заранее закупить рем. комплект. Ну, а для нас просто не будет лишним знать сколько отработала лампа по факту.
Вопрос:
Как добавить в эту строку
$handle = fopen("http://192.168.18.110/state?c=set&n=52&o=1", "r");
еще одну переменную, которая ни чего не будет делать, её роль быть маркером! Маркер который будет говорить системе, что эта команда была отправлена с телефона и т.п.
Как я это вижу.
$handle = fopen("
http://192.168.18.110/state?c=set&n=52&o=1&z=t", "r");
где &z=t - маркер который означает, что команда отправлена с телефона
если &z=с - команда отправлена с компьютера
если &z=p - команда отправлена с планшета
а если этого маркера нет то, команда отправлена с настенного выключателя