From 6c9e5fd4e99fd299c9c38d024f76f87d237b64d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=A4fliger?= Date: Thu, 13 Nov 2025 08:12:30 +0100 Subject: [PATCH] no message --- Int_VGT/module.json | 2 +- Int_VGT/module.php | 56 ++++++++++++++++++--------------------------- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/Int_VGT/module.json b/Int_VGT/module.json index 12b86cb..baff49a 100644 --- a/Int_VGT/module.json +++ b/Int_VGT/module.json @@ -8,6 +8,6 @@ "{7F8A48DD-F8AD-4F9C-8E6B-9E4D92DDB8F9}" ], "childRequirements": [], - "implemented": ["MQTTSERVER"], + "implemented": [], "prefix": "INTVGT" } diff --git a/Int_VGT/module.php b/Int_VGT/module.php index 1d9ff39..adad506 100644 --- a/Int_VGT/module.php +++ b/Int_VGT/module.php @@ -7,85 +7,73 @@ class Int_VGT extends IPSModule public function Create() { parent::Create(); - $this->RegisterPropertyString("DeviceID", ""); } public function ApplyChanges() { parent::ApplyChanges(); - - // MQTT-Server verbinden + // Verbindung zur ausgewählten Gateway-Instanz $this->ConnectParent("{7F8A48DD-F8AD-4F9C-8E6B-9E4D92DDB8F9}"); + $deviceID = $this->ReadPropertyString("DeviceID"); - // Status prüfen - if ($this->ReadPropertyString("DeviceID") == "") { + if ($deviceID === "") { $this->SetStatus(104); } else { $this->SetStatus(102); } } - /** Wird vom MQTT Server aufgerufen */ - public function ReceiveData($JSONString) + public function ReceiveData(string $JSONString) { $data = json_decode($JSONString, true); - - // Beispiel MQTT-Datenformat: - // [ - // "Topic" => "...", - // "Payload" => "..." - // ] - + if ($data === null) { + return; + } if (!isset($data["Topic"]) || !isset($data["Payload"])) { return; } $topic = $data["Topic"]; - $value = $data["Payload"]; + $payload = $data["Payload"]; - IPS_LogMessage("Int_VGT", "MQTT RX: $topic → $value"); - - $this->HandleIncoming($topic, $value); + IPS_LogMessage("Int_VGT", "Received topic: {$topic}, payload: {$payload}"); + $this->HandleIncoming($topic, $payload); } - /** Deine Logik */ - private function HandleIncoming(string $topic, string $value) + private function HandleIncoming(string $topic, string $payload) { $deviceID = $this->ReadPropertyString("DeviceID"); - $gateway = $this->InstanceID; - - // Feedback Request - if ($topic === "feedback-request/$deviceID") { + if ($topic === "feedback-request/{$deviceID}") { $response = json_encode([ "status" => "ok", "timestamp" => time() ]); - - $this->Publish("feedback-response/$deviceID", $response); + $this->Publish("feedback-response/{$deviceID}", $response); return; } - // Remote Control - if ($topic === "remote-control-response/$deviceID") { - $this->Publish("remote-control-feedback/$deviceID", $value); + if ($topic === "remote-control-response/{$deviceID}") { + // Echo same payload + $this->Publish("remote-control-feedback/{$deviceID}", $payload); return; } } - /** MQTT Publish Wrapper */ private function Publish(string $topic, string $payload) { - $msg = [ + $message = [ "Topic" => $topic, "Payload" => $payload, "Retain" => false, "QoS" => 0 ]; - - $this->SendDataToParent(json_encode(["DataID" => "{7F8A48DD-F8AD-4F9C-8E6B-9E4D92DDB8F9}", "Packet" => $msg])); + $data = [ + "DataID" => "{7F8A48DD-F8AD-4F9C-8E6B-9E4D92DDB8F9}", + "Packet" => $message + ]; + $this->SendDataToParent(json_encode($data)); } } - ?>