diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 1c03e2334fe..39af16892f5 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -32,17 +32,8 @@ from homeassistant.const import ( STATE_ON, STATE_UNAVAILABLE, STATE_UNKNOWN, - TEMP_CELSIUS, - TEMP_FAHRENHEIT, -) -from homeassistant.core import ( - CALLBACK_TYPE, - Context, - Event, - HomeAssistant, - callback, - split_entity_id, ) +from homeassistant.core import CALLBACK_TYPE, Context, Event, HomeAssistant, callback from homeassistant.exceptions import HomeAssistantError, NoEntitySpecifiedError from homeassistant.loader import bind_hass from homeassistant.util import dt as dt_util, ensure_unique_string, slugify @@ -259,9 +250,6 @@ class Entity(ABC): # If we reported this entity is updated while disabled _disabled_reported = False - # If we reported this entity is relying on deprecated temperature conversion - _temperature_reported = False - # Protect for multiple updates _update_staged = False @@ -618,58 +606,6 @@ class Entity(ABC): if DATA_CUSTOMIZE in self.hass.data: attr.update(self.hass.data[DATA_CUSTOMIZE].get(self.entity_id)) - def _convert_temperature(state: str, attr: dict[str, Any]) -> str: - # Convert temperature if we detect one - # pylint: disable-next=import-outside-toplevel - from homeassistant.components.sensor import SensorEntity - - unit_of_measure = attr.get(ATTR_UNIT_OF_MEASUREMENT) - units = self.hass.config.units - if unit_of_measure == units.temperature_unit or unit_of_measure not in ( - TEMP_CELSIUS, - TEMP_FAHRENHEIT, - ): - return state - - domain = split_entity_id(self.entity_id)[0] - if domain != "sensor": - if not self._temperature_reported: - self._temperature_reported = True - report_issue = self._suggest_report_issue() - _LOGGER.warning( - "Entity %s (%s) relies on automatic temperature conversion, this will " - "be unsupported in Home Assistant Core 2022.7. Please %s", - self.entity_id, - type(self), - report_issue, - ) - elif not isinstance(self, SensorEntity): - if not self._temperature_reported: - self._temperature_reported = True - report_issue = self._suggest_report_issue() - _LOGGER.warning( - "Temperature sensor %s (%s) does not inherit SensorEntity, " - "this will be unsupported in Home Assistant Core 2022.7." - "Please %s", - self.entity_id, - type(self), - report_issue, - ) - else: - return state - - try: - prec = len(state) - state.index(".") - 1 if "." in state else 0 - temp = units.temperature(float(state), unit_of_measure) - state = str(round(temp) if prec == 0 else round(temp, prec)) - attr[ATTR_UNIT_OF_MEASUREMENT] = units.temperature_unit - except ValueError: - # Could not convert state to float - pass - return state - - state = _convert_temperature(state, attr) - if ( self._context_set is not None and dt_util.utcnow() - self._context_set > self.context_recent_time diff --git a/tests/helpers/test_entity.py b/tests/helpers/test_entity.py index e345d7d7258..7141c5f0903 100644 --- a/tests/helpers/test_entity.py +++ b/tests/helpers/test_entity.py @@ -14,7 +14,6 @@ from homeassistant.const import ( ATTR_DEVICE_CLASS, STATE_UNAVAILABLE, STATE_UNKNOWN, - TEMP_FAHRENHEIT, ) from homeassistant.core import Context, HomeAssistantError from homeassistant.helpers import entity, entity_registry @@ -816,64 +815,6 @@ async def test_float_conversion(hass): assert state.state == "3.6" -async def test_temperature_conversion(hass, caplog): - """Test conversion of temperatures.""" - # Non sensor entity reporting a temperature - with patch.object( - entity.Entity, "state", PropertyMock(return_value=100) - ), patch.object( - entity.Entity, "unit_of_measurement", PropertyMock(return_value=TEMP_FAHRENHEIT) - ): - ent = entity.Entity() - ent.hass = hass - ent.entity_id = "hello.world" - ent.async_write_ha_state() - - state = hass.states.get("hello.world") - assert state is not None - assert state.state == "38" - assert ( - "Entity hello.world () relies on automatic " - "temperature conversion, this will be unsupported in Home Assistant Core 2022.7. " - "Please create a bug report" in caplog.text - ) - - # Sensor entity, not extending SensorEntity, reporting a temperature - with patch.object( - entity.Entity, "state", PropertyMock(return_value=100) - ), patch.object( - entity.Entity, "unit_of_measurement", PropertyMock(return_value=TEMP_FAHRENHEIT) - ): - ent = entity.Entity() - ent.hass = hass - ent.entity_id = "sensor.temp" - ent.async_write_ha_state() - - state = hass.states.get("sensor.temp") - assert state is not None - assert state.state == "38" - assert ( - "Temperature sensor sensor.temp () " - "does not inherit SensorEntity, this will be unsupported in Home Assistant Core " - "2022.7.Please create a bug report" in caplog.text - ) - - # Sensor entity, not extending SensorEntity, not reporting a number - with patch.object( - entity.Entity, "state", PropertyMock(return_value="really warm") - ), patch.object( - entity.Entity, "unit_of_measurement", PropertyMock(return_value=TEMP_FAHRENHEIT) - ): - ent = entity.Entity() - ent.hass = hass - ent.entity_id = "sensor.temp" - ent.async_write_ha_state() - - state = hass.states.get("sensor.temp") - assert state is not None - assert state.state == "really warm" - - async def test_attribution_attribute(hass): """Test attribution attribute.""" mock_entity = entity.Entity()