1 """Creates a calendar entity for the mower."""
3 from datetime
import datetime
6 from aioautomower.model
import make_name_string
13 from .
import AutomowerConfigEntry
14 from .coordinator
import AutomowerDataUpdateCoordinator
15 from .entity
import AutomowerBaseEntity
17 _LOGGER = logging.getLogger(__name__)
22 entry: AutomowerConfigEntry,
23 async_add_entities: AddEntitiesCallback,
25 """Set up lawn mower platform."""
26 coordinator = entry.runtime_data
33 """Representation of the Automower Calendar element."""
35 _attr_name: str |
None =
None
40 coordinator: AutomowerDataUpdateCoordinator,
42 """Set up AutomowerCalendarEntity."""
43 super().
__init__(mower_id, coordinator)
45 self._event: CalendarEvent |
None =
None
48 def event(self) -> CalendarEvent | None:
49 """Return the current or next upcoming event."""
51 cursor = schedule.timeline.active_after(dt_util.now())
52 program_event = next(cursor,
None)
53 _LOGGER.debug(
"program_event %s", program_event)
57 if self.
mower_attributesmower_attributes.work_area_dict
and program_event.work_area_id:
59 program_event.work_area_id
62 summary=make_name_string(work_area_name, program_event.schedule_no),
63 start=program_event.start,
64 end=program_event.end,
65 rrule=program_event.rrule_str,
69 self, hass: HomeAssistant, start_date: datetime, end_date: datetime
70 ) -> list[CalendarEvent]:
71 """Return calendar events within a datetime range.
73 This is only called when opening the calendar in the UI.
76 cursor = schedule.timeline.overlapping(
81 for program_event
in cursor:
83 if self.
mower_attributesmower_attributes.work_area_dict
and program_event.work_area_id:
85 program_event.work_area_id
87 calendar_events.append(
89 summary=make_name_string(work_area_name, program_event.schedule_no),
90 start=program_event.start.replace(tzinfo=start_date.tzinfo),
91 end=program_event.end.replace(tzinfo=start_date.tzinfo),
92 rrule=program_event.rrule_str,
95 return calendar_events
list[CalendarEvent] async_get_events(self, HomeAssistant hass, datetime start_date, datetime end_date)
None __init__(self, str mower_id, AutomowerDataUpdateCoordinator coordinator)
CalendarEvent|None event(self)
MowerAttributes mower_attributes(self)
None async_setup_entry(HomeAssistant hass, AutomowerConfigEntry entry, AddEntitiesCallback async_add_entities)