mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 16:27:08 +00:00
Add device trigger for humidifier current_humidity (#94926)
This commit is contained in:
parent
d2d6389742
commit
a4399a4cb6
@ -26,10 +26,23 @@ from homeassistant.helpers import config_validation as cv, entity_registry as er
|
|||||||
from homeassistant.helpers.trigger import TriggerActionType, TriggerInfo
|
from homeassistant.helpers.trigger import TriggerActionType, TriggerInfo
|
||||||
from homeassistant.helpers.typing import ConfigType
|
from homeassistant.helpers.typing import ConfigType
|
||||||
|
|
||||||
from . import DOMAIN
|
from . import ATTR_CURRENT_HUMIDITY, DOMAIN
|
||||||
|
|
||||||
# mypy: disallow-any-generics
|
# mypy: disallow-any-generics
|
||||||
|
|
||||||
|
CURRENT_TRIGGER_SCHEMA = vol.All(
|
||||||
|
DEVICE_TRIGGER_BASE_SCHEMA.extend(
|
||||||
|
{
|
||||||
|
vol.Required(CONF_ENTITY_ID): cv.entity_id,
|
||||||
|
vol.Required(CONF_TYPE): "current_humidity_changed",
|
||||||
|
vol.Optional(CONF_BELOW): vol.Any(vol.Coerce(float)),
|
||||||
|
vol.Optional(CONF_ABOVE): vol.Any(vol.Coerce(float)),
|
||||||
|
vol.Optional(CONF_FOR): cv.positive_time_period_dict,
|
||||||
|
}
|
||||||
|
),
|
||||||
|
cv.has_at_least_one_key(CONF_BELOW, CONF_ABOVE),
|
||||||
|
)
|
||||||
|
|
||||||
HUMIDIFIER_TRIGGER_SCHEMA = vol.All(
|
HUMIDIFIER_TRIGGER_SCHEMA = vol.All(
|
||||||
DEVICE_TRIGGER_BASE_SCHEMA.extend(
|
DEVICE_TRIGGER_BASE_SCHEMA.extend(
|
||||||
{
|
{
|
||||||
@ -45,6 +58,7 @@ HUMIDIFIER_TRIGGER_SCHEMA = vol.All(
|
|||||||
|
|
||||||
TRIGGER_SCHEMA = vol.All(
|
TRIGGER_SCHEMA = vol.All(
|
||||||
vol.Any(
|
vol.Any(
|
||||||
|
CURRENT_TRIGGER_SCHEMA,
|
||||||
HUMIDIFIER_TRIGGER_SCHEMA,
|
HUMIDIFIER_TRIGGER_SCHEMA,
|
||||||
toggle_entity.TRIGGER_SCHEMA,
|
toggle_entity.TRIGGER_SCHEMA,
|
||||||
),
|
),
|
||||||
@ -64,15 +78,31 @@ async def async_get_triggers(
|
|||||||
if entry.domain != DOMAIN:
|
if entry.domain != DOMAIN:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
triggers.append(
|
state = hass.states.get(entry.entity_id)
|
||||||
{
|
|
||||||
|
# Add triggers for each entity that belongs to this integration
|
||||||
|
base_trigger = {
|
||||||
CONF_PLATFORM: "device",
|
CONF_PLATFORM: "device",
|
||||||
CONF_DEVICE_ID: device_id,
|
CONF_DEVICE_ID: device_id,
|
||||||
CONF_DOMAIN: DOMAIN,
|
CONF_DOMAIN: DOMAIN,
|
||||||
CONF_ENTITY_ID: entry.entity_id,
|
CONF_ENTITY_ID: entry.entity_id,
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers.append(
|
||||||
|
{
|
||||||
|
**base_trigger,
|
||||||
CONF_TYPE: "target_humidity_changed",
|
CONF_TYPE: "target_humidity_changed",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if state and ATTR_CURRENT_HUMIDITY in state.attributes:
|
||||||
|
triggers.append(
|
||||||
|
{
|
||||||
|
**base_trigger,
|
||||||
|
CONF_TYPE: "current_humidity_changed",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
return triggers
|
return triggers
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,6 +65,7 @@ async def test_get_triggers(
|
|||||||
STATE_ON,
|
STATE_ON,
|
||||||
{
|
{
|
||||||
const.ATTR_HUMIDITY: 23,
|
const.ATTR_HUMIDITY: 23,
|
||||||
|
const.ATTR_CURRENT_HUMIDITY: 48,
|
||||||
ATTR_MODE: "home",
|
ATTR_MODE: "home",
|
||||||
const.ATTR_AVAILABLE_MODES: ["home", "away"],
|
const.ATTR_AVAILABLE_MODES: ["home", "away"],
|
||||||
ATTR_SUPPORTED_FEATURES: 1,
|
ATTR_SUPPORTED_FEATURES: 1,
|
||||||
@ -80,6 +81,7 @@ async def test_get_triggers(
|
|||||||
"metadata": {"secondary": False},
|
"metadata": {"secondary": False},
|
||||||
}
|
}
|
||||||
for trigger in [
|
for trigger in [
|
||||||
|
"current_humidity_changed",
|
||||||
"target_humidity_changed",
|
"target_humidity_changed",
|
||||||
"turned_off",
|
"turned_off",
|
||||||
"turned_on",
|
"turned_on",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user