Guest User

Untitled

a guest
Jan 1st, 2022
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. public static function CalculateWaterConsumption($_cmd_id, $_startTime, $_endTime) {
  2. $cmd = cmd::byId(trim(str_replace('#', '', $_cmd_id)));
  3. if (!is_object($cmd) || $cmd->getIsHistorized() == 0) {
  4. return 'Not an object or not historized';
  5. }
  6.  
  7. $_cmd_id = trim(str_replace('#', '', $_cmd_id));
  8. $_startTime = date('Y-m-d H:i:s', strtotime(scenarioExpression::setTags($_startTime)));
  9. $_endTime = date('Y-m-d H:i:s', strtotime(scenarioExpression::setTags($_endTime)));
  10.  
  11. $values = array(
  12. 'cmd_id' => $_cmd_id,
  13. 'startTime' => $_startTime,
  14. 'endTime' => $_endTime,
  15. );
  16. $sql = 'SELECT value, datetime
  17. FROM (
  18. SELECT *
  19. FROM history
  20. WHERE cmd_id=:cmd_id
  21. AND `datetime`>=:startTime
  22. AND `datetime`<=:endTime
  23. UNION ALL
  24. SELECT *
  25. FROM historyArch
  26. WHERE cmd_id=:cmd_id
  27. AND `datetime`>=:startTime
  28. AND `datetime`<=:endTime
  29. ) as dt
  30. ORDER BY `datetime` ASC';
  31. $result = DB::Prepare($sql, $values, DB::FETCH_TYPE_ALL);
  32. if (!is_array($result)) {
  33. $result = array();
  34. }
  35.  
  36. $i = 0;
  37. $conso = 0;
  38. foreach ($result as $key => &$value) {
  39. if ($i == 0) {
  40. $valuebefore = $value['value'];
  41. }
  42. if ($value['value'] >= $valuebefore) {
  43. $conso += $value['value'] - $valuebefore;
  44. $valuebefore = $value['value'];
  45.  
  46. }
  47. else {
  48. // parfois, pour une raison illogique, des données erronnées arrivent en retard. Donc, si la chute en consommation est mininime,
  49. // 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
  50. // une coupure de courant et j'en tiens compte
  51. if ($valuebefore - $value['value'] > 10) {
  52. $conso += $value['value'];
  53. $valuebefore = $value['value'];
  54. }
  55.  
  56. }
  57. $i++;
  58. }
  59.  
  60. return $conso;
  61. }
Add Comment
Please, Sign In to add comment