Fix unique_id of S0 meters connected to Fronius inverters (#61408)

This commit is contained in:
Matthias Alphart 2021-12-10 00:35:20 +01:00 committed by GitHub
parent 58174eaa4e
commit 4f9d4872a7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 462 additions and 15 deletions

View file

@ -784,15 +784,22 @@ class MeterSensor(_FroniusSensorEntity):
self._entity_id_prefix = f"meter_{solar_net_id}"
super().__init__(coordinator, key, solar_net_id)
meter_data = self._device_data()
# S0 meters connected directly to inverters respond "n.a." as serial number
# `model` contains the inverter id: "S0 Meter at inverter 1"
if (meter_uid := meter_data["serial"]["value"]) == "n.a.":
meter_uid = (
f"{coordinator.solar_net.solar_net_device_id}:"
f'{meter_data["model"]["value"]}'
)
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, meter_data["serial"]["value"])},
identifiers={(DOMAIN, meter_uid)},
manufacturer=meter_data["manufacturer"]["value"],
model=meter_data["model"]["value"],
name=meter_data["model"]["value"],
via_device=(DOMAIN, coordinator.solar_net.solar_net_device_id),
)
self._attr_unique_id = f'{meter_data["serial"]["value"]}-{key}'
self._attr_unique_id = f"{meter_uid}-{key}"
class OhmpilotSensor(_FroniusSensorEntity):