Funktioniert leider auch nicht.
Der MQTT-Explorer sieht zwar die Sendung entsprechend,
der ems-Status sagt aber weiterhin nur:
2026-03-17T14:29:01.635 WARNING 419: [mqtt] MQTT disconnected: TCP
2026-03-17T14:29:03.656 INFO 420: [mqtt] MQTT connected
<?php
require('phpMQTT.php');
$server = 'localhost'; // change if necessary
$port = 1885; // change if necessary
$username = ''; // set your username
$password = ''; // set your password
$client_id = 'phpMQTT-publisher'; // make sure this is unique for connecting to sever - you could use uniqid()
$topic1 = 'ems-esp/boiler/seltemp/';
$value = '55';
$mqtt = new Bluerhinos\phpMQTT($server, $port, $client_id);
$debug = false;
$debug = true;
if ($value) {
if ($mqtt->connect(true, NULL, $username, $password)) {
if ($debug)
IPS_LogMessage(IPS_GetName($_IPS['SELF']), "MQTT connect, topic " . $topic1 . ", value " . $value);
// WICHTIG: QoS auf 0, Retain auf false belassen (Commands sollten bei EMS-ESP nicht retained werden)
$mqtt->publish($topic1, $value, 0, false);
$mqtt->close();
} else {
if ($debug) {
IPS_LogMessage(IPS_GetName($_IPS['SELF']), "MQTT Time out!");
}
}
}
Die Struktur in Symcon ist für das Senden über das Script egal, da es direkt an den MQTT Server sendet.
Deine Code Beispiele enthalten unterschiedliche Informationen, bei $value fehlen die Hochkommas und bei $server hast du falsche “Hochkommas” .
Wenn du einen anderen MQTT Server benutzt als den Symcon-Server, dann eventuell mal ohne username/passwort versuchen, Sonderzeichen im Passwort können auch ein Problem sein und so sollte es aussehen
$server = '192.168.178.36'; // change if necessary
$port = 1885; // change if necessary
$username = ''; // set your username
$password = ''; // set your password
$client_id = 'phpMQTT-publisher'; // make sure this is unique for connecting to sever - you could use uniqid()
$topic1 = 'ems-esp/boiler/seltemp/';
$value = '55';
wenn der MQTT Server auf deinem Symcon-Server läuft, dann geht localhost, aber mit korrekten Hochkommas
$server = 'localhost';
topic und value funktionieren genau so und unter Status/Systemprotokolle sollte bei ausführen des Scripts auftauchen
2026-03-17T20:11:07.037 INFO 85: [command] Called command boiler/seltemp (selected temperature) with value 55
und im Symcon kann es einen Moment dauern, bis der Wert korrekt angezeigt wird.