@@ -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