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: fix Status & add StatusReason #15983

Merged
merged 5 commits into from
Sep 14, 2024
Merged

Conversation

premultiply
Copy link
Member

@premultiply premultiply added bug Something isn't working enhancement New feature or request labels Sep 8, 2024
@premultiply premultiply mentioned this pull request Sep 8, 2024
2 tasks
charger/delta.go Show resolved Hide resolved
@premultiply premultiply changed the title Delta: decorate & fix status Delta: fix Status & decorate StatusReason Sep 9, 2024
@premultiply
Copy link
Member Author

Fragen wir mal andersrum:

Es gibt von Delta ja eine vollständige Beschreibung der Register.

Nur eine Version hält sich nicht dran. Dort gibt es Register 1001 (u.a.) einfach nicht.
Zudem liefert 1000 einen etwas abweichenden Status.

Welche Box ist die Ausnahme von der offiziellen Doku?

@Felsblick
Copy link
Sponsor Contributor

Felsblick commented Sep 11, 2024

Auch wenn man es so betrachtet, ist die Sache weder Schwarz noch weiß. Ich fasse mal zusammen:

AC Max Basic:

  • hat Register 1000 und Register 1001
  • zeigt auf Register 1000 Wert 3 wenn kein Fahrzeug angeschlossen ist --> nicht ganz konform mit der Doku (Status 3 heißt eigentlich "preparing")
  • ist auf dem Register 1001 konform mit der doku

AC Max Smart

  • hat nur Register 1000 (für den Lade Status...) --> insofern nicht ganz konform mit der doku, da Register 1001 fehlt
  • zeigt auf Register 1000 Wert 3 wenn ein Fahrzeug angeschlossen ist
  • ist auf dem Register 1000 konform mit der doku (soweit bekannt).

Da wir nicht wissen, ob es noch weitere Firmwareversionen der boxen gibt oder in Zuklunft geben wird, die sich anders verhalten, ist mein Vorschlag für die Vermeidung von Fehler sich dort anzuhängen, wo die Antworten der Register jetzt schon Dokukonform ist und auch schon empirisch bewiesen wurde, dass evcc mit diesen Einstellung korrekt arbeitet.

  • Init check: Prüfung der Verfügbarkeit von Register 1001. Wenn Lesefehler dann isSmart = true
  • Umschaltung des Status Mapping: Wenn isSmart = true, dann Register 1000 verwenden (mapping bpsw aus 0.130.7), wenn isSmart = false, dann Register 1001 verwenden (altes Mapping bis 0.128.4)

@premultiply premultiply changed the title Delta: fix Status & decorate StatusReason Delta: fix Status & add StatusReason Sep 11, 2024
@premultiply premultiply marked this pull request as draft September 11, 2024 14:22
@premultiply premultiply self-assigned this Sep 11, 2024
@premultiply premultiply marked this pull request as ready for review September 12, 2024 06:10
@premultiply
Copy link
Member Author

Bitte mal testen.

@madmat17
Copy link
Contributor

madmat17 commented Sep 12, 2024

Auch wenn man es so betrachtet, ist die Sache weder Schwarz noch weiß. Ich fasse mal zusammen:

AC Max Basic:

  • hat Register 1000 und Register 1001
  • zeigt auf Register 1000 Wert 3 wenn kein Fahrzeug angeschlossen ist --> nicht ganz konform mit der Doku (Status 3 heißt eigentlich "preparing")
  • ist auf dem Register 1001 konform mit der doku

AC Max Smart

  • hat nur Register 1000 (für den Lade Status...) --> insofern nicht ganz konform mit der doku, da Register 1001 fehlt
  • zeigt auf Register 1000 Wert 3 wenn ein Fahrzeug angeschlossen ist
  • ist auf dem Register 1000 konform mit der doku (soweit bekannt).

Da wir nicht wissen, ob es noch weitere Firmwareversionen der boxen gibt oder in Zuklunft geben wird, die sich anders verhalten, ist mein Vorschlag für die Vermeidung von Fehler sich dort anzuhängen, wo die Antworten der Register jetzt schon Dokukonform ist und auch schon empirisch bewiesen wurde, dass evcc mit diesen Einstellung korrekt arbeitet.

  • Init check: Prüfung der Verfügbarkeit von Register 1001. Wenn Lesefehler dann isSmart = true
  • Umschaltung des Status Mapping: Wenn isSmart = true, dann Register 1000 verwenden (mapping bpsw aus 0.130.7), wenn isSmart = false, dann Register 1001 verwenden (altes Mapping bis 0.128.4)

@Felsblick
Danke für die Zusammenfassung!

Ich darf dazu ergänzen:
Wir wissen nicht, ob die Delta AC MAX Smart das Register 1001 hat, oder nicht. Wir wissen lediglich, dass das Register 1001 nicht über Modbus TCP auslesbar ist (bei der Basic-Variante erfolgt die Modbus-Verbindung ja über RS485/RTU).
Ob das an einer kruden/fehlerhaften Modbus-TCP-Implementierung liegt, ob das Absicht seitens Delta Electronics ist, oder ob das Register in der Smart-Variante tatsächlich nicht existiert, sei einmal dahingestellt.

Falls jemand einen RS485 auf RJ45/TCP-Adapter als Leihe zur Verfügung stellen möchte, kann ich das gerne bei der Smart-Variante austesten.
(da die Box selber eine Modbus TCP Anbindung ermöglicht und damit grundsätzlich auch eine Steuerung möglich ist, plane ich keine Anschaffung eines Adapters)

Ich werde mit der nächsten Nightly-Build einen Test fahren, ob die Erkennung für die Smart-Variante über Modbus TCP passt und berichten.

@Felsblick
Copy link
Sponsor Contributor

Felsblick commented Sep 12, 2024

Dann muss gemergt werden um es in den nigthly zu bekommen, oder?

charger/delta.go Outdated Show resolved Hide resolved
@premultiply premultiply merged commit 0fcc215 into master Sep 14, 2024
6 checks passed
@premultiply premultiply deleted the fix/delta-status-decorated branch September 14, 2024 07:15
@andig
Copy link
Member

andig commented Sep 14, 2024

Dann muss gemergt werden um es in den nigthly zu bekommen, oder?

Es wäre super, nicht bei jedem einzelnen PR die gleiche Frage zu stellen. Danke :)

@Felsblick
Copy link
Sponsor Contributor

Felsblick commented Sep 14, 2024

Danke fürs Mergen und den neuen Release. Weiche funktioniert. Er springt auf Register 1001 bei der Basic. Leider ist der Wert 2 und 1 auf Register 1001 noch fehlerhaft auf Status A gemappt er muss aber Status B sein.
@premultiply
diese kleine Extra Runde müssen wir leider noch drehen. Sorry, ich hatte nicht alle Stati geprüft. So war es in 0.128.4 korrekt

case 0:
		return api.StatusA, nil
	case 1, 2, 4, 5, 6, 7:
		return api.StatusB, nil
	case 3:
		return api.StatusC, nil

@madmat17
kannst du noch schnell mit der Smart testen. Ob’s funktioniert?

@andig
Copy link
Member

andig commented Sep 14, 2024

Leider ist der Wert 2 auf Register 1001 noch fehlerhaft auf Status A gemappt er muss aber Status B sein.

Gerne PR. Einfach die Datei hier auf Github wie gewünscht editieren.

@Felsblick
Copy link
Sponsor Contributor

done
#16112

@madmat17
Copy link
Contributor

@madmat17
kannst du noch schnell mit der Smart testen. Ob’s funktioniert?

@Felsblick
Vor dem Merge konnte ich es leider nicht testen, aber jetzt mit der Nightly.
Macht den Anschein, als würde es funktionieren (zumindest wird die Präsenz des Fahrzeuges korrekt erkannt).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants