From c8b6698dcbe4ef4a1a4f460838e7f2900483cb69 Mon Sep 17 00:00:00 2001 From: Markus Thierolf <77847348+thierolm@users.noreply.github.com> Date: Fri, 2 Sep 2022 11:26:55 +0200 Subject: [PATCH] Add Shelly EM (2 channels) meter (#4273) --- meter/shelly/connection.go | 9 ++++++--- meter/shelly/types.go | 4 ++++ 2 files changed, 10 insertions(+), 3 deletions(-) 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 + } }