diff --git a/homeassistant/components/saj/sensor.py b/homeassistant/components/saj/sensor.py index 12a5ae99570..866279af973 100644 --- a/homeassistant/components/saj/sensor.py +++ b/homeassistant/components/saj/sensor.py @@ -181,7 +181,12 @@ class SAJsensor(SensorEntity): _attr_should_poll = False - def __init__(self, serialnumber, pysaj_sensor, inverter_name=None): + def __init__( + self, + serialnumber: str | None, + pysaj_sensor: pysaj.Sensor, + inverter_name: str | None = None, + ) -> None: """Initialize the SAJ sensor.""" self._sensor = pysaj_sensor self._inverter_name = inverter_name @@ -193,38 +198,28 @@ class SAJsensor(SensorEntity): if pysaj_sensor.name == "total_yield": self._attr_state_class = SensorStateClass.TOTAL_INCREASING - @property - def name(self) -> str: - """Return the name of the sensor.""" + self._attr_unique_id = f"{serialnumber}_{pysaj_sensor.name}" + native_uom = SAJ_UNIT_MAPPINGS[pysaj_sensor.unit] + self._attr_native_unit_of_measurement = native_uom if self._inverter_name: - return f"saj_{self._inverter_name}_{self._sensor.name}" - - return f"saj_{self._sensor.name}" + self._attr_name = f"saj_{self._inverter_name}_{pysaj_sensor.name}" + else: + self._attr_name = f"saj_{pysaj_sensor.name}" + if native_uom == UnitOfPower.WATT: + self._attr_device_class = SensorDeviceClass.POWER + if native_uom == UnitOfEnergy.KILO_WATT_HOUR: + self._attr_device_class = SensorDeviceClass.ENERGY + if native_uom in ( + UnitOfTemperature.CELSIUS, + UnitOfTemperature.FAHRENHEIT, + ): + self._attr_device_class = SensorDeviceClass.TEMPERATURE @property def native_value(self): """Return the state of the sensor.""" return self._state - @property - def native_unit_of_measurement(self) -> str | None: - """Return the unit the value is expressed in.""" - return SAJ_UNIT_MAPPINGS[self._sensor.unit] - - @property - def device_class(self) -> SensorDeviceClass | None: - """Return the device class the sensor belongs to.""" - if self.native_unit_of_measurement == UnitOfPower.WATT: - return SensorDeviceClass.POWER - if self.native_unit_of_measurement == UnitOfEnergy.KILO_WATT_HOUR: - return SensorDeviceClass.ENERGY - if self.native_unit_of_measurement in ( - UnitOfTemperature.CELSIUS, - UnitOfTemperature.FAHRENHEIT, - ): - return SensorDeviceClass.TEMPERATURE - return None - @property def per_day_basis(self) -> bool: """Return if the sensors value is on daily basis or not.""" @@ -255,8 +250,3 @@ class SAJsensor(SensorEntity): if update: self.async_write_ha_state() - - @property - def unique_id(self) -> str: - """Return a unique identifier for this sensor.""" - return f"{self._serialnumber}_{self._sensor.name}"