Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static function CalculateWaterConsumption($_cmd_id, $_startTime, $_endTime) {
- $cmd = cmd::byId(trim(str_replace('#', '', $_cmd_id)));
- if (!is_object($cmd) || $cmd->getIsHistorized() == 0) {
- return 'Not an object or not historized';
- }
- $_cmd_id = trim(str_replace('#', '', $_cmd_id));
- $_startTime = date('Y-m-d H:i:s', strtotime(scenarioExpression::setTags($_startTime)));
- $_endTime = date('Y-m-d H:i:s', strtotime(scenarioExpression::setTags($_endTime)));
- $values = array(
- 'cmd_id' => $_cmd_id,
- 'startTime' => $_startTime,
- 'endTime' => $_endTime,
- );
- $sql = 'SELECT value, datetime
- FROM (
- SELECT *
- FROM history
- WHERE cmd_id=:cmd_id
- AND `datetime`>=:startTime
- AND `datetime`<=:endTime
- UNION ALL
- SELECT *
- FROM historyArch
- WHERE cmd_id=:cmd_id
- AND `datetime`>=:startTime
- AND `datetime`<=:endTime
- ) as dt
- ORDER BY `datetime` ASC';
- $result = DB::Prepare($sql, $values, DB::FETCH_TYPE_ALL);
- if (!is_array($result)) {
- $result = array();
- }
- $i = 0;
- $conso = 0;
- foreach ($result as $key => &$value) {
- if ($i == 0) {
- $valuebefore = $value['value'];
- }
- if ($value['value'] >= $valuebefore) {
- $conso += $value['value'] - $valuebefore;
- $valuebefore = $value['value'];
- }
- else {
- // parfois, pour une raison illogique, des données erronnées arrivent en retard. Donc, si la chute en consommation est mininime,
- // je considère que c'est une donnée erronée et je n'en tiens pas compte. Si la chute est de plus de 10l, je suppose que c'est
- // une coupure de courant et j'en tiens compte
- if ($valuebefore - $value['value'] > 10) {
- $conso += $value['value'];
- $valuebefore = $value['value'];
- }
- }
- $i++;
- }
- return $conso;
- }
Add Comment
Please, Sign In to add comment