Re: Siemens Module ab 1.9.251
Verfasst: Fr Jan 28, 2022 10:04 am
Es ist auffällig in den Logs, dass in dem Batteriebeispiel manchmal auch ein anderer Fehler zu sehen ist:
Um 20:04:05 konnte erfolgreich eine TCP-Verbindung aufgebaut werden, aber es kam nur Müll zurück. Warum? Modbusserver überfordert? Folgt der Datenabruf nach Verbindungsaufbau zu schnell? Ich habe mir den Code vom Siemens-Modul dazu angesehen und stelle erschreckt fest: Die Modbusverbindungen werden geöffnet, aber nie wieder geschlossen. Ich weiß allerdings nicht, ob der Modbusclient seine Verbindung unter den passenden Bedingungen selbstständig schließt. Zumindest gibt es noch weitere Module in denen ich Code der die Verbindung schließt vermisse.
Ich würde es jedenfalls gerne ausprobieren und die Verbindung nach jedem update schließen.
Hast du SSH auf deine Box? Wenn ja könntest du in der packages/modules/siemens/counter.py:37 die Zeile
tauschen durch:
Und dann nur das EVU-Modul aktivieren und die anderen deaktivieren. Wenn es dann geht sind wir schlauer.
EDIT: BZW wenn du kein SSH hast könnte Lutz das per Fernwartung machen
Um 20:04:05 konnte erfolgreich eine TCP-Verbindung aufgebaut werden, aber es kam nur Müll zurück. Warum? Modbusserver überfordert? Folgt der Datenabruf nach Verbindungsaufbau zu schnell? Ich habe mir den Code vom Siemens-Modul dazu angesehen und stelle erschreckt fest: Die Modbusverbindungen werden geöffnet, aber nie wieder geschlossen. Ich weiß allerdings nicht, ob der Modbusclient seine Verbindung unter den passenden Bedingungen selbstständig schließt. Zumindest gibt es noch weitere Module in denen ich Code der die Verbindung schließt vermisse.
Ich würde es jedenfalls gerne ausprobieren und die Verbindung nach jedem update schließen.
Hast du SSH auf deine Box? Wenn ja könntest du in der packages/modules/siemens/counter.py:37 die Zeile
Code: Alles auswählen
power = self.__tcp_client.read_holding_registers(14, ModbusDataType.INT_32, unit=1)
Code: Alles auswählen
with self.__tcp_client:
power = self.__tcp_client.read_holding_registers(14, ModbusDataType.INT_32, unit=1)
EDIT: BZW wenn du kein SSH hast könnte Lutz das per Fernwartung machen