Home Assistant Unofficial Reference 2024.12.1
time.py
Go to the documentation of this file.
1 """Support for Broadlink device time."""
2 
3 from __future__ import annotations
4 
5 from datetime import time
6 from typing import Any
7 
8 from homeassistant.components.time import TimeEntity
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.core import HomeAssistant
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 from homeassistant.util import dt as dt_util
13 
14 from . import BroadlinkDevice
15 from .const import DOMAIN
16 from .entity import BroadlinkEntity
17 
18 
20  hass: HomeAssistant,
21  config_entry: ConfigEntry,
22  async_add_entities: AddEntitiesCallback,
23 ) -> None:
24  """Set up the Broadlink time."""
25  device = hass.data[DOMAIN].devices[config_entry.entry_id]
27 
28 
30  """Representation of a Broadlink device time."""
31 
32  _attr_has_entity_name = True
33  _attr_native_value: time | None = None
34 
35  def __init__(self, device: BroadlinkDevice) -> None:
36  """Initialize the sensor."""
37  super().__init__(device)
38 
39  self._attr_unique_id_attr_unique_id = f"{device.unique_id}-device_time"
40 
41  def _update_state(self, data: dict[str, Any]) -> None:
42  """Update the state of the entity."""
43  if data is None or "hour" not in data or "min" not in data or "sec" not in data:
44  self._attr_native_value_attr_native_value = None
45  else:
46  self._attr_native_value_attr_native_value = time(
47  hour=data["hour"],
48  minute=data["min"],
49  second=data["sec"],
50  tzinfo=dt_util.get_default_time_zone(),
51  )
52 
53  async def async_set_value(self, value: time) -> None:
54  """Change the value."""
55  await self._device_device.async_request(
56  self._device_device.api.set_time,
57  hour=value.hour,
58  minute=value.minute,
59  second=value.second,
60  day=self._coordinator_coordinator.data["dayofweek"],
61  )
62  self._attr_native_value_attr_native_value = value
63  self.async_write_ha_stateasync_write_ha_state()
bool time(HomeAssistant hass, dt_time|str|None before=None, dt_time|str|None after=None, str|Container[str]|None weekday=None)
Definition: condition.py:802