Add device trigger for humidifier current_humidity (#94926)

This commit is contained in:
Jan Bouwhuis 2023-06-20 22:57:44 +02:00 committed by GitHub
parent d2d6389742
commit a4399a4cb6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 5 deletions

View File

@ -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

View File

@ -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",