1 """The Traccar Server integration."""
3 from __future__
import annotations
5 from datetime
import timedelta
7 from aiohttp
import CookieJar
8 from pytraccar
import ApiClient
25 CONF_CUSTOM_ATTRIBUTES,
28 CONF_SKIP_ACCURACY_FILTER_FOR,
31 from .coordinator
import TraccarServerCoordinator
33 PLATFORMS: list[Platform] = [
34 Platform.BINARY_SENSOR,
35 Platform.DEVICE_TRACKER,
41 """Set up Traccar Server from a config entry."""
45 unsafe=
not entry.data[CONF_SSL]
or not entry.data[CONF_VERIFY_SSL]
51 client_session=client_session,
52 host=entry.data[CONF_HOST],
53 port=entry.data[CONF_PORT],
54 username=entry.data[CONF_USERNAME],
55 password=entry.data[CONF_PASSWORD],
56 ssl=entry.data[CONF_SSL],
57 verify_ssl=entry.data[CONF_VERIFY_SSL],
59 events=entry.options.get(CONF_EVENTS, []),
60 max_accuracy=entry.options.get(CONF_MAX_ACCURACY, 0.0),
61 skip_accuracy_filter_for=entry.options.get(CONF_SKIP_ACCURACY_FILTER_FOR, []),
62 custom_attributes=entry.options.get(CONF_CUSTOM_ATTRIBUTES, []),
65 await coordinator.async_config_entry_first_refresh()
67 hass.data.setdefault(DOMAIN, {})
68 hass.data[DOMAIN][entry.entry_id] = coordinator
70 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
71 entry.async_on_unload(entry.add_update_listener(async_reload_entry))
72 if entry.options.get(CONF_EVENTS):
73 entry.async_on_unload(
76 coordinator.import_events,
78 cancel_on_shutdown=
True,
79 name=
"traccar_server_import_events",
83 entry.async_create_background_task(
85 target=coordinator.subscribe(),
86 name=
"Traccar Server subscription",
93 """Unload a config entry."""
94 if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
95 hass.data[DOMAIN].pop(entry.entry_id)
100 """Handle an options update."""
101 await hass.config_entries.async_reload(entry.entry_id)
aiohttp.ClientSession async_create_clientsession()
None async_reload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
CALLBACK_TYPE async_track_time_interval(HomeAssistant hass, Callable[[datetime], Coroutine[Any, Any, None]|None] action, timedelta interval, *str|None name=None, bool|None cancel_on_shutdown=None)