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(); ?>