This commit is contained in:
belevo\mh
2025-05-26 09:34:20 +02:00
parent b9724c58c5
commit c6c9f16fed
+21 -13
View File
@@ -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'.");
}
}
}