Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Delta AC Max: Corrected mapping for native Modbus TCP connection #16094

Closed
wants to merge 16 commits into from

Conversation

madmat17
Copy link
Contributor

Updated statusOCPP() to reflect the correct mapping for Modbus TCP connection (status register 1000)

madmat17 referenced this pull request Sep 13, 2024
@madmat17
Copy link
Contributor Author

madmat17 commented Sep 13, 2024

Ich habe mir den Quelltext in der fix/delta-status-decorated (b8d9203) genauer angesehen und basierend auf den Kommentaren glaube ich, dass ein Missverständnis vorliegt.
Es scheint davon ausgegangen zu werden, dass man in der Smart-Variante mehr Register auslesen kann - dem ist paradoxer Weise aber nicht so. Die Logik stimmt aber grundsätzlich.

Grundsätzliches:

  1. Wenn die Delta AC Max Smart direkt(!) über Modbus TCP angebunden ist (bei der Delta AC Max Basic gibt es die Möglichkeit nicht), dann kann das Register 1001 nicht ausgelesen werden.
  2. Wenn die Delta AC Max Basic über einen RTU/TCP-Konverter angebunden ist (ob das auch bei der Smart der Fall wäre, wissen wir Stand heute nicht), dann kann das Register 1001 ausgelesen werden.

Das war der Grund, warum wir die Verfügbarkeit des Registers 1001 nutzen, um zwischen der Modbux RTU- und der Modubs TCP-Logik zu switchen.

Das heißt:
Register 1001 verfügbar = Basic-Logik
Register 1001 nicht verfügbar = Smart-Logik

Das Ergebnis sollte sein, dass bei der Delta AC Max Smart beim Auslesen einer 3 aus dem Register 1000 (deltaRegEvseState) der api.StatusB zurückgegeben wird.

Kleine Korrektur:

Wir haben im Code des Commits b8d9203 noch einen Knopf in der Zuordnung der Register-Werte zum Status. in der statusOCPP().
Das habe ich adaptiert an jenes aus der dieser delta.go-Version.

Den Code im neuen PR #16094 habe ich getestet - damit läuft die Delta AC Max Smart und wird erkannt.

Randnotiz:

Warum der StatusB bei der RTU-Abfrage (Delta AC Max Basic) überhautp ein Problem verursacht hat, verstehe ich nicht, da das Register 1001 (deltaRegEvseChargerState) gar nicht weiter abgefragt wurde () und eigentlich dieselbe Logik funktionieren sollte.
https://github.com/evcc-io/evcc/blob/70b87715e10bb22bc005b3a05953d2116798a00d/charger/delta.go : Diese Version hat nur mit der Delta AC Max Smart funktioniert
https://github.com/evcc-io/evcc/blob/da91ea630318eae7e3569e6895963f50cd69cf39/charger/delta.go : Diese Version hat nur mit der Delta AC Max Basic funktionert.
Was mir aufgefallen ist: In Zeile 79 hat sich
return NewDelta(cc.URI, cc.Device, cc.Comset, cc.Baudrate, modbus.ProtocolFromRTU(cc.RTU), cc.ID, cc.Connector) in
return NewDelta(cc.URI, cc.Device, cc.Comset, cc.Baudrate, cc.Settings.Protocol(), cc.ID, cc.Connector) geändert.
Kann das der breaking change für die Delta AC Max Basic (Verbindung über RTU/TCP-Converter anstatt über die native TCP-Verbindung der Wallbox) gewesen sein?

@premultiply
Copy link
Member

Hier geht es weiter: #15983

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants