API: extend charger status mapping (#9142)

This commit is contained in:
premultiply 2023-07-30 22:19:34 +02:00 • committed by GitHub
parent 7286453aa6
commit 0167e50a4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -34,21 +34,29 @@ type ChargeStatus string
// Charging states
const (
StatusNone ChargeStatus = ""
StatusA ChargeStatus = "A" // Fzg. angeschlossen: nein Laden aktiv: nein - Kabel nicht angeschlossen
StatusB ChargeStatus = "B" // Fzg. angeschlossen: ja Laden aktiv: nein - Kabel angeschlossen
StatusC ChargeStatus = "C" // Fzg. angeschlossen: ja Laden aktiv: ja - Laden
StatusD ChargeStatus = "D" // Fzg. angeschlossen: ja Laden aktiv: ja - Laden mit Lüfter
StatusE ChargeStatus = "E" // Fzg. angeschlossen: ja Laden aktiv: nein - Fehler (Kurzschluss)
StatusF ChargeStatus = "F" // Fzg. angeschlossen: ja Laden aktiv: nein - Fehler (Ausfall Wallbox)
StatusA ChargeStatus = "A" // Fzg. angeschlossen: nein Laden aktiv: nein Ladestation betriebsbereit, Fahrzeug getrennt
StatusB ChargeStatus = "B" // Fzg. angeschlossen: ja Laden aktiv: nein Fahrzeug verbunden, Netzspannung liegt nicht an
StatusC ChargeStatus = "C" // Fzg. angeschlossen: ja Laden aktiv: ja Fahrzeug lädt, Netzspannung liegt an
StatusD ChargeStatus = "D" // Fzg. angeschlossen: ja Laden aktiv: ja Fahrzeug lädt mit externer Belüfungsanforderung (für Blei-Säure-Batterien)
StatusE ChargeStatus = "E" // Fzg. angeschlossen: ja Laden aktiv: nein Fehler Fahrzeug / Kabel (CP-Kurzschluss, 0V)
StatusF ChargeStatus = "F" // Fzg. angeschlossen: ja Laden aktiv: nein Fehler EVSE oder Abstecken simulieren (CP-Wake-up, -12V)
)
// ChargeStatusString converts a string to ChargeStatus
func ChargeStatusString(s string) (ChargeStatus, error) {
switch status := strings.ToUpper(s); status {
case "A", "B", "C":
return ChargeStatus(status), nil
case "D", "E", "F":
return ChargeStatus(status), fmt.Errorf("invalid status: %s", status)
status := strings.ToUpper(s)
switch s1 := status[:1]; s1 {
case "A", "B":
return ChargeStatus(s1), nil
case "C", "D":
switch status {
case "C1", "D1":
return StatusB, nil
default:
return StatusC, nil
}
case "E", "F":
return ChargeStatus(s1), fmt.Errorf("invalid status: %s", status)
default:
return StatusNone, fmt.Errorf("invalid status: %s", s)
}