-
-
Notifications
You must be signed in to change notification settings - Fork 726
/
Copy pathapi.go
135 lines (109 loc) · 3.51 KB
/
api.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package api
import "time"
//go:generate mockgen -package mock -destination ../mock/mock_api.go github.com/andig/evcc/api Charger,Meter,MeterEnergy,Vehicle,ChargeRater
// ChargeMode are charge modes modeled after OpenWB
type ChargeMode string
// Charge modes
const (
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 - 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)
)
// String implements Stringer
func (c ChargeStatus) String() string {
return string(c)
}
// Meter is able to provide current power in W
type Meter interface {
CurrentPower() (float64, error)
}
// MeterEnergy is able to provide current energy in kWh
type MeterEnergy interface {
TotalEnergy() (float64, error)
}
// MeterCurrent is able to provide per-line current A
type MeterCurrent interface {
Currents() (float64, float64, float64, error)
}
// Battery is able to provide battery SoC in %
type Battery interface {
SoC() (float64, error)
}
// ChargeState provides current charging status
type ChargeState interface {
Status() (ChargeStatus, error)
}
// Charger is able to provide current charging status and enable/disable charging
type Charger interface {
ChargeState
Enabled() (bool, error)
Enable(enable bool) error
MaxCurrent(current int64) error
}
// ChargerEx provides milli-amp precision charger current control
type ChargerEx interface {
MaxCurrentMillis(current float64) error
}
// Diagnosis is a helper interface that allows to dump diagnostic data to console
type Diagnosis interface {
Diagnose()
}
// ChargeTimer provides current charge cycle duration
type ChargeTimer interface {
ChargingTime() (time.Duration, error)
}
// ChargeRater provides charged energy amount in kWh
type ChargeRater interface {
ChargedEnergy() (float64, error)
}
// Identifier identifies a vehicle and is implemented by the charger
type Identifier interface {
Identify() (string, error)
}
// Vehicle represents the EV and it's battery
type Vehicle interface {
Battery
Identifier
Title() string
Capacity() int64
}
// VehicleFinishTimer provides estimated charge cycle finish time
type VehicleFinishTimer interface {
FinishTime() (time.Time, error)
}
// VehicleRange provides the vehicles remaining km range
type VehicleRange interface {
Range() (int64, error)
}
// VehicleClimater provides climatisation data
type VehicleClimater interface {
Climater() (active bool, outsideTemp float64, targetTemp float64, err error)
}
// VehicleStartCharge starts the charging session on the vehicle side
type VehicleStartCharge interface {
StartCharge() error
}
// VehicleStopCharge stops the charging session on the vehicle side
type VehicleStopCharge interface {
StopCharge() error
}
type Tariff interface {
IsCheap() bool
}