Skip to content

Commit f19942d

Browse files
Merge pull request #51 from WillCodeForCats/50-platform-solaredge_modbus_multi-does-not-generate-unique-ids
Check for duplicate meter serial numbers
2 parents 79f64f4 + e45a558 commit f19942d

File tree

1 file changed

+21
-3
lines changed
  • custom_components/solaredge_modbus_multi

1 file changed

+21
-3
lines changed

custom_components/solaredge_modbus_multi/hub.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,19 +87,37 @@ async def async_init_solaredge(self) -> None:
8787

8888
if self._detect_meters:
8989
try:
90-
self.meters.append(SolarEdgeMeter(inverter_unit_id, 1, self))
90+
new_meter_1 = SolarEdgeMeter(inverter_unit_id, 1, self)
91+
for meter in self.meters:
92+
if new_meter_1.serial == meter.serial:
93+
_LOGGER.error(f"Duplicate serial {new_meter_1.serial}. Ignoring meter 1 on inverter ID {inverter_unit_id}")
94+
raise RuntimeError(f"Duplicate meter 1 serial {new_meter_1.serial}")
95+
96+
self.meters.append(new_meter_1)
9197
_LOGGER.debug(f"Found meter 1 on inverter ID {inverter_unit_id}")
9298
except:
9399
pass
94100

95101
try:
96-
self.meters.append(SolarEdgeMeter(inverter_unit_id, 2, self))
102+
new_meter_2 = SolarEdgeMeter(inverter_unit_id, 2, self)
103+
for meter in self.meters:
104+
if new_meter_2.serial == meter.serial:
105+
_LOGGER.error(f"Duplicate serial {new_meter_2.serial}. Ignoring meter 2 on inverter ID {inverter_unit_id}")
106+
raise RuntimeError(f"Duplicate meter 2 serial {new_meter_2.serial}")
107+
108+
self.meters.append(new_meter_2)
97109
_LOGGER.debug(f"Found meter 2 on inverter ID {inverter_unit_id}")
98110
except:
99111
pass
100112

101113
try:
102-
self.meters.append(SolarEdgeMeter(inverter_unit_id, 3, self))
114+
new_meter_3 = SolarEdgeMeter(inverter_unit_id, 3, self)
115+
for meter in self.meters:
116+
if new_meter_3.serial == meter.serial:
117+
_LOGGER.error(f"Duplicate serial {new_meter_3.serial}. Ignoring meter 3 on inverter ID {inverter_unit_id}")
118+
raise RuntimeError(f"Duplicate meter 3 serial {new_meter_3.serial}")
119+
120+
self.meters.append(new_meter_3)
103121
_LOGGER.debug(f"Found meter 3 on inverter ID {inverter_unit_id}")
104122
except:
105123
pass

0 commit comments

Comments
 (0)