76_SMAInverter.pm - Blocking call zum Wechselrichter

Begonnen von Panzerschrauber, 05 April 2024, 17:28:58

Vorheriges Thema - Nächstes Thema

Panzerschrauber

Hallo,

habe mir eine Instanz diese Moduls für meinen SMA Wechselrichter erzeugt. Funktioniert soweit wunderbar.
Aber: mein FHEM Log wird mit folgenden Fehlermeldungen geflutet:

SMAInverter <Name der Instanz> -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated

Frage: Kann bzw. wie kann ich diese Fehlermeldung abschalten?

Die Ursache liegt vermutlich daran, das der Sende und Receive Socket im SUB SMAInverter_SMAcommand für jedes Kommando erzeugt wird, dann wartet die Routine auf die Antwort, und wenn diese im definierten Zeitfenster nicht kommt, dann gibt es diese Fehlermeldung.

Wäre es möglich, ähnlich wie im 77_SMAEM, den Socket dauerhaft zu erzeugen, und die Kommandos wie gehabt über diesen Socket an den Wechselrichter zu senden aber den Empfang der Nachrichten in eine eigene Funktion auszulagern, die vom FHEM Event Manager zyklisch aufgerufen wird, wenn Daten vorhanden sind?

Wenn nur ein Wechselrichter vorhanden ist, sollte das problemlos gehen. Wenn mehrere Wechselrichter abgefragt werden sollen, dann müsste die Empfangsfunktion die Daten entsprechend der IP Adresse des Wechselrichters verteilen.

Gruß
Panzerschrauber