New apps Added

This commit is contained in:
2026-07-08 10:43:39 -04:00
parent 3b1f4bbd75
commit fefc2c8b5c
1114 changed files with 406637 additions and 154 deletions
@@ -0,0 +1,56 @@
"""Purpose-specific triggers for the HA automation editor (2026.7+).
HA 2026.7 made intent-based ("purpose-specific") triggers the default
automation UI, and they are extensible by integrations: this module
contributes building blocks like *"A maintenance task became overdue"* so
users never have to know our entity naming or bus-event names.
The triggers are state-based on the per-task ENUM sensors
(``ok / due_soon / overdue / triggered / archived``). ``triggers.yaml``
narrows the UI entity picker to this integration's sensors; at runtime the
DomainSpec matches ENUM sensors within the chosen target (our task sensors
are the only ENUM entities this integration provides — the summary and
document-storage sensors carry different device classes).
Compatibility: cores as old as our 2025.7 minimum DO import this module at
component load (trigger platforms are processed eagerly), but the intent
framework's building blocks (``helpers.automation.DomainSpec``, the trigger
factories) only exist on recent cores — hence the import guard, which turns
this module into a no-op (zero registered triggers) instead of a logged
ImportError on every boot.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
from homeassistant.core import HomeAssistant
from .const import MaintenanceStatus
if TYPE_CHECKING:
from homeassistant.helpers.trigger import Trigger
try: # pragma: no cover - exercised only on cores without the framework
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.components.sensor import SensorDeviceClass
from homeassistant.helpers.automation import DomainSpec
from homeassistant.helpers.trigger import make_entity_target_state_trigger
except ImportError: # pragma: no cover - only on cores without the framework
TRIGGERS: dict[str, type[Trigger]] = {}
else:
_TASK_SENSOR_SPECS: dict[str, DomainSpec] = {
SENSOR_DOMAIN: DomainSpec(device_class=SensorDeviceClass.ENUM),
}
TRIGGERS = {
"task_became_overdue": make_entity_target_state_trigger(_TASK_SENSOR_SPECS, MaintenanceStatus.OVERDUE),
"task_became_due_soon": make_entity_target_state_trigger(_TASK_SENSOR_SPECS, MaintenanceStatus.DUE_SOON),
"sensor_trigger_activated": make_entity_target_state_trigger(_TASK_SENSOR_SPECS, MaintenanceStatus.TRIGGERED),
"task_became_ok": make_entity_target_state_trigger(_TASK_SENSOR_SPECS, MaintenanceStatus.OK),
}
async def async_get_triggers(hass: HomeAssistant) -> dict[str, type[Trigger]]:
"""Return the triggers for maintenance tasks."""
return TRIGGERS