added notify command to webserver
This commit is contained in:
parent
719a45fa4e
commit
4b226c1d0a
@ -73,6 +73,53 @@ class event
|
||||
public $exceptionInterval; // array of object ranges
|
||||
}
|
||||
|
||||
class watch
|
||||
{
|
||||
public $topic;
|
||||
public $property;
|
||||
public $device;
|
||||
public $function;
|
||||
private $conditions = array(
|
||||
"<", ">", "==", ">=", "<="
|
||||
);
|
||||
|
||||
public function __construct($topic, $fn, $property, $condition, $value)
|
||||
{
|
||||
logger(DEBUG, _("New Notify object"), __FILE__ . ":" . __LINE__);
|
||||
if (($this->device = getDevice($topic, $fn)) === false)
|
||||
{
|
||||
$this->topic = $topic;
|
||||
if (array_key_exist($property, $this->device))
|
||||
{
|
||||
$this->property = $property;
|
||||
if ( !is_numeric($value))
|
||||
{
|
||||
logger(ERROR, _("Value is not numeric"), __FILE__ . ":" . __LINE__ );
|
||||
return false;
|
||||
}
|
||||
if (array_search($condition, $conditions))
|
||||
{
|
||||
$this->function = '$arg ' . $condition . " " . $value;
|
||||
logger(DEBUG, _("Test function is ") . $this->function);
|
||||
}else
|
||||
{
|
||||
logger(ERROR, _("Condition is not one of the permitted once"), __FILE__ . ":" . __LINE__ );
|
||||
return false;
|
||||
}
|
||||
}else
|
||||
{
|
||||
logger(ERROR, _("Property do not exists"), __FILE__ . ":" . __LINE__ );
|
||||
return false;
|
||||
}
|
||||
}else
|
||||
{
|
||||
logger(ERROR, _("Device do not exists"), __FILE__ . ":" . __LINE__ );
|
||||
return false;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
class interval
|
||||
{
|
||||
public $startDate;
|
||||
|
@ -125,7 +125,7 @@ function changeDevice($topic, $fn, &$device, $payloadArray)
|
||||
iterateDevice($topic, $fn, $device, $device, $payloadArray);
|
||||
}else
|
||||
{
|
||||
logger(ERROR, _("payloadArray is empty!"), __FILE__ . ":" . __LINE__);
|
||||
logger(ERROR, $fn . _(" => payloadArray is empty!"), __FILE__ . ":" . __LINE__);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ class rdc_sdb_eclairage extends hook
|
||||
// devicelist[$ieeAddress][0] => property to watch
|
||||
// devicelist[$ieeAddress][1] => initialized = true
|
||||
protected $devicelist = array(
|
||||
RDC_SDB_DOUCHE_MVMT => array("occupancy", false),
|
||||
//RDC_SDB_DOUCHE_MVMT => array("occupancy", false),
|
||||
RDC_SDB_PLAFOND_MVMT => array("occupancy", false),
|
||||
RDC_SDB_MVMT => array("occupancy", false),
|
||||
RDC_SDB_WC_ECLAIRAGE => array("state_l1", false)
|
||||
|
1
moha.php
1
moha.php
@ -23,6 +23,7 @@ $hooksList = array(); // list of hooks to be included
|
||||
$hooks = array(); // array of hooks
|
||||
$notificationMethods = array(); // array of notification methods objects
|
||||
$events = array(); // list of event objects
|
||||
$monitored = array(); // list of device to watch
|
||||
$changed = array(); // list of changed devices
|
||||
$dbInit = 0; // flag to indicate that devices db is initializedl
|
||||
$connected = false; // connected to MQTT server
|
||||
|
26
utils.php
26
utils.php
@ -41,6 +41,32 @@ function mktopic($device)
|
||||
return $device->topic . "/" . $device->friendlyName;
|
||||
}
|
||||
|
||||
function getDevice($topic, $fn)
|
||||
{
|
||||
global $topics, $devices;
|
||||
if (array_key_exists($topic, $topics))
|
||||
{
|
||||
$var = $devices[$topic];
|
||||
$path = explode("/", $fn);
|
||||
foreach($path as $tmp)
|
||||
{
|
||||
if (array_key_exists($tmp, $var))
|
||||
{
|
||||
$var = $var[$tmp];
|
||||
}else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
return $var;
|
||||
}else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getValue($ieeeAddress, $property)
|
||||
{
|
||||
global $indexDevices;
|
||||
|
11
watch.php
Normal file
11
watch.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
function watch($topic, $fn, $property, $function)
|
||||
{
|
||||
global $monitored;
|
||||
$monitored[] = new watch($topic, $fn, $property, $function);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
@ -72,12 +72,7 @@ function askWebServer($read)
|
||||
{
|
||||
if(!empty($topic))
|
||||
{
|
||||
$var = $var[$topic];
|
||||
$path = explode("/", $argList["fn"]);
|
||||
foreach($path as $tmp)
|
||||
{
|
||||
$var = $var[$tmp];
|
||||
}
|
||||
$var = getDevice($topic, $argList["fn"]);
|
||||
}else
|
||||
{
|
||||
$str = _("topic is not defining: add &topic=\nThese topics are availables: ");
|
||||
@ -103,6 +98,15 @@ function askWebServer($read)
|
||||
}
|
||||
fwrite($spawn, $response);
|
||||
break;
|
||||
case "notify":
|
||||
if (!array_key_exists("topic", $argList) or !array_key_exists("fn", $argList) or !array_key_exists("property", $argList) or !array_key_exists("condition", $argList) or !array_key_exists("value", $argList))
|
||||
{
|
||||
fwrite($spawn, _("Error: With 'notify' command, you need 4 parameters: topic, fn, property, condition, value"));
|
||||
}else
|
||||
{
|
||||
$monitored[] = new watch($argList["topic"], $argList["fn"], $argList["property"], $argList["condition"], $argList["value"]);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
logger(DEBUG, _("unknown command"), __FILE__ . ":" . __LINE__);
|
||||
fwrite($spawn, _("unknown command"));
|
||||
|
Loading…
Reference in New Issue
Block a user