Ich sehe diese timeouts des EVU-Kit V2 (Lovato / Elfin EE11) auch schon immer (> 2 Jahre) auf meiner "produktiven" Kaufbox
Anfrage an Support ergab: Kein Problem solange es nur sporadisch auftritt.
Trotz der Fehler ist die Funktion völlig normal, daher habe ich es bisher ignoriert.
Ich habe neben der Kaufbox zum Entwickeln und Test 2 Raspis laufen mit:
- Pi 3b+ mit owb 1.9
- Pi 4 mit owb 2.0
owb 2.0 läuft schon einige Zeit mit konfiguriertem EVU-Kit - im log sehe ich keine timeout Fehler.
In owb 1.9 test habe ich heute den EVU von MQTT auch auf EVU-Kit umgestellt und die IPs des *193-netzwerks angepasst.
Es reden also damit 3 owb-Instanzen direkt mit dem EE11!
In der 1.9 Test hatte ich zunächst auch die timeouts.
Ich habe dann im Code den Timeout des ModbusTcpClient auf 10 sec geändert.
Damit habe ich in owb 1.9 Test innerhalb einer Stunde keinen einzigen timeout gesehen.
Die Änderung sieht so aus (2 neue Zeilen, vorn mit +):
Code: Alles auswählen
diff --git a/packages/modules/devices/openwb_evu_kit/device.py b/packages/modules/devices/openwb_evu_kit/device.py
index 49bd3c1c..a3a70fd3 100644
--- a/packages/modules/devices/openwb_evu_kit/device.py
+++ b/packages/modules/devices/openwb_evu_kit/device.py
@@ -13,6 +13,7 @@ from modules.devices.openwb_evu_kit import counter
from modules.devices.openwb_evu_kit import inverter
from modules.devices.openwb_evu_kit.config import EvuKit, EvuKitBatSetup, EvuKitCounterSetup, EvuKitInverterSetup
from modules.devices.openwb_pv_kit.inverter import PvKit
+from pymodbus.constants import Defaults
log = logging.getLogger(__name__)
@@ -27,6 +28,7 @@ class Device(AbstractDevice):
def __init__(self, device_config: Union[Dict, EvuKit]) -> None:
self.device_config = dataclass_from_dict(EvuKit, device_config)
self.components = {} # type: Dict[str, Union[BatKit, counter.EvuKit, PvKit]]
+ Defaults.Timeout = 10
self.client = modbus.ModbusTcpClient_("192.168.193.15", 8899)
Frage an die Modbus - Experten: macht ein PR Sinn oder könnten mögliche Nebenwirkungen bestehen?
EDIT:
Jetzt sind auf der Kaufbox die timeouts auch verschwunden.
Der Grund war also, dass die owb 1.9 test die gleiche IP Adresse benutzt hat, wie die prod, dabei ist es egal ob diese aktiv benutzt wird oder nicht.
Ich habe 2 Instanzen owb1.9 test, stretch und buster.
Soweit ich mich erinnere hatte ichh das vor langer Zeit schon mal und auf buster geändert.
Momentan auf stretch war die iP noch auf derselben wie in der PROD....
Also obiges Änderung ist nicht nötig.
BTW, der default timeout in pymodbus ist 3 Sek.