mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 11:47:06 +00:00
Add device prefix to summary in Husqvarna Automower (#147405)
This commit is contained in:
parent
571376badc
commit
1d82d44794
@ -2,15 +2,18 @@
|
|||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import logging
|
import logging
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from aioautomower.model import make_name_string
|
from aioautomower.model import make_name_string
|
||||||
|
|
||||||
from homeassistant.components.calendar import CalendarEntity, CalendarEvent
|
from homeassistant.components.calendar import CalendarEntity, CalendarEvent
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.helpers import device_registry as dr
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
from homeassistant.util import dt as dt_util
|
from homeassistant.util import dt as dt_util
|
||||||
|
|
||||||
from . import AutomowerConfigEntry
|
from . import AutomowerConfigEntry
|
||||||
|
from .const import DOMAIN
|
||||||
from .coordinator import AutomowerDataUpdateCoordinator
|
from .coordinator import AutomowerDataUpdateCoordinator
|
||||||
from .entity import AutomowerBaseEntity
|
from .entity import AutomowerBaseEntity
|
||||||
|
|
||||||
@ -51,6 +54,19 @@ class AutomowerCalendarEntity(AutomowerBaseEntity, CalendarEntity):
|
|||||||
self._attr_unique_id = mower_id
|
self._attr_unique_id = mower_id
|
||||||
self._event: CalendarEvent | None = None
|
self._event: CalendarEvent | None = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_name(self) -> str:
|
||||||
|
"""Return the prefix for the event summary."""
|
||||||
|
device_registry = dr.async_get(self.hass)
|
||||||
|
device_entry = device_registry.async_get_device(
|
||||||
|
identifiers={(DOMAIN, self.mower_id)}
|
||||||
|
)
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
assert device_entry is not None
|
||||||
|
assert device_entry.name is not None
|
||||||
|
|
||||||
|
return device_entry.name_by_user or device_entry.name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def event(self) -> CalendarEvent | None:
|
def event(self) -> CalendarEvent | None:
|
||||||
"""Return the current or next upcoming event."""
|
"""Return the current or next upcoming event."""
|
||||||
@ -66,7 +82,7 @@ class AutomowerCalendarEntity(AutomowerBaseEntity, CalendarEntity):
|
|||||||
program_event.work_area_id
|
program_event.work_area_id
|
||||||
]
|
]
|
||||||
return CalendarEvent(
|
return CalendarEvent(
|
||||||
summary=make_name_string(work_area_name, program_event.schedule_no),
|
summary=f"{self.device_name} {make_name_string(work_area_name, program_event.schedule_no)}",
|
||||||
start=program_event.start,
|
start=program_event.start,
|
||||||
end=program_event.end,
|
end=program_event.end,
|
||||||
rrule=program_event.rrule_str,
|
rrule=program_event.rrule_str,
|
||||||
@ -93,7 +109,7 @@ class AutomowerCalendarEntity(AutomowerBaseEntity, CalendarEntity):
|
|||||||
]
|
]
|
||||||
calendar_events.append(
|
calendar_events.append(
|
||||||
CalendarEvent(
|
CalendarEvent(
|
||||||
summary=make_name_string(work_area_name, program_event.schedule_no),
|
summary=f"{self.device_name} {make_name_string(work_area_name, program_event.schedule_no)}",
|
||||||
start=program_event.start.replace(tzinfo=start_date.tzinfo),
|
start=program_event.start.replace(tzinfo=start_date.tzinfo),
|
||||||
end=program_event.end.replace(tzinfo=start_date.tzinfo),
|
end=program_event.end.replace(tzinfo=start_date.tzinfo),
|
||||||
rrule=program_event.rrule_str,
|
rrule=program_event.rrule_str,
|
||||||
|
@ -6,72 +6,72 @@
|
|||||||
dict({
|
dict({
|
||||||
'end': '2023-06-05T09:00:00+02:00',
|
'end': '2023-06-05T09:00:00+02:00',
|
||||||
'start': '2023-06-05T01:00:00+02:00',
|
'start': '2023-06-05T01:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 2',
|
'summary': 'Test Mower 1 Back lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-06T00:00:00+02:00',
|
'end': '2023-06-06T00:00:00+02:00',
|
||||||
'start': '2023-06-05T19:00:00+02:00',
|
'start': '2023-06-05T19:00:00+02:00',
|
||||||
'summary': 'Front lawn schedule 1',
|
'summary': 'Test Mower 1 Front lawn schedule 1',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-06T08:00:00+02:00',
|
'end': '2023-06-06T08:00:00+02:00',
|
||||||
'start': '2023-06-06T00:00:00+02:00',
|
'start': '2023-06-06T00:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 1',
|
'summary': 'Test Mower 1 Back lawn schedule 1',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-06T08:00:00+02:00',
|
'end': '2023-06-06T08:00:00+02:00',
|
||||||
'start': '2023-06-06T00:00:00+02:00',
|
'start': '2023-06-06T00:00:00+02:00',
|
||||||
'summary': 'Front lawn schedule 2',
|
'summary': 'Test Mower 1 Front lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-06T09:00:00+02:00',
|
'end': '2023-06-06T09:00:00+02:00',
|
||||||
'start': '2023-06-06T01:00:00+02:00',
|
'start': '2023-06-06T01:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 2',
|
'summary': 'Test Mower 1 Back lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-08T00:00:00+02:00',
|
'end': '2023-06-08T00:00:00+02:00',
|
||||||
'start': '2023-06-07T19:00:00+02:00',
|
'start': '2023-06-07T19:00:00+02:00',
|
||||||
'summary': 'Front lawn schedule 1',
|
'summary': 'Test Mower 1 Front lawn schedule 1',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-08T08:00:00+02:00',
|
'end': '2023-06-08T08:00:00+02:00',
|
||||||
'start': '2023-06-08T00:00:00+02:00',
|
'start': '2023-06-08T00:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 1',
|
'summary': 'Test Mower 1 Back lawn schedule 1',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-08T08:00:00+02:00',
|
'end': '2023-06-08T08:00:00+02:00',
|
||||||
'start': '2023-06-08T00:00:00+02:00',
|
'start': '2023-06-08T00:00:00+02:00',
|
||||||
'summary': 'Front lawn schedule 2',
|
'summary': 'Test Mower 1 Front lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-08T09:00:00+02:00',
|
'end': '2023-06-08T09:00:00+02:00',
|
||||||
'start': '2023-06-08T01:00:00+02:00',
|
'start': '2023-06-08T01:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 2',
|
'summary': 'Test Mower 1 Back lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T00:00:00+02:00',
|
'end': '2023-06-10T00:00:00+02:00',
|
||||||
'start': '2023-06-09T19:00:00+02:00',
|
'start': '2023-06-09T19:00:00+02:00',
|
||||||
'summary': 'Front lawn schedule 1',
|
'summary': 'Test Mower 1 Front lawn schedule 1',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T08:00:00+02:00',
|
'end': '2023-06-10T08:00:00+02:00',
|
||||||
'start': '2023-06-10T00:00:00+02:00',
|
'start': '2023-06-10T00:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 1',
|
'summary': 'Test Mower 1 Back lawn schedule 1',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T08:00:00+02:00',
|
'end': '2023-06-10T08:00:00+02:00',
|
||||||
'start': '2023-06-10T00:00:00+02:00',
|
'start': '2023-06-10T00:00:00+02:00',
|
||||||
'summary': 'Front lawn schedule 2',
|
'summary': 'Test Mower 1 Front lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T09:00:00+02:00',
|
'end': '2023-06-10T09:00:00+02:00',
|
||||||
'start': '2023-06-10T01:00:00+02:00',
|
'start': '2023-06-10T01:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 2',
|
'summary': 'Test Mower 1 Back lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-12T09:00:00+02:00',
|
'end': '2023-06-12T09:00:00+02:00',
|
||||||
'start': '2023-06-12T01:00:00+02:00',
|
'start': '2023-06-12T01:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 2',
|
'summary': 'Test Mower 1 Back lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
}),
|
}),
|
||||||
@ -80,7 +80,7 @@
|
|||||||
dict({
|
dict({
|
||||||
'end': '2023-06-05T02:49:00+02:00',
|
'end': '2023-06-05T02:49:00+02:00',
|
||||||
'start': '2023-06-05T02:00:00+02:00',
|
'start': '2023-06-05T02:00:00+02:00',
|
||||||
'summary': 'Schedule 1',
|
'summary': 'Test Mower 2 Schedule 1',
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
}),
|
}),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user