Add SMA eCharger (#18158)
This commit is contained in:
parent
629a969c9f
commit
f09b558339
4 changed files with 25 additions and 7 deletions
|
|
@ -236,15 +236,22 @@ var _ api.MeterEnergy = (*Smaevcharger)(nil)
|
|||
|
||||
// TotalEnergy implements the api.MeterEnergy interface
|
||||
func (wb *Smaevcharger) TotalEnergy() (float64, error) {
|
||||
val, err := wb.getMeasurement("Measurement.Metering.GridMs.TotWhIn")
|
||||
return val / 1e3, err
|
||||
res, err := wb.getMeasurement("Measurement.Metering.GridMs.TotWhIn")
|
||||
if se := new(smaevcharger.ErrUnknownMeasurement); errors.As(err, &se) {
|
||||
res, err = wb.getMeasurement("Measurement.Metering.GridMs.TotWhIn.ChaSta")
|
||||
}
|
||||
return res / 1e3, err
|
||||
}
|
||||
|
||||
var _ api.Meter = (*Smaevcharger)(nil)
|
||||
|
||||
// CurrentPower implements the api.Meter interface
|
||||
func (wb *Smaevcharger) CurrentPower() (float64, error) {
|
||||
return wb.getMeasurement("Measurement.Metering.GridMs.TotWIn")
|
||||
res, err := wb.getMeasurement("Measurement.Metering.GridMs.TotWIn")
|
||||
if se := new(smaevcharger.ErrUnknownMeasurement); errors.As(err, &se) {
|
||||
res, err = wb.getMeasurement("Measurement.Metering.GridMs.TotWIn.ChaSta")
|
||||
}
|
||||
return res, err
|
||||
}
|
||||
|
||||
var _ api.ChargeRater = (*Smaevcharger)(nil)
|
||||
|
|
@ -252,6 +259,9 @@ var _ api.ChargeRater = (*Smaevcharger)(nil)
|
|||
// ChargedEnergy implements the api.ChargeRater interface
|
||||
func (wb *Smaevcharger) ChargedEnergy() (float64, error) {
|
||||
res, err := wb.getMeasurement("Measurement.ChaSess.WhIn")
|
||||
if se := new(smaevcharger.ErrUnknownMeasurement); errors.As(err, &se) {
|
||||
res, err = wb.getMeasurement("Measurement.Metering.GridMs.TotWhIn.ChaSta")
|
||||
}
|
||||
return res / 1e3, err
|
||||
}
|
||||
|
||||
|
|
@ -317,7 +327,7 @@ func (wb *Smaevcharger) getMeasurement(id string) (float64, error) {
|
|||
}
|
||||
}
|
||||
|
||||
return 0, fmt.Errorf("unknown measurement: %s", id)
|
||||
return 0, &smaevcharger.ErrUnknownMeasurement{Measurement: id}
|
||||
}
|
||||
|
||||
func (wb *Smaevcharger) getParameter(id string) (string, error) {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,14 @@ const (
|
|||
ChargerManualLockDisabled = "5172"
|
||||
)
|
||||
|
||||
type ErrUnknownMeasurement struct {
|
||||
Measurement string
|
||||
}
|
||||
|
||||
func (e *ErrUnknownMeasurement) Error() string {
|
||||
return "unknown measurement: " + e.Measurement
|
||||
}
|
||||
|
||||
// Measurements Data json Response structure
|
||||
type Measurements struct {
|
||||
ChannelId string `json:"channelId"`
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ template: smaevcharger
|
|||
products:
|
||||
- brand: SMA
|
||||
description:
|
||||
generic: EV Charger
|
||||
generic: EV Charger, eCharger
|
||||
capabilities: ["mA"]
|
||||
requirements:
|
||||
evcc: ["sponsorship"]
|
||||
|
|
|
|||
|
|
@ -47,10 +47,10 @@ func NewConfigError(err error) error {
|
|||
return &ConfigError{err}
|
||||
}
|
||||
|
||||
func (e *ConfigError) Error() string {
|
||||
func (e ConfigError) Error() string {
|
||||
return e.err.Error()
|
||||
}
|
||||
|
||||
func (e *ConfigError) Unwrap() error {
|
||||
func (e ConfigError) Unwrap() error {
|
||||
return e.err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue