Zitat von SKraft
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
neue Versionen pymodbus
Einklappen
X
-
Im Log kommt das wenn ich versucht zu schreiben.
Code:> Traceback (most recent call last): > File "/usr/local/smarthome/lib/item/item.py", line 2265, in __update > method(self, caller, source, dest) > File "/usr/local/smarthome/plugins/modbus_tcp/__init__.py", line 309, in update_item > if item is self._pause_item: > AttributeError: 'modbus_tcp' object has no attribute '_pause_item' 2025-02-06 10:28:25 ERROR lib.item.item Item Energie.Wallbox.LadeleistungEinstellung: problem running <bound method modbus_tcp.update_item of <plugins.modbus_tcp.modbus_tcp object at 0x7f3a3464ab80>>: 'modbus_tcp' object has no attribute '_pause_item' > Traceback (most recent call last): > File "/usr/local/smarthome/lib/item/item.py", line 2265, in __update > method(self, caller, source, dest) > File "/usr/local/smarthome/plugins/modbus_tcp/__init__.py", line 309, in update_item > if item is self._pause_item: > AttributeError: 'modbus_tcp' object has no attribute '_pause_item'
Code:LadeleistungEinstellung: type: num visu_acl: rw modBusAddress@wall: 1000 modBusDataType@wall: int16 modBusDirection@wall: read_write
Kommentar
-
Da hast du recht, das Plugin kommt aus dem develop branch.
Das hatte ich mal testweise versucht.
Das aus dem Master ist die modbus_tcp v1.0.10
Dort kommt überhaupt keine Meldung im LOG und schreiben ist dort auch nicht möglich.
PROBLEM GELÖST
habe einen Hinweis gefunden das die man beim Schreiben item das Register mit angeben sollte:
Code:modBusObjectType@wall: HoldingRegister
Danke für eure Unterstützung
Zuletzt geändert von SKraft; 06.02.2025, 16:11.
Kommentar
-
Das Positional Argument count ist bereits in der Version pymodbus 3.5.2 enthalten (und was ich gesehen habe auch schon von Anfang an), es ist nun nur durch den Kunstgriff eines * in den Funktionsparametern explizit angefordert worden. Das bedeutet aber auch das es ein Bug im Code des Plugins ist.
Zitat von ivande Beitrag anzeigenes bahnt sich jedoch ein weiteres Problem an:
Code:deprecate ln:292 BinaryPayloadDecoder is deprecated and will be removed in v3.9.0 !
Zuletzt geändert von bmx; 08.02.2025, 09:14.
Kommentar
-
Nachdem ich jetzt SmartHomeNG 3.11 drauf habe, wollte ich mir das ganze noch mal anschauen. Das mit dem pymodbus lässt sich aber nicht "dauerhaft" lösen. Das wird immer wieder ein Thema sein. Es werden Änderungen vorgenommen, die in späteren Versionen wieder geändert werden usw. Aktueller Stand ist, dass die meisten Plugins mit pymodbus max. 3.6.9 klarkommen. Die aktuelle huawei-soloarlib braucht aber eine neuere Version, die aber nicht größer als 3.8.5 sein darf. 3.8.6 ist die letzte pymodbus Version. Es gibt aber schon in den Docs eine 4.0.0. Da wird es wieder schwerwiegende Änderungen geben.
Deshalb stellt sich natürlich die Frage, wie wir das Problem lösen können? Ich möchte nicht jedes Mal alle Plugins bearbeiten. Gibt es ggf. eine Alternative zu pymodbus?
Kommentar
-
Zitat von bmx Beitrag anzeigenNaja es stellt sich die Frage ob man wirklich alle Plugins braucht oder ob man es als SDP Plugin aufbaut das nur anders konfiguriert. Eine andere Alternative wäre Modbus als Modul ähnlich zum MQTT Modul auszuführen.
Die Idee mit dem Modbus-Modul fände ich gut. Der Beste Ansatz wäre dann nicht das pymodbus zu verwenden, sondern den Code direkt zu nutzen. Dann gibt es auch später keine Komplikationen mit der Kompatibilität. Und die huawei-solar-lib braucht ohnehin pymodbus und wäre dann davon unabhängig.
Kommentar
-
Zitat von Morg Beitrag anzeigenKönnte eine modbus-Modul auch mit mehreren Geräten umgehen?
Zitat von henfri Beitrag anzeigenAuch wenn es vielleicht im einzelfall nichts bringt, aber ich denke man könnte auch den Damen und Herren von pymous mal Feedback geben.Zuletzt geändert von Cannon; 06.04.2025, 13:45.
Kommentar
-
Hi Cannon,
es gäbe da noch andere Möglichkeiten siehe hier oder hier.
Ich habe das mit den unterschiedlichen Target-Ordnern für unterschiedliche Versionen und mit anhängen des Pfades an den PYTHONPATH getestet. Das funktioniert wenn im Standard-path kein pymodbus installiert ist, ansonsten wird die Version von dort importiert.
Das wäre aber aus meiner Sicht ohne Anpassungen im Core zur Installation der Requirements nicht ohne weiteres machbar, ausser man stellt im Plugin in sicher, dass
kein pymodbus installiert ist (falls installiert dann deinstallieren von pymodbus im Plugin). Im Anchluss die benötigte Version im Plugin in einen separaten Ordner installieren und dann erst mit entsprechenden Pfad importieren. Das package muss dann aber aus den requirements raus da es sonst bei jedem Neustart wieder intallliert würde.
Man müsste dem modbus_tcp-Plugin dann entsprechende Parameter je Instanz mitgeben welche Version zu verwenden ist.
Als Idee und zur Diskussion, ich stehe ebenfalls vor dem Problem unterschiedlicher pymodbus-Versionen.
Viele Grüße
Andre
Kommentar
-
Hi Andre,
Interessante Möglichkeit!
Das funktioniert wenn im Standard-path kein pymodbus installiert ist, ansonsten wird die Version von dort importiert.
Ansonsten wäre das ja eine mögliche Lösung, aber so ist es halt dann doch schon sehr umständlich
Kommentar
-
Zitat von AndreK Beitrag anzeigenIch habe das mit den unterschiedlichen Target-Ordnern für unterschiedliche Versionen und mit anhängen des Pfades an den PYTHONPATH getestet. Das funktioniert wenn im Standard-path kein pymodbus installiert ist, ansonsten wird die Version von dort importiert.
Was mir nicht klar ist, warum pymodbus im Standard-Path installiert werden darf. Zumindest unter den Links steht da nichts.
Kommentar
Kommentar