[Сценарий] Когда было последнее движение.

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Ответить
PAV
Сообщения: 949
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 68 раз
Поблагодарили: 94 раза

[Сценарий] Когда было последнее движение.

Сообщение PAV » Вт ноя 21, 2017 10:40 am

У меня при срабатывании любого датчика движения в доме обновляются свойства суммарного датчика движения
Следующий код в OnNewMinute позволяет куда угодно вывести информацию, когда последний раз было движение в доме.
Очень удобно для мобильных устройств, быстро посмотреть не было ли движения.

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

$ttiimmee=time();
$sensmov=gg("sensorMovementSUM.updated");
$senstime=$ttiimmee-$sensmov;
$movhour = ( $senstime / 3600 ) % 24;
$movmin = ( $senstime / 60 ) % 60;
$timmm=($movhour.":".$movmin);
if ($senstime>86400) $timmm="Больше суток";
sg("sensorMovementSUM.lastmove", $timmm);
 
За это сообщение автора PAV поблагодарил:
AkaSoni (Пн май 13, 2019 6:07 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Когда было последнее движение

Сообщение xor » Ср ноя 29, 2017 5:39 pm

Как вариант, у меня в родительском классе датчиков движения при сработке любого обновляется системный ивент

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

    registerEvent('inhouseMovement', $details=gg($linked_room.'.title'),$expire_in=1);
В него записывается адрес и время последней сработки датчиков движения

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

EVENT              DETAILS                 ADDED
inhouseMovement     Кухня     2017-11-29 17:38:21
получим время отформатированное

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

date('Y-m-d H:i:s',registeredEventTime('inhouseMovement'))
получим детали

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

registeredEventDetails('inhouseMovement')
У кого нет последней функции

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

// Получить детали события по его имени
function registeredEventDetails($eventName) {
 $even=SQLSelectOne("SELECT * FROM events WHERE EVENT_NAME='".$eventName."'"); 
 if (is_array ($even )) {
  return $even['DETAILS'];
 } else {
  return false;
 }
}
Ответить