diff --git a/charger/shelly.go b/charger/shelly.go index 443954776d..6d8438b863 100644 --- a/charger/shelly.go +++ b/charger/shelly.go @@ -161,12 +161,25 @@ func (c *Shelly) MaxCurrent(current int64) error { // Status implements the api.Charger interface func (c *Shelly) Status() (api.ChargeStatus, error) { + res := api.StatusB + + // static mode + if c.standbypower < 0 { + on, err := c.Enabled() + if on { + res = api.StatusC + } + + return res, err + } + + // standby power mode power, err := c.CurrentPower() if power > c.standbypower { - return api.StatusC, err + res = api.StatusC } - return api.StatusB, err + return res, err } var _ api.Meter = (*Shelly)(nil) diff --git a/charger/tasmota.go b/charger/tasmota.go index 17d6c84152..7977a3ced3 100644 --- a/charger/tasmota.go +++ b/charger/tasmota.go @@ -100,14 +100,25 @@ func (c *Tasmota) MaxCurrent(current int64) error { // Status implements the api.Charger interface func (c *Tasmota) Status() (api.ChargeStatus, error) { - power, err := c.CurrentPower() + res := api.StatusB - switch { - case power > 0: - return api.StatusC, err - default: - return api.StatusB, err + // static mode + if c.standbypower < 0 { + on, err := c.Enabled() + if on { + res = api.StatusC + } + + return res, err } + + // standby power mode + power, err := c.CurrentPower() + if power > c.standbypower { + res = api.StatusC + } + + return res, err } var _ api.Meter = (*Tasmota)(nil) diff --git a/charger/tplink.go b/charger/tplink.go index 69c1b04f51..13d157340c 100644 --- a/charger/tplink.go +++ b/charger/tplink.go @@ -98,14 +98,25 @@ func (c *TPLink) MaxCurrent(current int64) error { // Status implements the api.Charger interface func (c *TPLink) Status() (api.ChargeStatus, error) { - power, err := c.CurrentPower() + res := api.StatusB + + // static mode + if c.standbypower < 0 { + on, err := c.Enabled() + if on { + res = api.StatusC + } + + return res, err + } - switch { - case power > 0: - return api.StatusC, err - default: - return api.StatusB, err + // standby power mode + power, err := c.CurrentPower() + if power > c.standbypower { + res = api.StatusC } + + return res, err } var _ api.Meter = (*TPLink)(nil)