Hallo Uwe, konntest Du den Test für Register 43 inzwischen machen? Ich habe die Aktion um das Register zu schreiben wie von Bert beschrieben implementiert, bekomme aber om Protokollfile eine Fehlermeldung: Pymodbus: SAX_battery: Error: device: 64 address: 43 → Modbus Error: [Input/Output] ERROR: No response received after 3 retries
Und ja, ich habe die Register 41, 43 und 44 von SAX freischalten lassen.
Im übrigen funktioniert das Lesen der anderen Register problemlos.
Kannst Du mir bitte weiter helfen?
Hallo Wolfgang,
ich habe die Begrenzung der Ladeleistung und der Entladeleistung erfolgreich umgesetzt und es hat auch (nicht gut) funktioniert.
„Nicht gut“ war, dass die gewählte Leistung irgendwann vom SAX Speicher „vergessen“ wird.
Aber ansonsten hatte das bis zu einem Update des HA funktioniert und und jetzt bekomme auch ich diese Fehlermeldung und der Befehl wird nicht mehr umgesetzt.
Mit der von Dir genannten APP funktioniert das aber weiterhin sauber. Liegt also nicht am SAX.
Somit hat für mich der HA seit mehreren Updates ein Problem mit Modbus. Da gab es auch issues in Github, aber ich hatte leider noch keine Zeit tiefer reinzuschauen.
Evtl will Modbus auch anders kommunizieren (Siehe Post von Bert42 und weiter oben „justone“ auch schon mal)
Dort wird alles in einem Rutsch abgefragt und somit gehen viel weniger Anfragen an den SAX raus. Sieht nach Optimierung aus und könnte die Lösung sein.
Hallo Uwe und Bert, ich habe am Wochenende Infos zu dem Fehler gefunden, die darauf schließen lassen, dass der SAX das Schreibkommando nur fehlerfrei akzeptier, wenn man mehrere Werte schreibt (Array oder explizit) um damit das Modus Kommando 10H zu generieren. Dann klappt. Mein Test-Code:
Dann verschwindet die Fehlermeldung und der SAX stellt die Entladung ein. Interessanterweise reicht >ein< Schreibkommando und der Speicher bleibt dauerhaft im Standby. Den Effekt, dass das Kommando automatisch nach einer kurzen Zeit zurückgesetzt wird, sehe ich nicht - auch wenn die Hotline mir genau das vorhergesagt hatte. Dort bin ich noch in Klärung, warum das nun so ist.
Gruß, Wolfgang
Einen kleinen Unterschied, aber vielleicht lohnt es sich zu testen:
Ich benutze input_number und ich lese in deinem Code input_select.
Ich habe zuerst mit Register 41 getestet und schaffte es auch nicht auf 43 und 44 zu schreiben. Als erstes Problem war ganz klar, dass es eigentlich gar nicht freigeschaltet war (team bei Sax verstand nicht warum ich 41 und 43,44 schreiben möchte, da wenn mann programmiert, könnte mann alles auf 41 vorbereiten, ich wollte aber trotzdem volle Macht auf dem System haben). Aber dann bin ich nicht mehr ganz sicher wann ich von input_select auf input_number gegangen bin…