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.
das item ist wie folgt angelegtCode:> 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:
Jetzt geht esCode: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.
Das scheint mittlerweile wohl wieder ad acta gelegt worden zu sein. Dieser PR zeigt das die deprecation warning erstmal rausgenommen worden 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
-
Ob man wirklich alle Plugins braucht, lässt sich, glaube ich, an dieser Stelle nicht beantworten. Eine/r wird mehrere brauchen, einer keine.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
-
Die Frage müsste jemand anders beantworten. Die Frage wäre allerdings, wenn dem nicht so ist, ob man das nicht als lib in den Kern einbauen könnte?Zitat von Morg Beitrag anzeigenKönnte eine modbus-Modul auch mit mehreren Geräten umgehen?
Erledigt! Wenn jemand das kommentieren möchte, dann hier: https://github.com/pymodbus-dev/pymo...scussions/2625Zitat 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 ist komisch. Diese Bedingung habe ich in beiden links von dir nicht lesen können.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
-
Die Idee könnte wirklich eine Lösung sein. Das wäre aber wirklich eine Frage für SmartHomeNG, ob man es nicht ermöglicht, dass mehrere Versionen installiert werden können. Zumindest in SmartHomeNG wird ja beim Start erkannt, wenn es multiple requirements gibt. Vielleicht bestünde über den Weg die Möglichkeit mehrere Versionen einzubinden und das gar nicht auf plugin-Basis, sondern direkt über SmartHomeNG. Damit ist das Problem dann auch für künftige Änderungen von anderen Bibliotheken gelöst. Also quasi immer dann, wenn es ein multiples requirement gibt, wird das Package separat installiert und in irgendeiner Form, die noch zu überlegen wäre, direkt ans Plugin übergeben.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