TP-Link Tapo: handle concurrent handshakes (#25551)
This commit is contained in:
parent
e6fe76f293
commit
8a9944a113
3 changed files with 15 additions and 21 deletions
2
go.mod
2
go.mod
|
|
@ -59,7 +59,7 @@ require (
|
|||
github.com/hasura/go-graphql-client v0.15.0
|
||||
github.com/holoplot/go-evdev v0.0.0-20240306072622-217e18f17db1
|
||||
github.com/influxdata/influxdb-client-go/v2 v2.14.0
|
||||
github.com/insomniacslk/tapo v1.0.1
|
||||
github.com/insomniacslk/tapo v1.0.2
|
||||
github.com/itchyny/gojq v0.12.17
|
||||
github.com/jarcoal/httpmock v1.4.1
|
||||
github.com/jeremywohl/flatten v1.0.1
|
||||
|
|
|
|||
4
go.sum
4
go.sum
|
|
@ -403,8 +403,8 @@ github.com/influxdata/influxdb-client-go/v2 v2.14.0/go.mod h1:Ahpm3QXKMJslpXl3If
|
|||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf h1:7JTmneyiNEwVBOHSjoMxiWAqB992atOeepeFYegn5RU=
|
||||
github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
|
||||
github.com/insomniacslk/tapo v1.0.1 h1:W7K/1SXR8fvCNqY1Qg+GB3ELUjsHAqXtBjBjes7aRQ0=
|
||||
github.com/insomniacslk/tapo v1.0.1/go.mod h1:1wuMYu0+alZ4oE4BIzxAwQNveZgbb2tRqiIUwIe7SZE=
|
||||
github.com/insomniacslk/tapo v1.0.2 h1:o2Bz941/Kp3LEjO5kvBbAE9Z4z9BcQMXRols3QkTnI0=
|
||||
github.com/insomniacslk/tapo v1.0.2/go.mod h1:1wuMYu0+alZ4oE4BIzxAwQNveZgbb2tRqiIUwIe7SZE=
|
||||
github.com/insomniacslk/xjson v0.0.0-20240821125711-1236daaf6808 h1:BVD0pRpDWgbzkPYACLLPomriAnUGVfFdFoxs7aCLJkY=
|
||||
github.com/insomniacslk/xjson v0.0.0-20240821125711-1236daaf6808/go.mod h1:Z4EVr4bVv9LZbbje9xyZEyOLpdCOmCvr5S9BJtrdTfw=
|
||||
github.com/itchyny/gojq v0.12.17 h1:8av8eGduDb5+rvEdaOO+zQUjA04MS0m3Ps8HiD+fceg=
|
||||
|
|
|
|||
|
|
@ -65,24 +65,14 @@ func (c *Connection) Enable(enable bool) error {
|
|||
|
||||
// Enabled implements the api.Charger interface
|
||||
func (c *Connection) Enabled() (bool, error) {
|
||||
resp, err := c.plug.GetDeviceInfo()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
return resp.DeviceON, nil
|
||||
return c.plug.IsOn()
|
||||
}
|
||||
|
||||
// CurrentPower provides current power consuption
|
||||
func (c *Connection) CurrentPower() (float64, error) {
|
||||
resp, err := c.plug.GetEnergyUsage()
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "-1001") {
|
||||
c.log.DEBUG.Printf("meter not available")
|
||||
return 0, nil
|
||||
} else {
|
||||
return 0, err
|
||||
}
|
||||
return 0, c.checkMeterError(err)
|
||||
}
|
||||
|
||||
return float64(resp.CurrentPower) / 1e3, nil
|
||||
|
|
@ -92,12 +82,7 @@ func (c *Connection) CurrentPower() (float64, error) {
|
|||
func (c *Connection) ChargedEnergy() (float64, error) {
|
||||
resp, err := c.plug.GetEnergyUsage()
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "-1001") {
|
||||
c.log.DEBUG.Printf("meter not available")
|
||||
return 0, nil
|
||||
} else {
|
||||
return 0, err
|
||||
}
|
||||
return 0, c.checkMeterError(err)
|
||||
}
|
||||
|
||||
if int64(resp.TodayEnergy) > c.lasttodayenergy {
|
||||
|
|
@ -107,3 +92,12 @@ func (c *Connection) ChargedEnergy() (float64, error) {
|
|||
|
||||
return float64(c.energy) / 1000, nil
|
||||
}
|
||||
|
||||
// checkMeterError checks for missing meter error
|
||||
func (c *Connection) checkMeterError(err error) error {
|
||||
if strings.Contains(err.Error(), "-1001") {
|
||||
return nil
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue