From 84a438c1f5377fca065f134fe3ee0e53ef98a651 Mon Sep 17 00:00:00 2001 From: "belevo\\mh" Date: Mon, 26 May 2025 13:54:06 +0200 Subject: [PATCH] h --- Symcon_Publish_to_Shelly_MQTT/form.json | 5 +++ Symcon_Publish_to_Shelly_MQTT/module.php | 41 +++++++++++------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Symcon_Publish_to_Shelly_MQTT/form.json b/Symcon_Publish_to_Shelly_MQTT/form.json index 0fc84ae..6e4e50d 100644 --- a/Symcon_Publish_to_Shelly_MQTT/form.json +++ b/Symcon_Publish_to_Shelly_MQTT/form.json @@ -30,6 +30,11 @@ "name": "client_id", "caption": "Klient Id" }, + { + "type": "ValidationTextBox", + "name": "mqtt_instance_id", + "caption": "MQTT Id" + }, { "type": "NumberSpinner", "name": "msg_id", diff --git a/Symcon_Publish_to_Shelly_MQTT/module.php b/Symcon_Publish_to_Shelly_MQTT/module.php index b8217d8..1bba5e3 100644 --- a/Symcon_Publish_to_Shelly_MQTT/module.php +++ b/Symcon_Publish_to_Shelly_MQTT/module.php @@ -13,12 +13,13 @@ class Symcon_Publish_to_Shelly_MQTT extends IPSModule $this->RegisterPropertyString("password", ""); $this->RegisterPropertyString("Topic", ""); $this->RegisterPropertyString("client_id", ""); - + $this->RegisterPropertyString("mqtt_instance_id", ""); // Nachricht-Payload-Parameter als Properties $this->RegisterPropertyInteger("msg_id", 100); $this->RegisterPropertyString("src", "user1"); $this->RegisterPropertyString("method", "Switch.Set"); $this->RegisterPropertyInteger("switch_bool", 0); // ID der Bool-Variable + $this->RegisterTimer("Timer_Influx",5000,"IPS_RequestAction(" . $this->InstanceID . ', "GetAction", "");'); } @@ -45,13 +46,9 @@ class Symcon_Publish_to_Shelly_MQTT extends IPSModule { IPS_LogMessage("ShellySwitchSender", "GetAction gestartet"); - $broker = $this->ReadPropertyString("broker_address"); - $port = $this->ReadPropertyInteger("broker_port"); - $user = $this->ReadPropertyString("username"); - $pass = $this->ReadPropertyString("password"); + $mqttInstanceID = $this->ReadPropertyInteger("mqtt_instance_id"); // Instanz-ID deiner MQTT-Instanz $topic = $this->ReadPropertyString("Topic"); - $mqttInstanceID = $this->ReadPropertyInteger("mqtt_instance_id"); - $client_id = $this->ReadPropertyString("client_id"); + $msg_id = $this->ReadPropertyInteger("msg_id"); $src = $this->ReadPropertyString("src"); $method = $this->ReadPropertyString("method"); @@ -64,13 +61,6 @@ class Symcon_Publish_to_Shelly_MQTT extends IPSModule $onValue = GetValueBoolean($boolVarID); - IPS_LogMessage("ShellySwitchSender", "MQTT Broker: $broker:$port"); - IPS_LogMessage("ShellySwitchSender", "Topic: $topic"); - IPS_LogMessage("ShellySwitchSender", "Source: $src"); - IPS_LogMessage("ShellySwitchSender", "Method: $method"); - IPS_LogMessage("ShellySwitchSender", "Message ID: $msg_id"); - IPS_LogMessage("ShellySwitchSender", "Bool-Variable ID: $boolVarID = " . ($onValue ? "true" : "false")); - $payload = [ "id" => 0, "src" => $src, @@ -81,18 +71,23 @@ class Symcon_Publish_to_Shelly_MQTT extends IPSModule ] ]; - $json = json_encode($payload); - IPS_LogMessage("ShellySwitchSender", "MQTT Payload: $json"); + $jsonPayload = json_encode($payload); - $mqtt = new phpMQTT($broker, $port, $client_id); + IPS_LogMessage("ShellySwitchSender", "MQTT Payload: $jsonPayload"); - if ($mqtt->connect(true, NULL, $username, $password)) { - IPS_LogMessage("ShellySwitchSender", "Verbunden mit dem MQTT-Broker"); - $mqtt->publish($topic, $payload, 0); - IPS_LogMessage("ShellySwitchSender", "Nachricht gesendet"); - $mqtt->close(); + if (!IPS_InstanceExists($mqttInstanceID)) { + IPS_LogMessage("ShellySwitchSender", "FEHLER: MQTT-Instanz-ID $mqttInstanceID existiert nicht."); + return; + } + + // Nachricht senden + $result = MQTT_Publish($mqttInstanceID, $topic, $jsonPayload, 0); + + if ($result) { + IPS_LogMessage("ShellySwitchSender", "Nachricht erfolgreich gesendet"); } else { - IPS_LogMessage("ShellySwitchSender", "Verbindung fehlgeschlagen"); + IPS_LogMessage("ShellySwitchSender", "Fehler beim Senden der Nachricht"); } } + }