mirror of https://github.com/home-assistant/core
55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
"""Timers for the mobile app."""
|
|
|
|
from datetime import timedelta
|
|
|
|
from homeassistant.components import notify
|
|
from homeassistant.components.intent import TimerEventType, TimerInfo
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.const import CONF_DEVICE_ID
|
|
from homeassistant.core import HomeAssistant, callback
|
|
|
|
from . import device_action
|
|
|
|
|
|
@callback
|
|
def async_handle_timer_event(
|
|
hass: HomeAssistant,
|
|
entry: ConfigEntry,
|
|
event_type: TimerEventType,
|
|
timer_info: TimerInfo,
|
|
) -> None:
|
|
"""Handle timer events."""
|
|
if event_type != TimerEventType.FINISHED:
|
|
return
|
|
|
|
if timer_info.name:
|
|
message = f"{timer_info.name} finished"
|
|
else:
|
|
message = f"{timedelta(seconds=timer_info.created_seconds)} timer finished"
|
|
|
|
entry.async_create_task(
|
|
hass,
|
|
device_action.async_call_action_from_config(
|
|
hass,
|
|
{
|
|
CONF_DEVICE_ID: timer_info.device_id,
|
|
notify.ATTR_MESSAGE: message,
|
|
notify.ATTR_DATA: {
|
|
"group": "timers",
|
|
# Android
|
|
"channel": "Timers",
|
|
"importance": "high",
|
|
"ttl": 0,
|
|
"priority": "high",
|
|
# iOS
|
|
"push": {
|
|
"interruption-level": "time-sensitive",
|
|
},
|
|
},
|
|
},
|
|
{},
|
|
None,
|
|
),
|
|
"mobile_app_timer_notification",
|
|
)
|