Ich nutze zum Senden eine externe Library, beschrieben ist es hier Zendure SmartFlow MQTT
Und ich nutze es auch für EMS-ESP, z.B. um auf Boost zu schalten.
<?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/thermostat/boost';
if ($_IPS['VALUE']) {
$value = 'on';
} else {
$value = 'off';
}
$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);
$mqtt->publish($topic1, $value, 0, false);
$mqtt->close();
}
}
Ich rufe das Script über einen Button in IPSview auf, deshalb der if-Block und der Value, das kannst du aber auch direkt senden.