hookName); //$this->installHooks(); foreach ($this->devicelist as $ieeeAddress => $property) { $this->propertyInitialized[$ieeeAddress][$property] = false; } if (method_exists($this, "init")) { $this->init(); } } function installHooks(&$indexDevices) { global $devices, $devicesRequest; static $requestflag = 0; $result = true; // assigne the function to the sensors devices if ($this->active === true) { foreach ($this->devicelist as $ieeeAddress => $property) { if (array_key_exists($ieeeAddress, $indexDevices)) { logger(DEBUG, _("Device: ") . $ieeeAddress, __FILE__ . ":" . __LINE__); if (!array_key_exists($this->hookName, $indexDevices[$ieeeAddress]->properties[$property]["functions"])) { if (array_key_exists($property, $indexDevices[$ieeeAddress]->properties)) { logger(DEBUG, _("Trying to store callback"), __FILE__ . ":" . __LINE__); if (array_key_exists("functions", $indexDevices[$ieeeAddress]->properties[$property])) { $indexDevices[$ieeeAddress]->properties[$property]["functions"][$this->hookName] = array($this,"callback"); logger(DEBUG, sprintf(_("Property '%s' of %s is initialized with callback"), $property, $indexDevices[$ieeeAddress]->friendlyName), __FILE__ . ":" . __LINE__); }else { logger(WARNING, sprintf(_("Hook %s can not initialize Property '%s' of device %s"), $this->hookName, $property, $ieeeAddress), __FILE__ . ":" . __LINE__); $result = false; } }else { logger(WARNING, sprintf(_("Hook %s can not initialize Property '%s' of device %s : property does not exists"), $this->hookName, $property, $indexDevices[$ieeeAddress]->friendlyName), __FILE__ . ":" . __LINE__); $result = false; } }else { logger(DEBUG, _("Callback already installed"), __FILE__ . ":" . __LINE__); } }else { logger(ERROR, $ieeeAddress . (" does not exists"), __FILE__ . ":" . __LINE__); if ($devicesRequest === false) { publish("zigbee2mqtt", array("bridge/devices" => ""), "get"); $devicesRequest = true; }elseif ($requestflag++ > 30) { $requestflag = 0; } $result = false; mkIndexes(); } } //echo "result => "; var_dump($result); if ($result === true) { $this->initialized = true; logger(INFO, $this->hookName . _(" initialized"), __FILE__ . ":" . __LINE__); //var_dump($this); } }/*else { $this->initialized = true; logger(INFO, $this->hookName . _("hook is disabled"), __FILE__ . ":" . __LINE__); }*/ //print(var_export($indexDevices[$ieeeAddress],true)); //storeDB($devices,"debug.devices"); return $result; } } ?>