RegisterPropertyString("DeviceID", ""); } public function ApplyChanges() { parent::ApplyChanges(); // mit dem Parent verbinden (MQTT Server) $this->ConnectParent("{7F8A48DD-F8AD-4F9C-8E6B-9E4D92DDB8F9}"); if ($this->ReadPropertyString("DeviceID") == "") { $this->SetStatus(104); } else { $this->SetStatus(102); } } public function ReceiveData(string $JSONString) { $data = json_decode($JSONString, true); $topic = $data["Topic"] ?? ""; $payload = $data["Payload"] ?? ""; IPS_LogMessage("Int_VGT", "RX: $topic → $payload"); $this->HandleIncoming($topic, $payload); } private function HandleIncoming(string $topic, string $payload) { $device = $this->ReadPropertyString("DeviceID"); if ($topic === "feedback-request/$device") { $resp = json_encode([ "status" => "ok", "ts" => time() ]); $this->Publish("feedback-response/$device", $resp); } if ($topic === "remote-control-response/$device") { $this->Publish("remote-control-feedback/$device", $payload); } } private function Publish(string $topic, string $payload) { $msg = [ "DataID" => "{043EA491-84DA-4DFD-B9D4-44B4E63F23D1}", "Topic" => $topic, "Payload" => $payload ]; IPS_LogMessage("Int_VGT", "TX: $topic → $payload"); $this->SendDataToParent(json_encode($msg)); } public function RequestAction($Ident, $Value) { return; // Erforderlich – auch wenn leer } } ?>