diff --git a/charger/warp.go b/charger/warp.go index 92074d5d4..131a9e3ed 100644 --- a/charger/warp.go +++ b/charger/warp.go @@ -55,11 +55,10 @@ func NewWarpFromConfig(other map[string]interface{}) (api.Charger, error) { } if cc.UseMeter != nil { - // TODO remove + // TODO deprecated util.NewLogger("warp").WARN.Println("usemeter is deprecated and will be removed in a future release") } - _ = wb.isPro() hasMeter := wb.hasMeter() var currentPower func() (float64, error) @@ -131,7 +130,7 @@ func (wb *Warp) hasMeter() bool { ).StringGetter()(); err == nil { var res warp.MeterState if err := json.Unmarshal([]byte(state), &res); err == nil { - return res.State == 2 + return res.State == 2 || len(res.PhasesConnected) > 0 } } @@ -151,19 +150,6 @@ func (wb *Warp) hasCurrents() bool { 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, - ).StringGetter()(); err == nil { - var res warp.LowLevelState - if err := json.Unmarshal([]byte(state), &res); err == nil { - return len(res.AdcValues) > 2 - } - } - - return false -} - // Enable implements the api.Charger interface func (wb *Warp) Enable(enable bool) error { // set auto_start_charging @@ -187,8 +173,8 @@ func (wb *Warp) Enable(enable bool) error { return err } -func (wb *Warp) status() (warp.Status, error) { - var res warp.Status +func (wb *Warp) status() (warp.EvseState, error) { + var res warp.EvseState s, err := wb.statusG() if err == nil { @@ -217,7 +203,7 @@ func (wb *Warp) autostart() (bool, error) { func (wb *Warp) isEnabled() (bool, error) { enabled, err := wb.autostart() - var status warp.Status + var status warp.EvseState if err == nil { status, err = wb.status() } @@ -259,7 +245,7 @@ func (wb *Warp) Enabled() (bool, error) { // Status implements the api.Charger interface func (wb *Warp) Status() (api.ChargeStatus, error) { - var status warp.Status + var status warp.EvseState s, err := wb.statusG() if err == nil { diff --git a/charger/warp/types.go b/charger/warp/types.go index f429bb36d..69326dab7 100644 --- a/charger/warp/types.go +++ b/charger/warp/types.go @@ -7,7 +7,8 @@ const ( Timeout = 30 * time.Second ) -type Status struct { +// https://www.warp-charger.com/api.html#evse_state +type EvseState struct { Iec61851State int `json:"iec61851_state"` VehicleState int `json:"vehicle_state"` ChargeRelease int `json:"charge_release"` @@ -20,6 +21,7 @@ type Status struct { Uptime int64 `json:"uptime"` } +// https://www.warp-charger.com/api.html#evse_low_level_state type LowLevelState struct { LedState int `json:"led_state"` CpPwmDutyCycle int `json:"cp_pwm_duty_cycle"` @@ -29,9 +31,12 @@ type LowLevelState struct { Gpio []bool } +// https://www.warp-charger.com/api.html#meter_state type MeterState struct { - State int `json:"state"` // Warp 1 only - Power float64 `json:"power"` - EnergyRel float64 `json:"energy_rel"` - EnergyAbs float64 `json:"energy_abs"` + State int `json:"state"` // Warp 1 only + Power float64 `json:"power"` + EnergyRel float64 `json:"energy_rel"` + EnergyAbs float64 `json:"energy_abs"` + PhasesActive []bool `json:"phases_active"` + PhasesConnected []bool `json:"phases_connected"` }