diff --git a/homeassistant/components/swiss_public_transport/coordinator.py b/homeassistant/components/swiss_public_transport/coordinator.py index f91f9a7c768..5d51175fb26 100644 --- a/homeassistant/components/swiss_public_transport/coordinator.py +++ b/homeassistant/components/swiss_public_transport/coordinator.py @@ -16,6 +16,7 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed import homeassistant.util.dt as dt_util +from homeassistant.util.json import JsonValueType from .const import CONNECTIONS_COUNT, DEFAULT_UPDATE_TIME, DOMAIN @@ -110,3 +111,23 @@ class SwissPublicTransportDataUpdateCoordinator( for i in range(limit) if len(connections) > i and connections[i] is not None ] + + async def fetch_connections_as_json(self, limit: int) -> list[JsonValueType]: + """Fetch connections using the opendata api.""" + return [ + { + "departure": connection["departure"].isoformat() + if connection["departure"] + else None, + "duration": connection["duration"], + "platform": connection["platform"], + "remaining_time": connection["remaining_time"], + "start": connection["start"], + "destination": connection["destination"], + "train_number": connection["train_number"], + "transfers": connection["transfers"], + "delay": connection["delay"], + "line": connection["line"], + } + for connection in await self.fetch_connections(limit) + ] diff --git a/homeassistant/components/swiss_public_transport/services.py b/homeassistant/components/swiss_public_transport/services.py index e8b7c6bd458..4ede91e6c42 100644 --- a/homeassistant/components/swiss_public_transport/services.py +++ b/homeassistant/components/swiss_public_transport/services.py @@ -69,7 +69,7 @@ def setup_services(hass: HomeAssistant) -> None: limit = call.data.get(ATTR_LIMIT) or CONNECTIONS_COUNT coordinator = hass.data[DOMAIN][config_entry.entry_id] try: - connections = await coordinator.fetch_connections(limit=int(limit)) + connections = await coordinator.fetch_connections_as_json(limit=int(limit)) except UpdateFailed as e: raise HomeAssistantError( translation_domain=DOMAIN,