diff --git a/meter/shelly/connection.go b/meter/shelly/connection.go index 15cdbb0db..77fa98147 100644 --- a/meter/shelly/connection.go +++ b/meter/shelly/connection.go @@ -87,12 +87,15 @@ func (d *Connection) CurrentPower() (float64, error) { return 0, err } - if d.channel >= len(res.Meters) { + switch { + case d.channel < len(res.Meters): + power = res.Meters[d.channel].Power + case d.channel < len(res.EMeters): + power = res.EMeters[d.channel].Power + default: return 0, errors.New("invalid channel, missing power meter") } - power = res.Meters[d.channel].Power - default: var res Gen2StatusResponse if err := d.execGen2Cmd("Shelly.GetStatus", false, &res); err != nil { diff --git a/meter/shelly/types.go b/meter/shelly/types.go index e8baf0567..b3fa4fde0 100644 --- a/meter/shelly/types.go +++ b/meter/shelly/types.go @@ -42,4 +42,8 @@ type Gen1StatusResponse struct { Meters []struct { Power float64 } + // Shelly EM meter JSON response + EMeters []struct { + Power float64 + } }