diff --git a/Symcon_Publish_to_Shelly_MQTT/module.php b/Symcon_Publish_to_Shelly_MQTT/module.php index ff3bc27..7ba525a 100644 --- a/Symcon_Publish_to_Shelly_MQTT/module.php +++ b/Symcon_Publish_to_Shelly_MQTT/module.php @@ -40,6 +40,7 @@ class Symcon_Publish_to_Shelly_MQTT extends IPSModule private function GetAction() { + IPS_LogMessage("ShellySwitchSender", "🚀 Starte GetAction()..."); // Eigenschaften lesen $broker = GetValue($this->ReadPropertyString("broker_address")); $port = GetValue($this->ReadPropertyInteger("broker_port")); @@ -51,6 +52,10 @@ class Symcon_Publish_to_Shelly_MQTT extends IPSModule $src = GetValue($this->ReadPropertyString("src")); $method = GetValue($this->ReadPropertyString("method")); $switch_bool = GetValueBoolean($this->ReadPropertyInteger("switch_bool")); + + IPS_LogMessage("ShellySwitchSender", "📋 Broker: $broker:$port, Topic: $topic"); + IPS_LogMessage("ShellySwitchSender", "📋 src: $src, method: $method, msg_id: $msg_id"); + IPS_LogMessage("ShellySwitchSender", "📋 boolVarID: $switch_bool"); // JSON-Payload erstellen $payload = [ "id" => 0, @@ -64,20 +69,23 @@ class Symcon_Publish_to_Shelly_MQTT extends IPSModule $json = json_encode($payload); - // Sende an MQTTClient (Symcon MQTTClient muss existieren!) - $clientID = @IPS_GetInstanceIDByName("MQTTClient", 0); // Name anpassen, falls nötig - if ($clientID && IPS_InstanceExists($clientID)) { - // Prüfe ob kompatibler MQTTClient - if (IPS_GetInstance($clientID)['ModuleInfo']['ModuleID'] == "{C03937E3-5F86-EACA-B4A2-39A24ACF945A}") { - // Senden mit interner Funktion - MQTTClient_Publish($clientID, $topic, $json, 0, false); - IPS_LogMessage("ShellySwitchSender", "📤 Gesendet an '$topic': $json"); - return; - } - } + IPS_LogMessage("ShellySwitchSender", "📦 MQTT Payload: $json"); - // Fallback: Logging für manuelle MQTT-Sendung - IPS_LogMessage("ShellySwitchSender", "⚠️ Kein gültiger MQTTClient gefunden. Bitte in der Instanz 'MQTTClient' benennen."); + // Sende an MQTTClient + $clientID = @IPS_GetInstanceIDByName("MQTTClient", 0); + if ($clientID && IPS_InstanceExists($clientID)) { + $moduleID = IPS_GetInstance($clientID)['ModuleInfo']['ModuleID']; + IPS_LogMessage("ShellySwitchSender", "📡 Gefundener MQTTClient mit ModuleID: $moduleID"); + + if ($moduleID == "{C03937E3-5F86-EACA-B4A2-39A24ACF945A}") { + MQTTClient_Publish($clientID, $topic, $json, 0, false); + IPS_LogMessage("ShellySwitchSender", "✅ Nachricht erfolgreich an '$topic' gesendet."); + } else { + IPS_LogMessage("ShellySwitchSender", "❌ Fehler: Instanz 'MQTTClient' hat falsches Modul."); + } + } else { + IPS_LogMessage("ShellySwitchSender", "❌ Kein MQTTClient gefunden oder benannt als 'MQTTClient'."); + } } }