$ot = $params['ORIGINAL_OBJECT_TITLE'];
$new_value = (float)$params['NEW_VALUE'];
$old_value = (float)$params['OLD_VALUE'];
$this->callMethodSafe('statusUpdated');
$history_values = array(
'valueHour'=>date('Y-m-d H:00:00'),
'valueDay'=>date('Y-m-d 00:00:00'),
'valueMonth'=>date('Y-m-01 00:00:00')
);
foreach ($history_values as $history_value=>$time) {
$value_id = (int)getHistoryValueId($ot . '.' . $history_value);
if (defined('SEPARATE_HISTORY_STORAGE') && SEPARATE_HISTORY_STORAGE == 1) {
$table_name = createHistoryTable($value_id);
} else {
$table_name = 'phistory';
}
$val1 = SQLSelectOne("SELECT ID, VALUE FROM $table_name WHERE VALUE_ID='" . $value_id . "' AND ADDED>=('" . $time . "') ORDER BY ADDED LIMIT 1");
if ($val1['ID']) {
$set_value = $new_value - (float)$this->getProperty($history_value . 'old');
$set_value = round($set_value, 2);
$this->setProperty($history_value, $set_value);
SQLExec("DELETE FROM $table_name WHERE VALUE_ID=$value_id AND ADDED>=('" . $time . "')");
} else {
$this->setProperty($history_value . 'old', $old_value);
$set_value = $new_value - $old_value;
//DebMes($time . ' ' . $history_value . ' new = ' . $set_value . ' old = ' . $old_value, $ot);
$set_value = round($set_value, 2);
$this->setProperty($history_value, $set_value);
}
}
return;
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCounters_valueUpdated.php');
/* end injection of {SDevices} */
при переезде с текущей на данную реализацию (создать вручную свойства с значениями за предыдущий период (час, день, месяц)
, если счетчик новый этого не требуется
Нижний Тагил, Россия
На форуме: Logrus