diff --git a/class/db.php b/class/db.php index 512bf6d..c4cc06e 100644 --- a/class/db.php +++ b/class/db.php @@ -40,60 +40,68 @@ class db extends mysqli global $mohaDB, $properties2log, $testMode; $precision = 0; //echo "############## logProperty ################\nproperty => " . $propertyTree .EOL; - if (array_key_exists($property, $properties2log)) + //echo "logging in database"; + //var_dump($device); + $ieeeAddress = $device->ieeeAddress; + //print_r($ieeeAddress); + $query = "INSERT INTO logs (device, property, value) VALUES('" . $this->protect($ieeeAddress) . "', '" . $this->protect($property) . "', '" . $this->protect(bool2string($value)) . "')"; + //echo $query . EOL; + if (is_numeric($value) and !empty($properties2log[$property])) { - //echo "logging in database"; - //var_dump($device); - $ieeeAddress = $device->ieeeAddress; - //print_r($ieeeAddress); - $query = "INSERT INTO logs (device, property, value) VALUES('" . $this->protect($ieeeAddress) . "', '" . $this->protect($property) . "', '" . $this->protect(bool2string($value)) . "')"; - //echo $query . EOL; - if (is_numeric($value) and !empty($properties2log[$property])) + // calculate a min/max value for storing data + $r = $properties2log[$property]; + if (is_callable($r)) { - // calculate a min/max value for storing data - $minMax = $properties2log[$property]; - if (is_callable($minMax)) - { - $minMax = $minMax($value); - } - var_dump($value) . EOL; - var_dump($minMax) . EOL; - var_dump($oldValue) . EOL; - if ( !is_numeric($oldValue)) $oldValue = 0; - //echo "minMax = " .$minMax . EOL; - //echo "oldValue = " . $oldValue . EOL; - //echo "Value = " . $value . EOL; - if ($value >= $oldValue - $minMax and $value <= $oldValue + $minMax) - { - //echo "========>>>>>>>>>not changed" . EOL; - return true; - } - } - if ($testMode) - { - logger(INFO, _("Test mode on: not storing in DB "), __FILE__ . ":" . __LINE__); + $minMax = $r($value); }else { - if(!$this->result = $this->query($query)) - { - logger(ERROR, _("mysql query errror: ") . $this->error, __FILE__ . ":" . __LINE__); - } + $minMax = $r; + } + logger(DEBUG, _("minMax = " . $minMax), __FILE__ . ":" . __LINE__); + var_dump($value) . EOL; + var_dump($minMax) . EOL; + var_dump($oldValue) . EOL; + if ( !is_numeric($oldValue)) $oldValue = 0; + //echo "minMax = " .$minMax . EOL; + //echo "oldValue = " . $oldValue . EOL; + //echo "Value = " . $value . EOL; + if ($value >= $oldValue - $minMax and $value <= $oldValue + $minMax) + { + //echo "========>>>>>>>>>not changed" . EOL; + return true; } - logger(INFO, sprintf(_("New value (%s) of property: '%s' of device: %s stored in database"), bool2string($value), $property, $device->friendlyName), __FILE__ . ":" . __LINE__); } + if ($testMode) + { + logger(INFO, _("Test mode on: not storing in DB "), __FILE__ . ":" . __LINE__); + }else + { + if(!$this->result = $this->query($query)) + { + logger(ERROR, _("mysql query errror: ") . $this->error, __FILE__ . ":" . __LINE__); + } + } + logger(INFO, sprintf(_("New value (%s) of property: '%s' of device: %s stored in database"), bool2string($value), $property, $device->friendlyName), __FILE__ . ":" . __LINE__); } function moyenne($deviceObject, $property, $time) { $query = "SELECT AVG(value) as value FROM logs WHERE device='" . $deviceObject->ieeeAddress . "' AND property='" . $property . "' AND TIMEDIFF(NOW(), date) < '00:" . $time . "'"; + logger(DEBUG, _("query is: ") . $query, __FILE__ . ":" . __LINE__); if(!$this->result = $this->query($query)) { logger(ERROR, _("mysql query errror: ") . $this->error, __FILE__ . ":" . __LINE__); + return 1; + }else + { + $value = $this->result->fetch_array(MYSQLI_NUM); + //var_dump($value); + logger(DEBUG, _("result is: ") . print_r($value, true), __FILE__ . ":" . __LINE__); + return $value[0]; } - $value = $this->result->fetch_array(MYSQLI_NUM); - //var_dump($value); - return $value[0]; + + } } diff --git a/class/hook_class.php b/class/hook_class.php index 9838a70..841e3d0 100644 --- a/class/hook_class.php +++ b/class/hook_class.php @@ -2,7 +2,7 @@ class hook { public $hookName = ""; - public $active = true; + public $active; public $initialized = false; protected $devicelist; protected $propertyInitialized; diff --git a/config/properties2log.php b/config/properties2log.php index baaa85a..ba159d4 100644 --- a/config/properties2log.php +++ b/config/properties2log.php @@ -26,8 +26,8 @@ $properties2log = array( "dewptc" => 0.5, "windchillc" => 0.5, "winddir" => 40, - "windspeedkmh" => 10, - "windgustkmh" => 10, + "windspeedkmh" => 5, + "windgustkmh" => 5, "rainin" => 0.5, //"dailyrainin" => null, //"weeklyrainin" => null, diff --git a/db_functions.php b/db_functions.php index 3a85bf3..954d866 100644 --- a/db_functions.php +++ b/db_functions.php @@ -275,12 +275,16 @@ function getDevicesValues($topic) function changeValue(&$property, $value, &$parentDevice, $propertyTree, $key) { - global $mohaDB; + global $mohaDB, $properties2log; //$changed[$fn]["key"] = $key; //$changed[$fn]["value"] = $value; - logger(INFO, sprintf(_("Logging Device property %s, %s"), $propertyTree . $key, bool2string($value)), __FILE__ . ":" . __LINE__); - $mohaDB->logProperty($parentDevice, $key, $value, $property["value"]); - logger(DEBUG, sprintf(_("old value was %s, new is %s" ), bool2string($property["value"]), bool2string($value)), __FILE__ . ":" . __LINE__); + + if (array_key_exists($key, $properties2log)) + { + logger(INFO, sprintf(_("Logging Device property %s, %s"), $propertyTree . $key, bool2string($value)), __FILE__ . ":" . __LINE__); + $mohaDB->logProperty($parentDevice, $key, $value, $property["value"]); + logger(DEBUG, sprintf(_("old value was %s, new is %s" ), bool2string($property["value"]), bool2string($value)), __FILE__ . ":" . __LINE__); + } $property["value"] = $value; if (!empty($property["functions"])) { @@ -289,7 +293,15 @@ function changeValue(&$property, $value, &$parentDevice, $propertyTree, $key) { try { - $function($parentDevice, $key, $value); + logger(INFO, print_r($function, true), __FILE__ . ":" . __LINE__); + if ( $function[0]->active === true ) + { + $function($parentDevice, $key, $value); + }else + { + logger(INFO, $function . _(" is disabled"), __FILE__ . ":" . __LINE__ ); + } + }catch (Exception $e) { $s = 'Exception reçue : ' . $e->getMessage(); diff --git a/events.db b/events.db new file mode 100644 index 0000000..c856afc --- /dev/null +++ b/events.db @@ -0,0 +1 @@ +a:0:{} \ No newline at end of file diff --git a/hooks/notifiers/notificationfreemobile.php b/hooks/notifiers/notificationfreemobile.php index 50ddc25..58e6fb8 100644 --- a/hooks/notifiers/notificationfreemobile.php +++ b/hooks/notifiers/notificationfreemobile.php @@ -18,7 +18,7 @@ class notificationFreemobile { global $curlErr; $result = false; - if ($this->active == true) + if ($this->active === true) { $ch = curl_init(); // set url diff --git a/hooks/scripts/rdc_store.php b/hooks/scripts/rdc_store.php index 8935a4d..2f7b55c 100644 --- a/hooks/scripts/rdc_store.php +++ b/hooks/scripts/rdc_store.php @@ -3,7 +3,7 @@ class rdc_store extends hook { public $hookName = "rdc_store"; - public $active = true; //enable/disable hook (true => enabled) + public $active = false; //enable/disable hook (true => enabled) public $timer = 0; public $luminance_min = 60; public $luminance_max = 3000; @@ -74,7 +74,7 @@ class rdc_store extends hook $rainTmp = $indexDevices[METEO]->properties["rainin"]["value"]; $rain = $rainTmp - $rainS; $rainS = $rainTmp; - logger(DEBUG, "rain=" . var_dump($rain), __FILE__ . ":" . __LINE__); + logger(DEBUG, "rain=" . $rain, __FILE__ . ":" . __LINE__); } if (array_key_exists("windgustkmh", $indexDevices[METEO]->properties)) { @@ -82,7 +82,7 @@ class rdc_store extends hook { logger(ALERT, "Vent fort :" . $indexDevices[METEO]->properties["windgustkmh"]["value"], __FILE__ . ":" . __LINE__); } - $rafale = $mohaDB->moyenne($indexDevices[METEO], "windgustkmh", 7); + $rafale = $indexDevices[METEO]->properties["windgustkmh"]["value"]; //$mohaDB->moyenne($indexDevices[METEO], "windgustkmh", 6); logger(DEBUG, "rafale=" . $rafale, __FILE__ . ":" . __LINE__); } if (array_key_exists("solarradiation", $indexDevices[METEO]->properties)) @@ -92,7 +92,7 @@ class rdc_store extends hook } } logger(DEBUG, sprintf(_("property=%s, value=%s"), $property, $value), __FILE__ . ":" . __LINE__); - if ($rafale >= 60 or $rain != 0) + if ($rafale >= 50 or $rain != 0) { $this->maxLevel = 0; logger(DEBUG, sprintf("rafale = %s and rain = %s",$rafale, $rain), __FILE__ . ":" . __LINE__); @@ -100,7 +100,7 @@ class rdc_store extends hook return 0; }elseif ($rafale != 0) { - $this->maxLevel = ($r = 100 - round(($rafale-10)/5, 0, PHP_ROUND_HALF_UP)*20)<0 ? 0 : $r; + $this->maxLevel = ($r = 100 - round($rafale/5, 0, PHP_ROUND_HALF_UP)*10)<0 ? 0 : $r; //$this->maxLevel = 100 / $rafale; logger(DEBUG, "rafale=" . $rafale, __FILE__ . ":" . __LINE__); } @@ -110,7 +110,7 @@ class rdc_store extends hook { case "illuminance_lux": logger(DEBUG, "CASE: illuminance_lux:" . $value, __FILE__ . ":" . __LINE__); - if ($exterieur_lux > 30000) + if ($exterieur_lux > 30000 or $salon_lux >600) { logger(DEBUG, "exterieur_lux > 30000", __FILE__ . ":" . __LINE__); if ($this->maxLevel != 0 and $salon_lux > 100) @@ -126,7 +126,7 @@ class rdc_store extends hook $this->set($store2level); } } - }elseif ($exterieur_lux < 15000 and $salon_lux < 110) + }elseif ($exterieur_lux < 12000 and $salon_lux < 150) { logger(DEBUG, "exterieur_lux < 15000", __FILE__ . ":" . __LINE__); $this->close("Luminosité faible"); @@ -140,19 +140,14 @@ class rdc_store extends hook logger(DEBUG, "CASE: windgustkmh:" . $rafale, __FILE__ . ":" . __LINE__); //case "windspeedkmh": // logger(DEBUG, "CASE: windspeedkmh:" . $value, __FILE__ . ":" . __LINE__); - - logger(DEBUG, "maxLevel = " . $this->maxLevel . ' result => $r = ' . $r, __FILE__ . ":" . __LINE__); - if ($this->storeLevel > $this->maxLevel) - { - $this->set($this->maxLevel); - } break; default: } - /*if ($store2level <= $this->storeLevel) + logger(DEBUG, "maxLevel = " . $this->maxLevel . ' result => $r = ' . $r, __FILE__ . ":" . __LINE__); + if ($this->storeLevel > $this->maxLevel) { - $this->set($store2level); - }*/ + $this->set($this->maxLevel); + } } private function set ($level)