mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 13:47:35 +00:00
Change precision of Nest sensors (#56993)
* Change precision of Nest sensors * Add comment to temp rounding Co-authored-by: Allen Porter <allen.porter@gmail.com> * Update rounding and tests * Add test for rounding Co-authored-by: Allen Porter <allen.porter@gmail.com>
This commit is contained in:
parent
93b061e9d9
commit
e481c862a6
@ -89,7 +89,10 @@ class TemperatureSensor(SensorBase):
|
|||||||
def native_value(self) -> float:
|
def native_value(self) -> float:
|
||||||
"""Return the state of the sensor."""
|
"""Return the state of the sensor."""
|
||||||
trait: TemperatureTrait = self._device.traits[TemperatureTrait.NAME]
|
trait: TemperatureTrait = self._device.traits[TemperatureTrait.NAME]
|
||||||
return trait.ambient_temperature_celsius
|
# Round for display purposes because the API returns 5 decimal places.
|
||||||
|
# This can be removed if the SDM API issue is fixed, or a frontend
|
||||||
|
# display fix is added for all integrations.
|
||||||
|
return float(round(trait.ambient_temperature_celsius, 1))
|
||||||
|
|
||||||
|
|
||||||
class HumiditySensor(SensorBase):
|
class HumiditySensor(SensorBase):
|
||||||
@ -104,7 +107,8 @@ class HumiditySensor(SensorBase):
|
|||||||
return f"{self._device_info.device_name} Humidity"
|
return f"{self._device_info.device_name} Humidity"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def native_value(self) -> float:
|
def native_value(self) -> int:
|
||||||
"""Return the state of the sensor."""
|
"""Return the state of the sensor."""
|
||||||
trait: HumidityTrait = self._device.traits[HumidityTrait.NAME]
|
trait: HumidityTrait = self._device.traits[HumidityTrait.NAME]
|
||||||
return trait.ambient_humidity_percent
|
# Cast without loss of precision because the API always returns an integer.
|
||||||
|
return int(trait.ambient_humidity_percent)
|
||||||
|
@ -64,7 +64,7 @@ async def test_thermostat_device(hass):
|
|||||||
|
|
||||||
humidity = hass.states.get("sensor.my_sensor_humidity")
|
humidity = hass.states.get("sensor.my_sensor_humidity")
|
||||||
assert humidity is not None
|
assert humidity is not None
|
||||||
assert humidity.state == "35.0"
|
assert humidity.state == "35"
|
||||||
assert humidity.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
|
assert humidity.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
|
||||||
assert humidity.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_HUMIDITY
|
assert humidity.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_HUMIDITY
|
||||||
assert humidity.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
|
assert humidity.attributes.get(ATTR_STATE_CLASS) == STATE_CLASS_MEASUREMENT
|
||||||
@ -230,3 +230,28 @@ async def test_device_with_unknown_type(hass):
|
|||||||
assert device.name == "My Sensor"
|
assert device.name == "My Sensor"
|
||||||
assert device.model is None
|
assert device.model is None
|
||||||
assert device.identifiers == {("nest", "some-device-id")}
|
assert device.identifiers == {("nest", "some-device-id")}
|
||||||
|
|
||||||
|
|
||||||
|
async def test_temperature_rounding(hass):
|
||||||
|
"""Test the rounding of overly precise temperatures."""
|
||||||
|
devices = {
|
||||||
|
"some-device-id": Device.MakeDevice(
|
||||||
|
{
|
||||||
|
"name": "some-device-id",
|
||||||
|
"type": THERMOSTAT_TYPE,
|
||||||
|
"traits": {
|
||||||
|
"sdm.devices.traits.Info": {
|
||||||
|
"customName": "My Sensor",
|
||||||
|
},
|
||||||
|
"sdm.devices.traits.Temperature": {
|
||||||
|
"ambientTemperatureCelsius": 25.15678,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
auth=None,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
await async_setup_sensor(hass, devices)
|
||||||
|
|
||||||
|
temperature = hass.states.get("sensor.my_sensor_temperature")
|
||||||
|
assert temperature.state == "25.2"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user