mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 01:08:12 +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.typing import ConfigType
|
||||
|
||||
from . import DOMAIN
|
||||
from . import ATTR_CURRENT_HUMIDITY, DOMAIN
|
||||
|
||||
# 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(
|
||||
DEVICE_TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
@ -45,6 +58,7 @@ HUMIDIFIER_TRIGGER_SCHEMA = vol.All(
|
||||
|
||||
TRIGGER_SCHEMA = vol.All(
|
||||
vol.Any(
|
||||
CURRENT_TRIGGER_SCHEMA,
|
||||
HUMIDIFIER_TRIGGER_SCHEMA,
|
||||
toggle_entity.TRIGGER_SCHEMA,
|
||||
),
|
||||
@ -64,15 +78,31 @@ async def async_get_triggers(
|
||||
if entry.domain != DOMAIN:
|
||||
continue
|
||||
|
||||
state = hass.states.get(entry.entity_id)
|
||||
|
||||
# Add triggers for each entity that belongs to this integration
|
||||
base_trigger = {
|
||||
CONF_PLATFORM: "device",
|
||||
CONF_DEVICE_ID: device_id,
|
||||
CONF_DOMAIN: DOMAIN,
|
||||
CONF_ENTITY_ID: entry.entity_id,
|
||||
}
|
||||
|
||||
triggers.append(
|
||||
{
|
||||
CONF_PLATFORM: "device",
|
||||
CONF_DEVICE_ID: device_id,
|
||||
CONF_DOMAIN: DOMAIN,
|
||||
CONF_ENTITY_ID: entry.entity_id,
|
||||
**base_trigger,
|
||||
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
|
||||
|
||||
|
||||
|
@ -65,6 +65,7 @@ async def test_get_triggers(
|
||||
STATE_ON,
|
||||
{
|
||||
const.ATTR_HUMIDITY: 23,
|
||||
const.ATTR_CURRENT_HUMIDITY: 48,
|
||||
ATTR_MODE: "home",
|
||||
const.ATTR_AVAILABLE_MODES: ["home", "away"],
|
||||
ATTR_SUPPORTED_FEATURES: 1,
|
||||
@ -80,6 +81,7 @@ async def test_get_triggers(
|
||||
"metadata": {"secondary": False},
|
||||
}
|
||||
for trigger in [
|
||||
"current_humidity_changed",
|
||||
"target_humidity_changed",
|
||||
"turned_off",
|
||||
"turned_on",
|
||||
|
Loading…
x
Reference in New Issue
Block a user