Vorgehensweisen um beim Zendure Solarflow SF2400Pro Werte mittels MQTT zu setzen
Im Gegensatz zu anderen Zendure´s muss beim Publishen nicht an das Topic 'iot/gDxxxb/7yyyyya/properties/write' und einem Payload von z.B.
'{"properties": { "outputLimit": '.$variable.' }}' gesendet werden !
Wichtig ist es, bei der Instanz des jeweiligen MQTT Server Devices ein abweichendes Thema beim Senden einzustellen.

Beim „abweichenden Thema“ muss ein „/set“ hinten dran.
Das Topic selbst muss nicht angelegt werden.
Die Variablenaktion der dazugehörigen Statusvariable bleibt auf „Benutze Standardaktion“.
Nun ein paar Beispiele wie man dort hin senden kann.
Gesendet wird an das Thema als Topic, als Payload wird der reine Wert übergeben.
<?php
/*
Das ist Skript ID 58301
*/
// =====================================================================================
// Publish mit externem Script, abgelegt als phpMQTT.php im Scripte-Ordner
// https://github.com/bluerhinos/phpMQTT
// Die Seriennummer ist in einer Variablen gespeichert
// =====================================================================================
require('phpMQTT.php');
// ==========================================
// KONFIGURATION
// ==========================================
$SerialNoID = 48550;
$server = 'localhost'; // change if necessary
$port = 1028; // change if necessary
$username = 'xxxx'; // set your username
$password = 'xxxx'; // set your password
$client_id = 'phpMQTT-publisher'; // make sure this is unique for connecting to server - you could use uniqid()
$SerialNo = GetValueString($SerialNoID);
$topic = "Zendure/number/$SerialNo/inverseMaxPower/set";
$payload = 799;
$mqtt = new Bluerhinos\phpMQTT($server, $port, $client_id);
$debug = true;
if ($payload) {
if ($mqtt->connect(true, NULL, $username, $password)) {
if ($debug)
IPS_LogMessage(IPS_GetName($_IPS['SELF']), "MQTT connect, topic " . $topic . ", value " . $payload);
$mqtt->publish($topic, $payload, 0, false);
$mqtt->close();
}
}
?>
<?php
/*
Das ist Skript ID 31718
*/
// ===================================================
// Publish mit Modul "simple MQTT sending Tool"
// Die Seriennummer ist in einer Variablen gespeichert
// ===================================================
// ==========================================
// KONFIGURATION
// ==========================================
$SerialNoID = 48550;
$smstID = 44315;
$SerialNo = GetValueString($SerialNoID);
$topic = "Zendure/number/$SerialNo/inverseMaxPower/set";
$payload = 798;
SMST_sendString($smstID, $topic, $payload);
?>
<?php
/*
Das ist Skript ID 46579
*/
// =========================================================================================================================================================
// Publish mit Request Action. Es wird ein RequestAction auf die Statusvariable durchgeführt.
// Die Variablenaktion der Statusvariable bleibt auf "benutze Standardaktion"
// Auf der darüberliegenden Instanz muss ein abweichendes SendeTopic konfiguriert sein.
// Falls das normale Topic in der Instanzkonfiguration zb. "Zendure/number/EEB4AEP4P1xxxxx/inverseMaxPower" lautet so muss das Sendetopic auf
// "Zendure/number/EEB4AEP4P1xxxxx/inverseMaxPower/set" geändert werden.
// ---
// Die Seriennummer ist in einer Variablen gespeichert
// =========================================================================================================================================================
// ==========================================
// KONFIGURATION
// ==========================================
$VariableID = 24259; //ID der Statusvariablen
RequestAction($VariableID,797);
?>