Skip to content

Commit 8a47be9

Browse files
authored
shelly: 2 channel shelly (#3021)
* shelly: 2 channel shelly * fix * fix alphabetical index
1 parent fefe783 commit 8a47be9

3 files changed

Lines changed: 6 additions & 2 deletions

File tree

packages/modules/devices/shelly/shelly/bat.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ def update(self) -> None:
6666
elif "em:0" in status:
6767
meters = status['em:0']
6868
for i in range(0, 3):
69+
if meters.get(f'{alphabetical_index[i]}_current') is None:
70+
continue
6971
currents[(i+self.phase-1) % 3] = (float(meters[f'{alphabetical_index[i]}_current']) * self.factor
7072
if meters.get(f'{alphabetical_index[i]}_current') else 0)
7173
power = float(meters['total_act_power']) * self.factor

packages/modules/devices/shelly/shelly/counter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ def update(self) -> None:
8282
power_factors = [0.0, 0.0, 0.0]
8383
meters = status['em:0']
8484
for i in range(0, 3):
85+
if meters.get(f'{alphabetical_index[i]}_act_power') is None:
86+
continue
8587
powers[(i+self.phase-1) % 3] = (float(meters[f'{alphabetical_index[i]}_act_power']) * self.factor
8688
if meters.get(f'{alphabetical_index[i]}_act_power') else 0)
8789
voltages[(i+self.phase-1) % 3] = (float(meters[f'{alphabetical_index[i]}_voltage'])

packages/modules/devices/shelly/shelly/inverter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ def update(self) -> None:
5656
elif "emeters" in status:
5757
meters = status['emeters'] # shellyEM & shelly3EM
5858
# shellyEM has one meter, shelly3EM has three meters
59-
for i in range(0, 3):
59+
for i in range(len(meters)):
6060
currents[(i+self.phase-1) % 3] = (float(meters[i]['current']) * self.factor
6161
if meters[i].get('current') else 0)
6262
power = power + (float(meters[i]['power'] * self.factor))
6363
# GEN 2+
6464
# shelly Pro3EM
6565
elif "em:0" in status:
6666
meters = status['em:0']
67-
for i in range(0, 3):
67+
for i in range(len(meters)):
6868
currents[(i+self.phase-1) % 3] = (float(meters[f'{alphabetical_index[i]}_current']) * self.factor
6969
if meters.get(f'{alphabetical_index[i]}_current') else 0)
7070
power = float(meters['total_act_power']) * self.factor

0 commit comments

Comments
 (0)