Счётчик проветривания помещения.

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

Модератор: immortal

Ответить
oikworld
Сообщения: 5
Зарегистрирован: Пн мар 23, 2020 7:04 pm
Благодарил (а): 5 раз
Поблагодарили: 3 раза

Счётчик проветривания помещения.

Сообщение oikworld » Чт дек 02, 2021 3:34 pm

Всем привет!
Понадобилась система проверки проветривания дома. Так как на всех окнах стоят датчики открытия-закрытия, пошёл путем записи времени в открытом состоянии окна. Написал метод в датчиках открытия, который записывает время последнего открытия я и когда окно снова закроется, записывает в счётчик ПУ новое свойство добавляя старое.
Далее добавил в этот метод обновление счётчика на тот случай если окно оставалось закрытым или открытым более чем час, чтобы счётчик обновлялся.
Всё вроде бы работает. Просто хотел чтобы вы посмотрели насколько грамотно написано или лучше упростить?

Этот метод срабатывает Когда откроется или закроется окно:

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

$status;
$TimeOpen;
$TimeClose;
$TotalOpen;

$status = $this->getProperty('status');
if ($status == 0) {
  $this->setProperty('TimeOpen', time());
} else {
  $TimeOpen = $this->getProperty('TimeOpen');
  $TimeClose = time();
  $TotalOpen = gg('Counter05.value');
  $TotalOpen = ($TimeClose - $TimeOpen) /60 + $TotalOpen;
  $TotalOpen = round($TotalOpen, 1);
  sg('Counter05.value', $TotalOpen);   //soedinenie s s4et4ikom 4istij vozdux
}
Ниже метод обновления счётчика вызывается один раз в час:

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

$status;
$TimeOpen;
$TimeClose;
$TotalOpen;

$status = $this->getProperty('status');
if ($status == 0) {
  $TimeOpen = $this->getProperty('TimeOpen');
  $TimeClose = time();
  $TotalOpen = gg('Counter05.value');
  $TotalOpen = ($TimeClose - $TimeOpen) /60 + $TotalOpen;
  $TotalOpen = round($TotalOpen, 1);
  sg('Counter05.value', $TotalOpen);   //soedinenie s s4et4ikom 4istij vozdux
  $this->setProperty('TimeOpen', time());
}  else {

  $refresh = gg('Counter05.value'); 

  sg('Counter05.value', $refresh); 

}
Ответить