1 """Support for Tile device trackers."""
3 from __future__
import annotations
7 from pytile.tile
import Tile
18 DataUpdateCoordinator,
22 from .
import TileData
23 from .const
import DOMAIN
25 _LOGGER = logging.getLogger(__name__)
27 ATTR_ALTITUDE =
"altitude"
28 ATTR_CONNECTION_STATE =
"connection_state"
29 ATTR_IS_DEAD =
"is_dead"
30 ATTR_IS_LOST =
"is_lost"
31 ATTR_LAST_LOST_TIMESTAMP =
"last_lost_timestamp"
32 ATTR_LAST_TIMESTAMP =
"last_timestamp"
33 ATTR_RING_STATE =
"ring_state"
34 ATTR_TILE_NAME =
"tile_name"
35 ATTR_VOIP_STATE =
"voip_state"
39 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
41 """Set up Tile device trackers."""
42 data: TileData = hass.data[DOMAIN][entry.entry_id]
47 for tile_uuid, tile
in data.tiles.items()
55 async_see: AsyncSeeCallback,
56 discovery_info: DiscoveryInfoType |
None =
None,
58 """Detect a legacy configuration and import it."""
59 hass.async_create_task(
60 hass.config_entries.flow.async_init(
62 context={
"source": SOURCE_IMPORT},
64 CONF_USERNAME: config[CONF_USERNAME],
65 CONF_PASSWORD: config[CONF_PASSWORD],
71 "Your Tile configuration has been imported into the UI; "
72 "please remove it from configuration.yaml"
79 """Representation of a network infrastructure device."""
81 _attr_has_entity_name =
True
83 _attr_translation_key =
"tile"
86 self, entry: ConfigEntry, coordinator: DataUpdateCoordinator[
None], tile: Tile
98 """Return if entity is available."""
99 return super().available
and not self.
_tile_tile.dead
103 """Return device info."""
108 """Respond to a DataUpdateCoordinator update."""
110 self.async_write_ha_state()
114 """Update the entity from the latest data."""
116 None if not self.
_tile_tile.longitude
else self.
_tile_tile.longitude
120 0
if not self.
_tile_tile.accuracy
else int(self.
_tile_tile.accuracy)
124 ATTR_ALTITUDE: self.
_tile_tile.altitude,
125 ATTR_IS_LOST: self.
_tile_tile.lost,
126 ATTR_RING_STATE: self.
_tile_tile.ring_state,
127 ATTR_VOIP_STATE: self.
_tile_tile.voip_state,
129 for timestamp_attr
in (
130 (ATTR_LAST_LOST_TIMESTAMP, self.
_tile_tile.lost_timestamp),
131 (ATTR_LAST_TIMESTAMP, self.
_tile_tile.last_timestamp),
133 if not timestamp_attr[1]:
142 """Handle entity which will be added."""
None _handle_coordinator_update(self)
None async_added_to_hass(self)
None __init__(self, ConfigEntry entry, DataUpdateCoordinator[None] coordinator, Tile tile)
_attr_extra_state_attributes
None _update_from_latest_data(self)
DeviceInfo device_info(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
bool async_setup_scanner(HomeAssistant hass, ConfigType config, AsyncSeeCallback async_see, DiscoveryInfoType|None discovery_info=None)
dt.datetime as_utc(dt.datetime dattim)