Zendure SmartFlow MQTT

Ich nutze folgendes externe Script, abgelegt als phpMQTT.php im Scripte-Ordner:

Und dann habe ich mir ein eigenes Script angelegt, dass den gewünschten Wert aus einer Variablen liest, die ich im IPSview verändern kann. An der „Vollautomatisierung“ arbeite ich noch. Scheinbar wird auch der minSoc Wert nicht selbständig berücksichtig, zumindest hatte ich jetzt drei Tage 0% als verbliebene Ladung.

<?php
require('phpMQTT.php');

$server = 'localhost';     // change if necessary
$port = 1883;                     // change if necessary
$username = '';                   // set your username
$password = '';                   // set your password
$client_id = 'phpMQTT-publisher'; // make sure this is unique for connecting to server - you could use uniqid()

$outputLimit = GetValue(25146); // Variable mit dem Sollwert

$topic = 'iot/73bkTV/<SF_DEVICE_ID>/properties/write';
$value = '{"properties": { "outputLimit": '.$outputLimit.' }}';

$mqtt = new Bluerhinos\phpMQTT($server, $port, $client_id);

$debug = true;               

if ($value) {
    if ($mqtt->connect(true, NULL, $username, $password)) {
        if ($debug)
            IPS_LogMessage(IPS_GetName($_IPS['SELF']), "MQTT connect, topic " . $topic . ", value " . $value);
        $mqtt->publish($topic, $value, 0, false);
        $mqtt->close();
    }
}

Das sieht aktuell im IPSview erstmal so aus:

außerdem zeichne ich nahezu alle Werte auf, um beurteilen zu können, was der SF überhaupt macht.

Gelernt habe ich von Reinhard noch, dass die Wechselrichter auch an ihrem EIngang begrenzen. Ich habe mich immer gewundert, warum nur 200 W eingespeist wurden. Ich hatte den WR auf 600 W stehen, da es ein HMT-2250 ist, drei Eingänge, alo geteilt durch 3 macht 200 W.

Mit deutlich höheren Werten ging es heute schon mal besser.

Update:
SF inputLimit nimmt der SF nicht an.

Und wenn der Bypass anspringt, also der Akku voll (hier 98%) ist, dann ist ihm auf das outputLimit egal und die dann eigehende Leistung von den Modulen geht direkt an den WR.

Ich hatte den WR vorhin auf 1.200 W stehen, dann geht die Leistung je Eingang voll durch.

Morgen kommt wahrscheinlich der Zweirichtungszähler, mein vorhandender kann nur Verbrauch. Dann werde ich wohl noch etwas mehr in Richtung Nulleinspeisung versuchen.

Ah Super. Werde das dann gleich mal testen.

Vielen Dank erstmal

So. Auskunftsfreudig ist der SF ja. Aber ich kann keine Werte setzen. Von der Cloud hab ich ihn getrennt. Im heimischen WLAN ist er aber noch.
Hast Du eine Idee?

image

    $topic = 'iot/73bkTV/<SF_DEVICE_ID>/properties/write';
    $value = '{"properties": { "outputLimit": '.$variable.' }}';

in $variable steht der Wert, also wie oben im Script-Beispiel.

Genau das geht auch im MQTTexplorer, aber vorsicht, die gesendeten Werte haben noch ein Sonderzeichen vorne, da kannst du nicht hin senden.

Ist das Bild wirklich der komplette Baum oder ist da noch ein Pfeil drüber?

grafik

Das Script von Reinhard musst du dann nicht mehr laufen lassen, das erzeugt die solarflow-hub Struktur. Über den MQTT Konfigurator im Symcon kannst du die gewünschten Instanzen anlegen.

Jetzt versteh ich gar nichts mehr. Muss ich in solarflow-bt-manager.py was anpassen?
Da ich es unter Windows läuft habe ich dies im Skript angepasst:

WIFI_PWD = os.environ.get('WIFI_PWD',"abcdef")
WIFI_SSID = os.environ.get('WIFI_SSID',"WLAN abcd")
SF_DEVICE_ID = os.environ.get('SF_DEVICE_ID',"meine ID")

Dann starte ich:

python solarflow-bt-manager.py -d -w "WLAN abcd" -b 192.168.1.18:1888

Ausgabe ist dann:

Disconnecting Solarflow Hub from Zendure Cloud
2023-10-24 14:34:56,896:INFO: Found device: 94:C9:xx:42:xx:xx: ZenP1_52
2023-10-24 14:35:10,475:INFO: Services:
2023-10-24 14:35:10,475:INFO: 00001801-0000-1000-8000-00805f9b34fb (Handle: 1): Generic Attribute Profile
2023-10-24 14:35:10,476:INFO: 00001800-0000-1000-8000-00805f9b34fb (Handle: 5): Generic Access Profile
2023-10-24 14:35:10,476:INFO: 0000a002-0000-1000-8000-00805f9b34fb (Handle: 12): Vendor specific
2023-10-24 14:35:10,477:INFO: 00112233-4455-6677-8899-aabbccddeeff (Handle: 18): Unknown
2023-10-24 14:35:10,486:INFO: {"iotUrl": "192.168.1.18", "messageId": "1002", "method": "token", "password": "password", "ssid": "WLAN abcd", "timeZone": "GMT+02:00", "token": "abcdefgh"}
2023-10-24 14:35:10,608:INFO: Setting IoTURL connection parameters - disconneect

Im MQTT Explorer tut sich garnichts
Wenn ich dann das Skript starte:

python solarflow-bt-manager.py -i -b 192.168.1.18:1888

kommen Daten.
Diese Ansicht bekomme ich nicht
grafik

versuch es mit 1883, ist doof, war bei mir auch schon belegt, aber der SF kann das scheinbar nicht, obwohl Reinhards Script es suggeriert.

Und das

python solarflow-bt-manager.py -i...

brauchst du nicht mehr. SF sendet selber an den MQTT Server, das dauert manchmal etwas.

Argh … moment

du musst einmal senden an (Updated):

iot/73bkTV/{sf_device_id}/properties/read
{„properties“: [„getAll“]}

danach sendet er regelmäßig selbstständig.

So. Musste erstmal viele Instanzen umbiegen. Er sendet. Aber nur:

Im MQTT Explorer sieht es jetzt so aus:
image

1 „Gefällt mir“

Hallo Ralf,

nach und nach kamen einige Werte. Aber bei weitem nicht so viele wie mit dem py-Skript.
Muss mal abwarten wenn die Sonne mal scheint.
Aufgefallen ist mir mit dem py-Skript das da zwei Variablen verdreht sind:
„outputPackPower“ scheint Laden zu sein und „packInputPower“ scheint Entladen zu sein

Vielen Dank

Das Script nutze ich nur noch zum umschalten auf die Cloud, falls es Updates gibt. Wobei ich da vorsichtig sein werde und abwarte, ob im Discord jemand das Update macht. Wenn hinterher ein lokaler MQTT-Server nicht mehr möglich ist bzw. die Art der Konfiguration geändert wird, dann wäre es doof.

Ich habe gerade einen zweiten Akku angesteckt und auch die Daten kamen sofort und automatisch.

Bei mir gibt es inzwischen
grafik

die habe ich aber alle über den MQTT-Konfigurator im Symcon angelegt, da vor dem ersten / noch ein Sonderzeichen ist, das ich nicht eingeben konnte.

Die wichtigsten Daten kommen über …/report

und dort in …/properties

Und das ist deutlich mehr, wie über das Script von Reinhard.

Bei mir scheint sehr ordentlich die Sonne, also das richtige Wetter zum Werte prüfen, aber leider bin ich nicht fit und kann nicht wirklich viel machen.

Na dann erstmal gute Besserung.

Und das:

Ist das bei Dir auch so?

Ich würde es aus Sicht des SF betrachten und dann ist es korrekt, output zur Ladung der Akkus und input zum Einspeisen in den SF und der dann in den WR.

Kurze Zwischeninfo

Die vielen Datenpunkte kamen erst nach einem Symcon Neustart.
Dachte ich bin besonders Schlau und nehme den HMS-800W. Der ist aber noch nicht openDTU kompatibel. Hab ihn gestern gegen ohne W getauscht und jetzt gibts bei uns kein Sonne :frowning:

Die aktuelle Wetterlage hilft nicht wirklich beim analysieren.

Hallo Ralf,
hab mich heute mal zum Update des Zendure getraut.
Gab einige Akku Optimierungen und vom Solarflow werden jetzt beide Solareingänge getrennt angezeigt. MQTT funktioniert noch!!!

Gruß
Jürgen

Da haben wir beide heute das gleiche getan :slight_smile: .

Ich hatte vorher im Discord gefragt und die Aussage war, geht noch, aber alles wieder aktivieren. Das hat auch geklappt.

Aber hier war so wenig Sonne, dass ich nicht sinnvoll prüfen kann.

Gibt es im Discord einen extra Kanal für Zendure?

Ja, aber wenig los dort.

ok. Danke
Übrigens, ich musste nichts neu aktivieren. :joy:

Hallo @ralf ,
wir haben jetzt ja Minusgrade und Sonne. Hab festgestellt das der Solarflow aber nicht einspeist. Habe Probeweise mal den minSoc 2% runtergenommen und da speist er ein. Sobald die Grenze erreicht ist schaltet Akku ab und SolarInput geht auf 0W obwohl sich an der Sonnenintensität erstmal nichts geändert hat. Ist das bei Dir auch so?

Gruß

Jürgen

Nachdem der Schnee weg war wurde von der Südseite massiv geladen. Die beiden Platten am Hoymiles liegen auf der Garage und da ist noch Schnee drauf.

Meine Akkus stehen aber im warmen :wink: .

Heute in ~3 Stunden von ~50% aufgeladen.

1 „Gefällt mir“