Warp: fix meter currents detection
This commit is contained in:
parent
20a8acb365
commit
07e45634c4
1 changed files with 17 additions and 3 deletions
|
|
@ -59,17 +59,18 @@ func NewWarpFromConfig(other map[string]interface{}) (api.Charger, error) {
|
|||
util.NewLogger("warp").WARN.Println("usemeter is deprecated and will be removed in a future release")
|
||||
}
|
||||
|
||||
isPro := wb.isPro()
|
||||
_ = wb.isPro()
|
||||
hasMeter := wb.hasMeter()
|
||||
|
||||
var currentPower func() (float64, error)
|
||||
var totalEnergy func() (float64, error)
|
||||
if isPro || wb.hasMeter() {
|
||||
if hasMeter {
|
||||
currentPower = wb.currentPower
|
||||
totalEnergy = wb.totalEnergy
|
||||
}
|
||||
|
||||
var currents func() (float64, float64, float64, error)
|
||||
if isPro {
|
||||
if hasMeter && wb.hasCurrents() {
|
||||
currents = wb.currents
|
||||
}
|
||||
|
||||
|
|
@ -137,6 +138,19 @@ func (wb *Warp) hasMeter() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (wb *Warp) hasCurrents() bool {
|
||||
if state, err := provider.NewMqtt(wb.log, wb.client,
|
||||
fmt.Sprintf("%s/meter/detailed_values", wb.root), 1, 0,
|
||||
).StringGetter()(); err == nil {
|
||||
var res []float64
|
||||
if err := json.Unmarshal([]byte(state), &res); err == nil {
|
||||
return len(res) > 5
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (wb *Warp) isPro() bool {
|
||||
if state, err := provider.NewMqtt(wb.log, wb.client,
|
||||
fmt.Sprintf("%s/evse/low_level_state", wb.root), 1, 0,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue