From 2e6b2fe5cbb80f23c96671a1523a619be8d1798a Mon Sep 17 00:00:00 2001 From: daniel Tartavel Date: Sun, 2 Jan 2022 13:47:41 +0100 Subject: [PATCH] added distants notifications and devices availability warning --- class/availibility.php | 31 ++++++++++++++++++ events.php | 10 +++--- hooks/notifiers/notificationfreemobile.php | 38 +++++++++++++++++++++- moha.php | 1 + mqtt_functions.php | 11 ------- utils.php | 25 ++++++++++++++ 6 files changed, 99 insertions(+), 17 deletions(-) create mode 100644 class/availibility.php diff --git a/class/availibility.php b/class/availibility.php new file mode 100644 index 0000000..fda3ff0 --- /dev/null +++ b/class/availibility.php @@ -0,0 +1,31 @@ + " . $value . EOL; + } +} + +$hooks["availability"] = new availability; +?> + + + +?> diff --git a/events.php b/events.php index a7e8a90..61aec1d 100644 --- a/events.php +++ b/events.php @@ -33,7 +33,7 @@ function checkEvents() publish($event->device, array($event->param => $event->value), "set", $key); if (($event->dateTimeEvent->add($event->recurrenceInterval)) === false) { - logger(LOG_ERROR, __("Error in event recurrence. event: ") . $key); + logger(ERROR, __("Error in event recurrence. event: ") . $key); } } } @@ -88,7 +88,7 @@ function setRecurrentEvent(&$device, $param, $value, $startDatetime, $stopDateti $event->dateTimeEvent = $event->startDatetime; if (($event->dateTimeEvent->add($event->recurrenceInterval)) === false) { - logger(LOG_ERROR, __("Error in event recurrence. event: ") . $key); + logger(ERROR, __("Error in event recurrence. event: ") . $key); } } @@ -124,11 +124,11 @@ function setDelay(&$device, $delay, $unit="second", $param, $value, $replace=fal } if (empty($s)) { - logger(LOG_ERROR, __("setDelay error: unit is empty")); + logger(ERROR, __("setDelay error: unit is empty")); } if (($datetime->add(new DateInterval('PT'. $delay . $s))) === false) { - logger(LOG_ERROR, __("setDelay error: datetime->add")); + logger(ERROR, __("setDelay error: datetime->add")); } print_r($datetime); if ($replace) @@ -169,7 +169,7 @@ function deleteEvent($eventKey) { global $events; unset ($events[$eventKey]); - logger(LOG_INFO, __("delete event ") . $eventKey); + logger(INFO, __("delete event ") . $eventKey); } diff --git a/hooks/notifiers/notificationfreemobile.php b/hooks/notifiers/notificationfreemobile.php index d676a3d..0f5b8dd 100644 --- a/hooks/notifiers/notificationfreemobile.php +++ b/hooks/notifiers/notificationfreemobile.php @@ -1,2 +1,38 @@ active = true; + $notificationMethods[$name]->level = ALL; + } + + function send($message) + { + if ($this->active == true) + { + $ch = curl_init(); + // set url + curl_setopt($ch, CURLOPT_URL, $this->url . $message); + + //return the transfer as a string + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + + // $output contains the output string + logger(INFO, curl_exec($ch)); + + // close curl resource to free up system resources + curl_close($ch); + return true; + } + return false; + } +} + +$notificationMethods["freemobile"] = new notificationMethod(); + +?> diff --git a/moha.php b/moha.php index 888f739..b970181 100644 --- a/moha.php +++ b/moha.php @@ -53,6 +53,7 @@ define( "WARNING", $client->LOG_WARNING); define( "ERROR", $client->LOG_ERR); define( "ALL", DEBUG | INFO | NOTICE | WARNING | ERROR); $logLevel = DEBUG; +$notificationLevel = WARNING | ERROR; // defining callback functions $client->onConnect('connectResponse'); diff --git a/mqtt_functions.php b/mqtt_functions.php index 732b20e..96f8df7 100644 --- a/mqtt_functions.php +++ b/mqtt_functions.php @@ -162,15 +162,4 @@ function publishResponse($mid) $mids[$mid] = true; } } - -function logger($level, $log) -{ - global $logFh, $logLevel; - if ( $level >= $logLevel) - { - fwrite($logFh, "$level : $log" . EOL); - print ("$level : $log" . EOL); - } -} - ?> diff --git a/utils.php b/utils.php index 836ef4c..aa82d7c 100644 --- a/utils.php +++ b/utils.php @@ -10,5 +10,30 @@ function signalHandler($signal) endMoha(); } +function notify($message) +{ + foreach($notificationMethods as $value) + { + $result |= $value->send($message); + } + return $result; +} + +function logger($level, $log) +{ + global $logFh, $logLevel; + if ( $level >= $logLevel) + { + fwrite($logFh, "$level : $log" . EOL); + print ("$level : $log" . EOL); + } + if ($level >= $notificationLevel) + { + if(notify($message) == true) + { + logger(INFO, __("Notification not sent")); + } + } +} ?>