Ich denke er meint, ob dein in IPS konfiguriertes Topic mit dem in der openDTU übereinstimmt.
Das sieht aber eigentlich korrekt aus, wenn ich mir die Daten aus deinem Debug ansehe und mit dem Konfigurator verlgeiche.
Aber im Konfigurator sieht es trotzdem irgendwie merkwürdig aus. Alles ist rot und es wird dort auch keine IP-Adresse deiner DTU angezeigt. Die sollte eigentlich dort stehen.
Bekommst du denn Daten im Debug des Splitters und der Inverter-Instanz oder nur im Konfigurator?
Mach mal einen Screenshot von der Konfiguration der OpenDTU Splitter Instanz und guck mal - wie von Slummi beschrieben - ob etwas im Debug der OpenDTU Splitter Instanz ankommt.
Es sind tatsächlich Fehlermeldungen in der Konsole zu sehen.
Ich kann aber leider nichts damit anfangen.
PS: Evtl liegt es daran, dass ich die Datenbank auf Grund ihrer Größe an einen anderen Speicherort umziehen musste.
10.01.2024, 14:20:29 | FlowHandler | Kann Daten nicht zur Instanz #24694 weiterleiten:
Fatal error: Uncaught ArgumentCountError: Too few arguments to function IPSLogger_PhpErrorHandler(), 4 passed in D:\ServerFolders\Symcon\modules.store\com.roastedelectrons.hoymilesopendtu\OpenDTU\module.php on line 127 and exactly 5 expected in D:\ServerFolders\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php:24
Stack trace: #0 D:\ServerFolders\Symcon\modules.store\com.roastedelectrons.hoymilesopendtu\OpenDTU\module.php(127): IPSLogger_PhpErrorHandler(8192, ‚Function utf8_d…‘, ‚D:\ServerFolder…‘, 127) #1 C:\Windows\System32-(3): OpenDTU->ReceiveData(‚{„DataID“:"{7F7…‘) #2 {main}
thrown in D:\ServerFolders\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php on line 24
PHP-Error-Error: Uncaught ArgumentCountError: Too few arguments to function IPSLogger_PhpErrorHandler(), 4 passed in D:\ServerFolders\Symcon\modules.store\com.roastedelectrons.hoymilesopendtu\OpenDTU\module.php on line 127 and exactly 5 expected in D:\ServerFolders\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php:24
Stack trace: #0 D:\ServerFolders\Symcon\modules.store\com.roastedelectrons.hoymilesopendtu\OpenDTU\module.php(127): IPSLogger_PhpErrorHandler(8192, ‚Function utf8_d…‘, ‚D:\ServerFolder…‘, 127) #1 C:\Windows\System32-(3): OpenDTU->ReceiveData(‚{„DataID“:"{7F7…‘) #2 {main}
thrown
Error in Script D:\ServerFolders\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php on Line 24Abort Processing during Fatal-Error: Uncaught ArgumentCountError: Too few arguments to function IPSLogger_PhpErrorHandler(), 4 passed in D:\ServerFolders\Symcon\modules.store\com.roastedelectrons.hoymilesopendtu\OpenDTU\module.php on line 127 and exactly 5 expected in D:\ServerFolders\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php:24
Stack trace: #0 D:\ServerFolders\Symcon\modules.store\com.roastedelectrons.hoymilesopendtu\OpenDTU\module.php(127): IPSLogger_PhpErrorHandler(8192, ‚Function utf8_d…‘, ‚D:\ServerFolder…‘, 127) #1 C:\Windows\System32-(3): OpenDTU->ReceiveData(‚{„DataID“:"{7F7…‘) #2 {main}
thrown
Error in Script D:\ServerFolders\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php on Line 24
Du hast vor der Installation von IPS 7.0 nicht die Migrationsanleitung gelesen.
PHP wurde von 7.4 auf 8.2 aktualisiert. Insbesondere Nutzer der IPSLibrary/IPSLogger sollten VOR dem Update auf IP-Symcon 7.0 diese aktualisieren. Notfalls können die notwendigen Änderungen manuell nachgepflegt werden (Details). Die meisten PHP-Module wurden bereits aktualisiert, sodass diese bereits mit IP-Symcon 7.0 kompatibel sind.
habe die Anpassungen hoffentlich alle durchgeführt.
Nun laufe ich in neue Fehlermeldungen rein.
11.01.2024, 09:12:50 | FlowHandler | Kann Daten nicht zur Instanz #24694 weiterleiten: PHP-Error-Unknown Error: Function utf8_decode() is deprecated
Error in Script D:\ServerFolders\Symcon\modules.store\com.roastedelectrons.hoymilesopendtu\OpenDTU\module.php on Line 127Abort Processing during Fatal-Error: Function utf8_decode() is deprecated
Error in Script D:\ServerFolders\Symcon\modules.store\com.roastedelectrons.hoymilesopendtu\OpenDTU\module.php on Line 127
Servus,
Bekomme einen HMT-2250-6T (gibts eigentlich einen ohne -6T?), finde hier aber nirgends dass der Typ unterstützt wird. Oder reicht „HMT“ dass er vom Modul via einer passenden OpenDTU unterstützt wird?
Ja sollte unterstützt werden (aber nicht getestet). Im Grunde werden alle WR, die auch von OpenDTU unterstützt werden mit dem Modul funktionieren. Wenn das Modell nicht explizit erkannt wird, kann man einfach UNKOWN wählen - hat für die Funtion (fast) keinen Einfluss.
OKI Doki. Danke Dir.
Dann geh ich mal davon aus dass es geht.
Sehr wichtig wäre mir dass ich dynamisch drosseln kann aus Symcon heraus um immer schön bei den max 600/800 W zu bleiben.
Aber noch ist nix montiert, werde aber berichten wenn es soweit ist.
Erstmal ist die openDTU die ich wollte nicht lieferbar von 3printd-solution.
Dessen DTUs scheinen mir sehr gut und hätte die Fusion genommen für den Fall dass noch mal ein anderer Hoymiles dazu kommt.
Aber vlt. Habt ihr auch noch andere Tipps (mit Display und fertig gebaut).
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";
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.
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 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.
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 .
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
Edit Nachtrag: Wie es mit WLAN Wechselrichter ist, das weiß ich nicht.
Meine Einstellung: