1
0
moha/hooks/scripts/availability.php
2022-08-27 00:02:24 +02:00

68 lines
1.5 KiB
PHP

<?php
class availability extends hook
{
public $hookname = "availability";
public $active = true;
// by default all devices are listening for availability
protected $devicelist = array();
function init()
{
global $indexDevices;
$this->iterate();
}
protected function iterate()
{
global $indexDevices;
foreach ($indexDevices as $ieeeAddress => $value)
{
$deviceList[] = array( $ieeeAddress => "availability");
}
$this->installHooksFunction($indexDevices);
}
function installHooks(&$indexDevices)
{
static $indexDevicesSize;
$tmp = count($indexDevices);
if ($tmp != $indexDevicesSize)
{
$this->iterate();
$indexDevicesSize = $tmp;
}
return false;
}
// callback fonction. Is called with these 3 parameters
// $device -> calling device
// $property -> parameter passed by mqtt
// $value -> value of the parameter
public function callBack($device, $property, $value)
{
switch($property)
{
case "availability": // theorically can't be other, but ....
if ($device->properties["availability"]["value]"] != $value)
{
//echo "==========>>>>>> Availability $value" . EOL;
//if (!empty($device->availability))
//{[ Torrent911.com]
$log = ALERT;
//}else
//{
// $log = INFO;
//}
//$device->availability = $value;
logger($log, sprintf(_("Device: %s/%s is %s"), $device->topic, $device->friendlyName, bool2string($value)), __FILE__ . ":" . __LINE__, $device);
}
break;
}
}
}
$hooks["availability"] = new availability();
?>