1 """Support for Aurora ABB PowerOne Solar Photovoltaic (PV) inverter."""
3 from __future__
import annotations
5 from collections.abc
import Mapping
9 from aurorapy.mapping
import Mapping
as AuroraMapping
14 SensorEntityDescription,
20 UnitOfElectricCurrent,
21 UnitOfElectricPotential,
41 from .coordinator
import AuroraAbbConfigEntry, AuroraAbbDataUpdateCoordinator
43 _LOGGER = logging.getLogger(__name__)
44 ALARM_STATES =
list(AuroraMapping.ALARM_STATES.values())
49 device_class=SensorDeviceClass.VOLTAGE,
50 entity_category=EntityCategory.DIAGNOSTIC,
51 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
52 state_class=SensorStateClass.MEASUREMENT,
53 translation_key=
"grid_voltage",
54 entity_registry_enabled_default=
False,
58 device_class=SensorDeviceClass.CURRENT,
59 entity_category=EntityCategory.DIAGNOSTIC,
60 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
61 state_class=SensorStateClass.MEASUREMENT,
62 translation_key=
"grid_current",
63 entity_registry_enabled_default=
False,
67 device_class=SensorDeviceClass.FREQUENCY,
68 entity_category=EntityCategory.DIAGNOSTIC,
69 native_unit_of_measurement=UnitOfFrequency.HERTZ,
70 state_class=SensorStateClass.MEASUREMENT,
71 entity_registry_enabled_default=
False,
75 device_class=SensorDeviceClass.CURRENT,
76 entity_category=EntityCategory.DIAGNOSTIC,
77 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
78 state_class=SensorStateClass.MEASUREMENT,
79 translation_key=
"i_leak_dcdc",
80 entity_registry_enabled_default=
False,
83 key=
"i_leak_inverter",
84 device_class=SensorDeviceClass.CURRENT,
85 entity_category=EntityCategory.DIAGNOSTIC,
86 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
87 state_class=SensorStateClass.MEASUREMENT,
88 translation_key=
"i_leak_inverter",
89 entity_registry_enabled_default=
False,
93 device_class=SensorDeviceClass.ENUM,
95 entity_category=EntityCategory.DIAGNOSTIC,
96 translation_key=
"alarm",
99 key=
"instantaneouspower",
100 device_class=SensorDeviceClass.POWER,
101 native_unit_of_measurement=UnitOfPower.WATT,
102 state_class=SensorStateClass.MEASUREMENT,
103 translation_key=
"power_output",
107 device_class=SensorDeviceClass.TEMPERATURE,
108 entity_category=EntityCategory.DIAGNOSTIC,
109 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
110 state_class=SensorStateClass.MEASUREMENT,
114 entity_category=EntityCategory.DIAGNOSTIC,
115 native_unit_of_measurement=
"MOhms",
116 state_class=SensorStateClass.MEASUREMENT,
117 translation_key=
"r_iso",
118 entity_registry_enabled_default=
False,
122 device_class=SensorDeviceClass.ENERGY,
123 native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
124 state_class=SensorStateClass.TOTAL_INCREASING,
125 translation_key=
"total_energy",
132 config_entry: AuroraAbbConfigEntry,
133 async_add_entities: AddEntitiesCallback,
135 """Set up aurora_abb_powerone sensor based on a config entry."""
137 coordinator = config_entry.runtime_data
138 data = config_entry.data
140 entities = [
AuroraSensor(coordinator, data, sens)
for sens
in SENSOR_TYPES]
142 _LOGGER.debug(
"async_setup_entry adding %d entities", len(entities))
147 """Representation of a Sensor on an Aurora ABB PowerOne Solar inverter."""
149 _attr_has_entity_name =
True
153 coordinator: AuroraAbbDataUpdateCoordinator,
154 data: Mapping[str, Any],
155 entity_description: SensorEntityDescription,
157 """Initialize the sensor."""
160 self.
_attr_unique_id_attr_unique_id = f
"{data[ATTR_SERIAL_NUMBER]}_{entity_description.key}"
162 identifiers={(DOMAIN, data[ATTR_SERIAL_NUMBER])},
163 manufacturer=MANUFACTURER,
164 model=data[ATTR_MODEL],
165 name=data.get(ATTR_DEVICE_NAME, DEFAULT_DEVICE_NAME),
166 sw_version=data[ATTR_FIRMWARE],
171 """Get the value of the sensor from previously collected data."""
None __init__(self, AuroraAbbDataUpdateCoordinator coordinator, Mapping[str, Any] data, SensorEntityDescription entity_description)
StateType native_value(self)
None async_setup_entry(HomeAssistant hass, AuroraAbbConfigEntry config_entry, AddEntitiesCallback async_add_entities)