Vehicles: move more properties to /vehicles (BC) (#11181)
This commit is contained in:
parent
02214bcdea
commit
bc0343ab7d
26 changed files with 182 additions and 162 deletions
76
api/api.go
76
api/api.go
|
|
@ -2,88 +2,13 @@ package api
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
//go:generate mockgen -package api -destination mock.go github.com/evcc-io/evcc/api Charger,ChargeState,CurrentLimiter,PhaseSwitcher,Identifier,Meter,MeterEnergy,Vehicle,ChargeRater,Battery,Tariff,BatteryController
|
||||
|
||||
// ChargeMode is the charge operation mode. Valid values are off, now, minpv and pv
|
||||
type ChargeMode string
|
||||
|
||||
// Charge modes
|
||||
const (
|
||||
ModeEmpty ChargeMode = ""
|
||||
ModeOff ChargeMode = "off"
|
||||
ModeNow ChargeMode = "now"
|
||||
ModeMinPV ChargeMode = "minpv"
|
||||
ModePV ChargeMode = "pv"
|
||||
)
|
||||
|
||||
// String implements Stringer
|
||||
func (c ChargeMode) String() string {
|
||||
return string(c)
|
||||
}
|
||||
|
||||
// ChargeStatus is the EV's charging status from A to F
|
||||
type ChargeStatus string
|
||||
|
||||
// Charging states
|
||||
const (
|
||||
StatusNone ChargeStatus = ""
|
||||
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)
|
||||
)
|
||||
|
||||
var StatusEasA = map[ChargeStatus]ChargeStatus{StatusE: StatusA}
|
||||
|
||||
// ChargeStatusString converts a string to ChargeStatus
|
||||
func ChargeStatusString(status string) (ChargeStatus, error) {
|
||||
s := strings.ToUpper(strings.Trim(status, "\x00 "))
|
||||
|
||||
if len(s) == 0 {
|
||||
return StatusNone, fmt.Errorf("invalid status: %s", status)
|
||||
}
|
||||
|
||||
switch s1 := s[:1]; s1 {
|
||||
case "A", "B":
|
||||
return ChargeStatus(s1), nil
|
||||
|
||||
case "C", "D":
|
||||
if s == "C1" || s == "D1" {
|
||||
return StatusB, nil
|
||||
}
|
||||
return StatusC, nil
|
||||
|
||||
case "E", "F":
|
||||
return ChargeStatus(s1), fmt.Errorf("invalid status: %s", s)
|
||||
|
||||
default:
|
||||
return StatusNone, fmt.Errorf("invalid status: %s", status)
|
||||
}
|
||||
}
|
||||
|
||||
// ChargeStatusStringWithMapping converts a string to ChargeStatus. In case of error, mapping is applied.
|
||||
func ChargeStatusStringWithMapping(s string, m map[ChargeStatus]ChargeStatus) (ChargeStatus, error) {
|
||||
status, err := ChargeStatusString(s)
|
||||
if mappedStatus, ok := m[status]; ok && err != nil {
|
||||
return mappedStatus, nil
|
||||
}
|
||||
return status, err
|
||||
}
|
||||
|
||||
// String implements Stringer
|
||||
func (c ChargeStatus) String() string {
|
||||
return string(c)
|
||||
}
|
||||
|
||||
// Meter provides total active power in W
|
||||
type Meter interface {
|
||||
CurrentPower() (float64, error)
|
||||
|
|
@ -187,6 +112,7 @@ type Vehicle interface {
|
|||
Battery
|
||||
BatteryCapacity
|
||||
IconDescriber
|
||||
FeatureDescriber
|
||||
Title() string
|
||||
SetTitle(string)
|
||||
Phases() int
|
||||
|
|
|
|||
79
api/chargemodestatus.go
Normal file
79
api/chargemodestatus.go
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ChargeMode is the charge operation mode. Valid values are off, now, minpv and pv
|
||||
type ChargeMode string
|
||||
|
||||
// Charge modes
|
||||
const (
|
||||
ModeEmpty ChargeMode = ""
|
||||
ModeOff ChargeMode = "off"
|
||||
ModeNow ChargeMode = "now"
|
||||
ModeMinPV ChargeMode = "minpv"
|
||||
ModePV ChargeMode = "pv"
|
||||
)
|
||||
|
||||
// String implements Stringer
|
||||
func (c ChargeMode) String() string {
|
||||
return string(c)
|
||||
}
|
||||
|
||||
// ChargeStatus is the EV's charging status from A to F
|
||||
type ChargeStatus string
|
||||
|
||||
// Charging states
|
||||
const (
|
||||
StatusNone ChargeStatus = ""
|
||||
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)
|
||||
)
|
||||
|
||||
var StatusEasA = map[ChargeStatus]ChargeStatus{StatusE: StatusA}
|
||||
|
||||
// ChargeStatusString converts a string to ChargeStatus
|
||||
func ChargeStatusString(status string) (ChargeStatus, error) {
|
||||
s := strings.ToUpper(strings.Trim(status, "\x00 "))
|
||||
|
||||
if len(s) == 0 {
|
||||
return StatusNone, fmt.Errorf("invalid status: %s", status)
|
||||
}
|
||||
|
||||
switch s1 := s[:1]; s1 {
|
||||
case "A", "B":
|
||||
return ChargeStatus(s1), nil
|
||||
|
||||
case "C", "D":
|
||||
if s == "C1" || s == "D1" {
|
||||
return StatusB, nil
|
||||
}
|
||||
return StatusC, nil
|
||||
|
||||
case "E", "F":
|
||||
return ChargeStatus(s1), fmt.Errorf("invalid status: %s", s)
|
||||
|
||||
default:
|
||||
return StatusNone, fmt.Errorf("invalid status: %s", status)
|
||||
}
|
||||
}
|
||||
|
||||
// ChargeStatusStringWithMapping converts a string to ChargeStatus. In case of error, mapping is applied.
|
||||
func ChargeStatusStringWithMapping(s string, m map[ChargeStatus]ChargeStatus) (ChargeStatus, error) {
|
||||
status, err := ChargeStatusString(s)
|
||||
if mappedStatus, ok := m[status]; ok && err != nil {
|
||||
return mappedStatus, nil
|
||||
}
|
||||
return status, err
|
||||
}
|
||||
|
||||
// String implements Stringer
|
||||
func (c ChargeStatus) String() string {
|
||||
return string(c)
|
||||
}
|
||||
14
api/mock.go
14
api/mock.go
|
|
@ -361,6 +361,20 @@ func (mr *MockVehicleMockRecorder) Capacity() *gomock.Call {
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Capacity", reflect.TypeOf((*MockVehicle)(nil).Capacity))
|
||||
}
|
||||
|
||||
// Features mocks base method.
|
||||
func (m *MockVehicle) Features() []Feature {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Features")
|
||||
ret0, _ := ret[0].([]Feature)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Features indicates an expected call of Features.
|
||||
func (mr *MockVehicleMockRecorder) Features() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Features", reflect.TypeOf((*MockVehicle)(nil).Features))
|
||||
}
|
||||
|
||||
// Icon mocks base method.
|
||||
func (m *MockVehicle) Icon() string {
|
||||
m.ctrl.T.Helper()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue