1 """The FiveM update coordinator."""
3 from __future__
import annotations
5 from collections.abc
import Mapping
6 from datetime
import timedelta
10 from fivem
import FiveM, FiveMServerOfflineError
27 _LOGGER = logging.getLogger(__name__)
31 """Class to manage fetching FiveM data."""
34 self, hass: HomeAssistant, config_data: Mapping[str, Any], unique_id: str
36 """Initialize server instance."""
40 self.
game_namegame_name: str |
None =
None
42 self.
hosthost = config_data[CONF_HOST]
44 self.
_fivem_fivem = FiveM(self.
hosthost, config_data[CONF_PORT])
46 update_interval =
timedelta(seconds=SCAN_INTERVAL)
48 super().
__init__(hass, _LOGGER, name=DOMAIN, update_interval=update_interval)
51 """Initialize the FiveM server."""
52 info = await self.
_fivem_fivem.get_info_raw()
53 self.
serverserver = info[
"server"]
54 self.
versionversion = info[
"version"]
58 """Get server data from 3rd party library and update properties."""
60 server = await self.
_fivem_fivem.get_server()
61 except FiveMServerOfflineError
as err:
62 raise UpdateFailed
from err
64 players_list: list[str] = [player.name
for player
in server.players]
67 resources_list = server.resources
71 NAME_PLAYERS_ONLINE: len(players_list),
72 NAME_PLAYERS_MAX: server.max_players,
73 NAME_RESOURCES: len(resources_list),
75 ATTR_PLAYERS_LIST: players_list,
76 ATTR_RESOURCES_LIST: resources_list,
None __init__(self, HomeAssistant hass, Mapping[str, Any] config_data, str unique_id)
dict[str, Any] _async_update_data(self)