Use google assistant TemperatureControl trait to report sensor (#46491)
* CHG: use TemperatureControl trait to report sensor * fixup: blacked * fixup: flaked * fixup: flaked * Adjust tests * fixup test and rebase * test coverage
This commit is contained in:
parent
7f6572893d
commit
591d09c177
2 changed files with 135 additions and 90 deletions
|
@ -954,6 +954,29 @@ async def test_temperature_setting_climate_setpoint_auto(hass):
|
|||
assert calls[0].data == {ATTR_ENTITY_ID: "climate.bla", ATTR_TEMPERATURE: 19}
|
||||
|
||||
|
||||
async def test_temperature_control(hass):
|
||||
"""Test TemperatureControl trait support for sensor domain."""
|
||||
hass.config.units.temperature_unit = TEMP_CELSIUS
|
||||
|
||||
trt = trait.TemperatureControlTrait(
|
||||
hass,
|
||||
State("sensor.temp", 18),
|
||||
BASIC_CONFIG,
|
||||
)
|
||||
assert trt.sync_attributes() == {
|
||||
"queryOnlyTemperatureSetting": True,
|
||||
"temperatureUnitForUX": "C",
|
||||
"temperatureRange": {"maxThresholdCelsius": 100, "minThresholdCelsius": -100},
|
||||
}
|
||||
assert trt.query_attributes() == {
|
||||
"temperatureSetpointCelsius": 18,
|
||||
"temperatureAmbientCelsius": 18,
|
||||
}
|
||||
with pytest.raises(helpers.SmartHomeError) as err:
|
||||
await trt.execute(trait.COMMAND_ONOFF, BASIC_DATA, {"on": False}, {})
|
||||
assert err.value.code == const.ERR_NOT_SUPPORTED
|
||||
|
||||
|
||||
async def test_humidity_setting_humidifier_setpoint(hass):
|
||||
"""Test HumiditySetting trait support for humidifier domain - setpoint."""
|
||||
assert helpers.get_google_type(humidifier.DOMAIN, None) is not None
|
||||
|
@ -2380,16 +2403,16 @@ async def test_media_player_mute(hass):
|
|||
}
|
||||
|
||||
|
||||
async def test_temperature_setting_sensor(hass):
|
||||
"""Test TemperatureSetting trait support for temperature sensor."""
|
||||
async def test_temperature_control_sensor(hass):
|
||||
"""Test TemperatureControl trait support for temperature sensor."""
|
||||
assert (
|
||||
helpers.get_google_type(sensor.DOMAIN, sensor.DEVICE_CLASS_TEMPERATURE)
|
||||
is not None
|
||||
)
|
||||
assert not trait.TemperatureSettingTrait.supported(
|
||||
assert not trait.TemperatureControlTrait.supported(
|
||||
sensor.DOMAIN, 0, sensor.DEVICE_CLASS_HUMIDITY, None
|
||||
)
|
||||
assert trait.TemperatureSettingTrait.supported(
|
||||
assert trait.TemperatureControlTrait.supported(
|
||||
sensor.DOMAIN, 0, sensor.DEVICE_CLASS_TEMPERATURE, None
|
||||
)
|
||||
|
||||
|
@ -2403,11 +2426,11 @@ async def test_temperature_setting_sensor(hass):
|
|||
(TEMP_FAHRENHEIT, "F", "unknown", None),
|
||||
],
|
||||
)
|
||||
async def test_temperature_setting_sensor_data(hass, unit_in, unit_out, state, ambient):
|
||||
"""Test TemperatureSetting trait support for temperature sensor."""
|
||||
async def test_temperature_control_sensor_data(hass, unit_in, unit_out, state, ambient):
|
||||
"""Test TemperatureControl trait support for temperature sensor."""
|
||||
hass.config.units.temperature_unit = unit_in
|
||||
|
||||
trt = trait.TemperatureSettingTrait(
|
||||
trt = trait.TemperatureControlTrait(
|
||||
hass,
|
||||
State(
|
||||
"sensor.test", state, {ATTR_DEVICE_CLASS: sensor.DEVICE_CLASS_TEMPERATURE}
|
||||
|
@ -2417,11 +2440,15 @@ async def test_temperature_setting_sensor_data(hass, unit_in, unit_out, state, a
|
|||
|
||||
assert trt.sync_attributes() == {
|
||||
"queryOnlyTemperatureSetting": True,
|
||||
"thermostatTemperatureUnit": unit_out,
|
||||
"temperatureUnitForUX": unit_out,
|
||||
"temperatureRange": {"maxThresholdCelsius": 100, "minThresholdCelsius": -100},
|
||||
}
|
||||
|
||||
if ambient:
|
||||
assert trt.query_attributes() == {"thermostatTemperatureAmbient": ambient}
|
||||
assert trt.query_attributes() == {
|
||||
"temperatureAmbientCelsius": ambient,
|
||||
"temperatureSetpointCelsius": ambient,
|
||||
}
|
||||
else:
|
||||
assert trt.query_attributes() == {}
|
||||
hass.config.units.temperature_unit = TEMP_CELSIUS
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue