Skip to content

Commit 8a9944a

Browse files
authored
TP-Link Tapo: handle concurrent handshakes (#25551)
1 parent e6fe76f commit 8a9944a

File tree

3 files changed

+15
-21
lines changed

3 files changed

+15
-21
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ require (
5959
github.com/hasura/go-graphql-client v0.15.0
6060
github.com/holoplot/go-evdev v0.0.0-20240306072622-217e18f17db1
6161
github.com/influxdata/influxdb-client-go/v2 v2.14.0
62-
github.com/insomniacslk/tapo v1.0.1
62+
github.com/insomniacslk/tapo v1.0.2
6363
github.com/itchyny/gojq v0.12.17
6464
github.com/jarcoal/httpmock v1.4.1
6565
github.com/jeremywohl/flatten v1.0.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,8 +403,8 @@ github.com/influxdata/influxdb-client-go/v2 v2.14.0/go.mod h1:Ahpm3QXKMJslpXl3If
403403
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
404404
github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf h1:7JTmneyiNEwVBOHSjoMxiWAqB992atOeepeFYegn5RU=
405405
github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
406-
github.com/insomniacslk/tapo v1.0.1 h1:W7K/1SXR8fvCNqY1Qg+GB3ELUjsHAqXtBjBjes7aRQ0=
407-
github.com/insomniacslk/tapo v1.0.1/go.mod h1:1wuMYu0+alZ4oE4BIzxAwQNveZgbb2tRqiIUwIe7SZE=
406+
github.com/insomniacslk/tapo v1.0.2 h1:o2Bz941/Kp3LEjO5kvBbAE9Z4z9BcQMXRols3QkTnI0=
407+
github.com/insomniacslk/tapo v1.0.2/go.mod h1:1wuMYu0+alZ4oE4BIzxAwQNveZgbb2tRqiIUwIe7SZE=
408408
github.com/insomniacslk/xjson v0.0.0-20240821125711-1236daaf6808 h1:BVD0pRpDWgbzkPYACLLPomriAnUGVfFdFoxs7aCLJkY=
409409
github.com/insomniacslk/xjson v0.0.0-20240821125711-1236daaf6808/go.mod h1:Z4EVr4bVv9LZbbje9xyZEyOLpdCOmCvr5S9BJtrdTfw=
410410
github.com/itchyny/gojq v0.12.17 h1:8av8eGduDb5+rvEdaOO+zQUjA04MS0m3Ps8HiD+fceg=

meter/tapo/connection.go

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -65,24 +65,14 @@ func (c *Connection) Enable(enable bool) error {
6565

6666
// Enabled implements the api.Charger interface
6767
func (c *Connection) Enabled() (bool, error) {
68-
resp, err := c.plug.GetDeviceInfo()
69-
if err != nil {
70-
return false, err
71-
}
72-
73-
return resp.DeviceON, nil
68+
return c.plug.IsOn()
7469
}
7570

7671
// CurrentPower provides current power consuption
7772
func (c *Connection) CurrentPower() (float64, error) {
7873
resp, err := c.plug.GetEnergyUsage()
7974
if err != nil {
80-
if strings.Contains(err.Error(), "-1001") {
81-
c.log.DEBUG.Printf("meter not available")
82-
return 0, nil
83-
} else {
84-
return 0, err
85-
}
75+
return 0, c.checkMeterError(err)
8676
}
8777

8878
return float64(resp.CurrentPower) / 1e3, nil
@@ -92,12 +82,7 @@ func (c *Connection) CurrentPower() (float64, error) {
9282
func (c *Connection) ChargedEnergy() (float64, error) {
9383
resp, err := c.plug.GetEnergyUsage()
9484
if err != nil {
95-
if strings.Contains(err.Error(), "-1001") {
96-
c.log.DEBUG.Printf("meter not available")
97-
return 0, nil
98-
} else {
99-
return 0, err
100-
}
85+
return 0, c.checkMeterError(err)
10186
}
10287

10388
if int64(resp.TodayEnergy) > c.lasttodayenergy {
@@ -107,3 +92,12 @@ func (c *Connection) ChargedEnergy() (float64, error) {
10792

10893
return float64(c.energy) / 1000, nil
10994
}
95+
96+
// checkMeterError checks for missing meter error
97+
func (c *Connection) checkMeterError(err error) error {
98+
if strings.Contains(err.Error(), "-1001") {
99+
return nil
100+
}
101+
102+
return err
103+
}

0 commit comments

Comments
 (0)