active === true) { foreach ($this->devicelist as $ieeeAddress) { $indexDevices[$ieeeAddress]->functions[] = array($this,"callback"); } } } // callback fonction. Is called with these 4 parameters public function callBack(&$device, $param, $value) { global $devices, $indexDevices; switch($param) { case "occupancy": if ($value == 1 and $indexDevices["0x04cf8cdf3c78aff0"]->illuminance_lux <= $this->luminance_min) { $this->send("ON"); } break; case "contact": if ($value == false and $indexDevices["0x04cf8cdf3c78aff0"]->illuminance_lux <= $this->luminance_min) { $this->send("ON"); } break; case "illuminance_lux": if ($value >= $this->luminance_max) $this->send("OFF"); break; } logger (INFO, sprintf(_("%s: notification received from MQTT from %s => parameter: %s value: %s"), $this->hookName, $device->friendlyName, $param, $value)); } private function send($state) { global $devices, $indexDevices; $msg = array("state" => $state); $device = & $indexDevices["0x588e81fffe343e8f"]; logger(INFO, sprintf(_("publishing message: %s to %s"), $msg, $device->friendlyName)); $device->payload = $msg; $device->set(null); setDelay($device, $this->delay, $this->timeUnit, "state", "OFF", true); } } $hooks["rdc_salon_eclairage"] = new rdc_salon_eclairage(); ?>