Shelly PM Mini Gen3: read device status (#14670)
This commit is contained in:
parent
50d5362f51
commit
a34e7ae46c
3 changed files with 29 additions and 13 deletions
|
|
@ -49,11 +49,11 @@ func (sh *Switch) CurrentPower() (float64, error) {
|
|||
|
||||
switch d.channel {
|
||||
case 1:
|
||||
power = res.Switch1.Apower
|
||||
power = res.Switch1.Apower + res.Pm1.Apower
|
||||
case 2:
|
||||
power = res.Switch2.Apower
|
||||
power = res.Switch2.Apower + res.Pm2.Apower
|
||||
default:
|
||||
power = res.Switch0.Apower
|
||||
power = res.Switch0.Apower + res.Pm0.Apower
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -130,11 +130,11 @@ func (sh *Switch) TotalEnergy() (float64, error) {
|
|||
|
||||
switch d.channel {
|
||||
case 1:
|
||||
energy = res.Switch1.Aenergy.Total
|
||||
energy = res.Switch1.Aenergy.Total + res.Pm1.Aenergy.Total
|
||||
case 2:
|
||||
energy = res.Switch2.Aenergy.Total
|
||||
energy = res.Switch2.Aenergy.Total + res.Pm2.Aenergy.Total
|
||||
default:
|
||||
energy = res.Switch0.Aenergy.Total
|
||||
energy = res.Switch0.Aenergy.Total + res.Pm0.Aenergy.Total
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ type Gen2StatusResponse struct {
|
|||
Switch0 Gen2Switch `json:"switch:0"`
|
||||
Switch1 Gen2Switch `json:"switch:1"`
|
||||
Switch2 Gen2Switch `json:"switch:2"`
|
||||
Pm0 Gen2Switch `json:"pm1:0"`
|
||||
Pm1 Gen2Switch `json:"pm2:1"`
|
||||
Pm2 Gen2Switch `json:"pm3:2"`
|
||||
}
|
||||
|
||||
type Gen2EmStatusResponse struct {
|
||||
|
|
|
|||
|
|
@ -44,14 +44,27 @@ func TestUnmarshalGen1StatusResponse(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// Test Gen2StatusResponse response
|
||||
// Test Gen2+ status responses
|
||||
func TestUnmarshalGen2StatusResponse(t *testing.T) {
|
||||
// Shelly Pro 1PM channel 0 (1)
|
||||
var res Gen2StatusResponse
|
||||
{
|
||||
// Shelly Pro 1PM channel 0 (1)
|
||||
var res Gen2StatusResponse
|
||||
|
||||
jsonstr := `{"ble":{},"cloud":{"connected":true},"eth":{"ip":null},"input:0":{"id":0,"state":false},"input:1":{"id":1,"state":false},"mqtt":{"connected":false},"switch:0":{"id":0, "source":"HTTP", "output":false, "apower":47.11, "voltage":232.0, "current":0.000, "pf":0.00, "aenergy":{"total":5.125,"by_minute":[0.000,0.000,0.000],"minute_ts":1675718520},"temperature":{"tC":25.3, "tF":77.5}},"sys":{"mac":"30C6F78BB4D8","restart_required":false,"time":"22:22","unixtime":1675718522,"uptime":45070,"ram_size":234204,"ram_free":137716,"fs_size":524288,"fs_free":172032,"cfg_rev":13,"kvs_rev":1,"schedule_rev":0,"webhook_rev":0,"available_updates":{"beta":{"version":"0.13.0-beta3"}}},"wifi":{"sta_ip":"192.168.178.64","status":"got ip","ssid":"***","rssi":-62},"ws":{"connected":false}}`
|
||||
require.NoError(t, json.Unmarshal([]byte(jsonstr), &res))
|
||||
jsonstr := `{"ble":{},"cloud":{"connected":true},"eth":{"ip":null},"input:0":{"id":0,"state":false},"input:1":{"id":1,"state":false},"mqtt":{"connected":false},"switch:0":{"id":0, "source":"HTTP", "output":false, "apower":47.11, "voltage":232.0, "current":0.000, "pf":0.00, "aenergy":{"total":5.125,"by_minute":[0.000,0.000,0.000],"minute_ts":1675718520},"temperature":{"tC":25.3, "tF":77.5}},"sys":{"mac":"30C6F78BB4D8","restart_required":false,"time":"22:22","unixtime":1675718522,"uptime":45070,"ram_size":234204,"ram_free":137716,"fs_size":524288,"fs_free":172032,"cfg_rev":13,"kvs_rev":1,"schedule_rev":0,"webhook_rev":0,"available_updates":{"beta":{"version":"0.13.0-beta3"}}},"wifi":{"sta_ip":"192.168.178.64","status":"got ip","ssid":"***","rssi":-62},"ws":{"connected":false}}`
|
||||
require.NoError(t, json.Unmarshal([]byte(jsonstr), &res))
|
||||
|
||||
assert.Equal(t, 5.125, res.Switch0.Aenergy.Total)
|
||||
assert.Equal(t, 47.11, res.Switch0.Apower)
|
||||
assert.Equal(t, 5.125, res.Switch0.Aenergy.Total)
|
||||
assert.Equal(t, 47.11, res.Switch0.Apower)
|
||||
}
|
||||
|
||||
{
|
||||
// Shelly PM Mini Gen3 channel 0 (1)
|
||||
var res Gen2StatusResponse
|
||||
|
||||
jsonstr := `{"ble":{},"cloud":{"connected":true},"mqtt":{"connected":false},"pm1:0":{"id":0, "voltage":239.9, "current":7.434, "apower":1780.1 ,"freq":50.1,"aenergy":{"total":3551.682,"by_minute":[15234.772,29611.247,29825.821],"minute_ts":1719917850},"ret_aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1719917850}},"sys":{"mac":"84FCE638D818","restart_required":false,"time":"12:57","unixtime":1719917851,"uptime":62328,"ram_size":261744,"ram_free":151436,"fs_size":1048576,"fs_free":712704,"cfg_rev":10,"kvs_rev":1,"schedule_rev":0,"webhook_rev":0,"available_updates":{"stable":{"version":"1.3.3"}},"reset_reason":1},"wifi":{"sta_ip":"192.168.178.89","status":"got ip","ssid":"FritzBox 8 2.4","rssi":-62},"ws":{"connected":false}}`
|
||||
require.NoError(t, json.Unmarshal([]byte(jsonstr), &res))
|
||||
|
||||
assert.Equal(t, 3551.682, res.Pm0.Aenergy.Total)
|
||||
assert.Equal(t, 1780.1, res.Pm0.Apower)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue