diff --git a/Int_VGT/module.php b/Int_VGT/module.php index 40cf740..cc87b06 100644 --- a/Int_VGT/module.php +++ b/Int_VGT/module.php @@ -7,7 +7,6 @@ class Int_VGT extends IPSModule public function Create() { parent::Create(); - $this->RegisterPropertyString("DeviceID", ""); } @@ -15,99 +14,64 @@ class Int_VGT extends IPSModule { parent::ApplyChanges(); - // MQTT Server als Parent verbinden + // mit dem Parent verbinden (MQTT Server) $this->ConnectParent("{7F8A48DD-F8AD-4F9C-8E6B-9E4D92DDB8F9}"); if ($this->ReadPropertyString("DeviceID") == "") { - $this->SetStatus(104); // config error + $this->SetStatus(104); } else { - $this->SetStatus(102); // OK + $this->SetStatus(102); } } - /** - * Required when using RequestAction - */ - public function RequestAction($Ident, $Value) - { - // Im Moment haben wir keine Action-Variablen - // Wird aber von Symcon benötigt → also leer implementiert - return; - } - - /** - * Wird vom MQTT Server aufgerufen wenn Daten ankommen - */ public function ReceiveData(string $JSONString) { - $buffer = json_decode($JSONString, true); - if ($buffer === null) { - IPS_LogMessage("Int_VGT", "Invalid JSON received."); - return; - } + $data = json_decode($JSONString, true); - if (!isset($buffer['Topic']) || !isset($buffer['Payload'])) { - IPS_LogMessage("Int_VGT", "Missing keys in buffer."); - return; - } + $topic = $data["Topic"] ?? ""; + $payload = $data["Payload"] ?? ""; - $topic = $buffer['Topic']; - $payload = $buffer['Payload']; - - IPS_LogMessage("Int_VGT", "MQTT RX: {$topic} → {$payload}"); + IPS_LogMessage("Int_VGT", "RX: $topic → $payload"); $this->HandleIncoming($topic, $payload); } - /** - * Verarbeitet eingehende MQTT-Nachrichten - */ private function HandleIncoming(string $topic, string $payload) { - $deviceID = $this->ReadPropertyString("DeviceID"); + $device = $this->ReadPropertyString("DeviceID"); - if ($deviceID == "") { - return; // no config - } + if ($topic === "feedback-request/$device") { - // 1) Feedback Request - if ($topic === "feedback-request/{$deviceID}") { - - $response = json_encode([ + $resp = json_encode([ "status" => "ok", - "timestamp" => time() + "ts" => time() ]); - $this->Publish("feedback-response/{$deviceID}", $response); - return; + $this->Publish("feedback-response/$device", $resp); } - // 2) Remote Control Echo - if ($topic === "remote-control-response/{$deviceID}") { - - $this->Publish("remote-control-feedback/{$deviceID}", $payload); - return; + if ($topic === "remote-control-response/$device") { + $this->Publish("remote-control-feedback/$device", $payload); } } - /** - * Publisht MQTT-Daten über das Gateway - */ private function Publish(string $topic, string $payload) { - $data = [ - "DataID" => "{7F8A48DD-F8AD-4F9C-8E6B-9E4D92DDB8F9}", - "Packet" => [ - "Topic" => $topic, - "Payload" => $payload, - "QoS" => 0, - "Retain" => false - ] + $msg = [ + "DataID" => "{043EA491-84DA-4DFD-B9D4-44B4E63F23D1}", + "Topic" => $topic, + "Payload" => $payload ]; - IPS_LogMessage("Int_VGT", "MQTT TX: $topic → $payload"); + IPS_LogMessage("Int_VGT", "TX: $topic → $payload"); - $this->SendDataToParent(json_encode($data)); + $this->SendDataToParent(json_encode($msg)); + } + + public function RequestAction($Ident, $Value) + { + return; + // Erforderlich – auch wenn leer } }