[Modul BETA] Hoymiles Modulwechselrichter mit OpenDTU

Huhu - hast du das noch so laufen? …hatte das irgendwie übersehen und eine eigene Regelung geschrieben.
Die „steped“ immer um 100er Schritte hoch und runter. Und bei hohem Bedarf, direkt den max Wert.
Deine Version werde ich aber auch mal testen. Bei der Ausführungszeit reagiere ich auf Wert Änderungen von meinem IR Lesekopf am Zähler. Wenn nix schwankt, kann auch die Regelung mehrere Minuten beim selben Wert bleiben. Auch kann ich über die Visu meine Regelwerte vorgeben und es flexibel einstellen. Ist aktuell auch keine Null-Speisung, da ich mir immer -200W Vorhalte für irgendwelche Verbraucher. Wenn der Akku Einzug erhält, wird das natürlich eher auf eine Null-Speisung rauslaufen.

<?php

// Hoymiles Begrentzer qwik
// 2023.07.17 - run version 1
// 2023.07.26 - run version 2
// 2024.02.08 - run faster version 3

//Spielwerte
//$leistungZEist = GetValue(59001);
//$leistungPVsoll = GetValue(42695);

//Werte einlesen
$leistungZEist = GetValue(37825);
$leistungPVsoll = GetValue(49222);
$WRonline = GetValue(47079);
$einAUS = GetValue(22966);

$leistungPVsollRunterAB = GetValue(21899);
$leistungPVsollRunterBIS = GetValue(23335);
$leistungPVsollHochAB = GetValue(50209);
$leistungPVsollHochMAX = GetValue(16560);
$leistungPVsollHochBIS = GetValue(31612);


//Warten auf Variablen
//IPS_Sleep(1000);

//-------------------------------------------------------------------------------------------------------------
// Runter drehen
if (($leistungZEist < $leistungPVsollRunterAB AND $leistungPVsoll > $leistungPVsollRunterBIS) AND $WRonline == true AND $einAUS == true)
	{
    HOYMILES_SetLimitAbsolute(37486,$leistungPVsoll - 100);
    SetValue(49222,$leistungPVsoll - 100);
    $sollEchoR = $leistungPVsoll - 100;
    IPS_LogMessage(IPS_GetName(11753), "Die SOLL Leistung der PV wurde auf $sollEchoR W runter gestellt.");
	}
//-------------------------------------------------------------------------------------------------------------
// Hoch drehen
if (($leistungZEist > $leistungPVsollHochAB AND $leistungPVsoll < $leistungPVsollHochBIS) AND $WRonline == true AND $einAUS == true)
	{
	HOYMILES_SetLimitAbsolute(37486,$leistungPVsoll + 100);			
	SetValue(49222,$leistungPVsoll + 100);
    $sollEchoH = $leistungPVsoll + 100;
    IPS_LogMessage(IPS_GetName(11753), "Die SOLL Leistung der PV wurde auf $sollEchoH W hoch gestellt.");
	}
//-------------------------------------------------------------------------------------------------------------
// Hoch sofort
if (($leistungZEist > $leistungPVsollHochMAX AND $leistungPVsoll < $leistungPVsollHochBIS) AND $WRonline == true AND $einAUS == true)
	{
	HOYMILES_SetLimitAbsolute(37486, $leistungPVsollHochBIS);
    SetValue(49222, $leistungPVsollHochBIS);
    $sollEchoM = $leistungPVsollHochBIS;
    IPS_LogMessage(IPS_GetName(11753), "Die SOLL Leistung der PV wurde auf den MAX Wert von $sollEchoM W gestellt.");
	}
//-------------------------------------------------------------------------------------------------------------
//Testausgabe
//echo "Die SOLL Leistung der PV wurde auf $sollEchoR W runter gestellt.\n";
//echo "Die SOLL Leistung der PV wurde auf $sollEchoH W hoch gestellt.\n"
//echo "Die SOLL Leistung der PV wurde auf den MAX Wert von $sollEchoM W gestellt.\n";	

Aktuell ist er auf 400W sehe ich gerade:

Habt ihr schonmal OpenDTU-onBatteriy ausprobiert?

Einfach das Bin-File opendtu-onbattery-generic (ist dort unter Asset), in der DTU als Firmwareupdate-File in „Firmware-Aktualisierung“ einladen.

In IP_Symcon einen MQTT Client Device (Thema zB /Power Typ String) erstellen, dessen Value ist ein String und der bekommt seine Daten von diesem Script:

<?php
$Power=GetValueFloat(48141);// holt Momentanleistung aus Modbuszähler bei mir
RequestAction(42020, $Power); //in die MQTT Client Device Variable schreiben.

und das Script bekommt ein Ereignis: z.B. alle 2 Sekunden.

Dann unter Einstellungen in der DTU
„Stromzähler“ unter MQTT topic - Stromzähler zB /Power eintragen.

Dann unter „Dynamic Power Limiter Einstellungen“ eure Wünsche der Regelung eintragen.

Ich hatte meine Regelung auch mit einem Script erstellt, funktioniert auch.
Dieses Firmwareupdate in der DTU macht es auch ganz gut.
Man kann auch el. Stromzähler einbinden.

2 „Gefällt mir“

Das muss ich mir genauer ansehen, der erste Versuch führte dazu, dass nichts mehr eingespeist wurde und erst mit Firmware zurück und noch mal zusätzlich booten lief es wieder.

Aber meine Umgebung ist etwas komplex durch Zendure SolarFLow und dreiphasigem Wechselrichter, nur Impulszähler, da muss endlich mal jemand die Modbus-Anbindung einbauen :open_mouth: und man kann in der Firmware sehr viel einstellen.

Klingt so, als wenn keine Zählerdaten ankamen.
Woran scheitert es mit der Modbus Anbindung? Beim Energiezähler oder WR ?
Es gibt seit Gestern eine ganz einfache Modbus RTU Anbindung in Annex ESP32 Basic.
Modbus TCP Anbindung in Annex ESP32 Basic gibt es schon etwas länger.
Funktioniert super.
Wenn jemand Interesse hat, poste ich mal das ESP32 Basic File für beide Möglichkeiten.
Edit: wenn man(n) die Modbus-Registerdaten dann im ESP32 hat, muß/kann man diese Daten per MQTT- oder Json Umwandlung weiter nutzen.

am ausführenden Organ :upside_down_face:, also an mir :rofl:.

Netzwerkumsetzer und Netzteil im Hutschienengehäuse liegen hier schon, ich muss halt nur einbauen und eine Impulsleitung auf Modbus umklemmen, aber es ist immer etwas anderes wichtiger :face_with_peeking_eye:.

@Helmut

Mit der Modbus Anbindung würde es vermutlich jetzt funktionieren, wenn ich die Zählerwerte korrekt übertrage bzw. direkt in OpenDTU-onbat eintrage.

Hast du gesehen, ob man die Steuerung irgendwie einfach (über MQTT) ein- und ausschalten kann?

Wenn ich „onbat“ bin würde ich natürlich gern 0-Einspeisung machen, wenn die Akkus vol sind und ich Überschuss habe, darf der gern in Netz gehen.

Einspeisung macht openDTU bat ganz ordentlich, wenn Du Deinen Energieverbauch per MQTT von IP-Symcon machst, wie ich schon im Beitrag geschrieben hatte.
Und ob Du es Energie oder Power nennst ist wurscht :wink:
Edit Nachtrag: Wie es mit WLAN Wechselrichter ist, das weiß ich nicht.
Meine Einstellung:


Ich führe mal etwas Selbstgespräche.

es gibt drei Modes, die sich über MQTT auf „powerlimiter/cmd/mode“ setzen lassen, damit müsste machbar sein, was ich machen möchte.

0 - Normal operation
2 - Unconditional Full Solar-Passthrough

Das wird dann die nächste Jugend-forscht-Baustelle :smiley: .

Hier in dem Schrieb hatte ich erklärt wie ich den Limit im Hoymiles per MQTT aus IP-Symcon setze, dazu die Bilder von der Post davor, die sollten es aufzeigen, dass es geht. Sind denn Modbus Daten da und kannst Du der openDTU on Batterie die MQTT Daten des Hausverbrauch schicken?
Hast Du denn einen Hoymiles ohne WLAN, dass es passen könnte?

Ich werde nachher noch mal spielen, prinzipiell sollte jetzt alles passen.

Meine Anforderungen sind wie immer etwas besonderes :innocent:, deshalb der Bedarf zur Abschaltung der Automatik.

Tagsüber, solange der SolarFlow die Akkus lädt habe ich nur Dampf auf zwei Eingängen. Wenn die Akkus voll sind hängen alle Module am Wechselrichter. Wenn Überschuss vorhanden ist darf eingespeist werden.

Nachts möchte ich auf 0-Einspeisung gehen, damit ich die Akkus nutzen kann, aber nur für mich.

Somit muss ich den Mode umschalten, dass das über MQTT möglich ist, habe ich schon getestet.

Den aktuellen Wirkleistungswert soll sich OpenDTU-onbat dann direkt vom Modbus Zähler holen. Und wenn die Automatik aktiv ist, dann muss ich auch dem SF sagen, dass er einspeisen darf/soll.

Wer ist denn die Automatik?
Ich sehe bei Dir Solarkollektoren, einen Speicher, einen Wechselrichter und OpenDTU on bat.
Habe ich was nicht erkannt?

Bei mir laufen 4 Kollektoren, 2 Speicher von BluePalm, allerdings noch die V1, und OpenDTU onBat der einen HM Wechselrichter regelt.

Den Bluepalm kann ich sagen, dass sie erst speichern sollen, dass sie speichern und laden sollen, oder dass einer von zwei Panel-Eingängen direkt an den Wechselrichter gehen sollen.

Meine Einstellung bei guter Sonneneinstrahlung ist so, dass der Bluepalm Speicher laden und speichern soll. Das mache ich indem in der App die Entladeschwelle auf zB 400Watt stelle.

Der Wechselrichter ist von OpenDTU on Bat immer auf Nulleinspeisung geschaltet.
Wenn von den Speichern bzw den Kollektoren nichts kommt, dann kann er nicht’s leisten.

Wenn Energie wieder kommt macht er Wechselrichter automatisch was.

Im Grunde bin ich die Automatik, die aber nur darauf achtet, dass die Akkus nicht gerade Tiefentladung bekommen und das kann man auch in der App von Bluepalm verhindern.
Das ist alles aber nur in der Bluepalm App möglich, die aber LEIDER in der Cloud ist.

Kommt nichts von der Sonne habe ich nicht’s gespart, kommt was kann ich nur gewinnen.

Will sagen ich regel nicht nach Tag oder Nacht, auch am Tag kann ich die Energie nutzen und wenn nicht genug für Tag UND Nacht kommt, dann hatte ich nicht genug Sonnenenergie zur Verfügung.

Das gilt nur für Balkonsolar Anlagen.
Ich wollte keine große Anlage bauen, das kostete 4x120€, die 2 Speicher mit je 2240 Wh je 750€, Wechselrichter ~160€, openDTU um 25€, Modbuszähler hatte ich schon.
Das ist ja auch schon viel Geld, das ich eingesetzt habe um etwas Stromkosten zu sparen.

Wir missbrauchen langsam den Threat und ich drücke mich wohl unverständlich aus. Ich schreib dir nachher eine PM.

Hallo zusammen,

ich hätte eine Frage zum Auslesen von einem Hoymiles mit WLAN. Ist dies auch mit demModul möglich? Oder gibt es dazu eine andere möglichkeit?

Danke euch.

Für die Geräte mit direkten WLAN ohne openDTU nimmst du das hier:

Michael