Browse by type
A comprehensive departure board integration for Home Assistant.
I maintain this integration in my free time alongside my regular job — bug hunting, new features, and testing on real hardware. Test devices cost money, and every donation helps me stay independent and free up more time for open-source work.
Donations are completely voluntary — but the more support I receive, the less I depend on other income sources and the more time I can realistically invest into these GitHub projects. 💪
The db-infoscreen integration provides detailed departure times and train information for a given station directly in Home Assistant. Aggregating data from multiple sources (primarily Deutsche Bahn IRIS-TTS), it offers a powerful and comprehensive departure board for stations across Germany and Europe.

For a reliable and unrestricted setup, it is highly recommended to host your own DBF (DB-Fahrplan / db-fakedisplay) backend API.
docker run -d -p 8092:8092 derf/db-fakedisplay:latest.Even when self-hosted, the backend fetches real-time train data directly from official APIs (like Deutsche Bahn IRIS-TTS and local transit HAFAS endpoints). Because these endpoints are designed to scale, a private home instance querying every few minutes will not trigger upstream rate limits or bans.
For detailed setup instructions, see the Self-Hosting Documentation.
| Feature | Description |
|---|---|
| 📋 Departure Board | View next departures, delays, platforms, and train types. |
| 👥 Train Occupancy | View predicted load factor (1st/2nd class) where available. |
| 🌍 Wide Coverage | Supports DB and many local transport associations (via HAFAS/EFA). |
| ⚙️ Highly Configurable | Filter by direction, train type, specific platforms, and more. |
| 💖 Favorite Trains | Filter for specific "Favorite Trains" (Commuter Profile). |
| ⏸️ Pause Updates | Stop periodic data fetches to save API queries. Includes is_paused attribute and binary sensor for UI logic. |
| 🔍 Diagnostic Sensors | Monitor API connection, update status, and station accessibility (elevators). |
| ℹ️ Detailed Attributes | Access route info, warnings, platform changes (changed_platform), wagon order (wagon_order), wagon order summary (wagon_order_html), sector info (platform_sectors), facilities (facilities), real-time route progress (route_details), and unique trip ID (trip_id). |
This integration is available as a default repository in HACS.
db-infoscreen.[!TIP] HACS ensures you stay up-to-date with the latest API changes and bug fixes.
db_infoscreen folder into your <config>/custom_components/ directory.Initial Setup: When adding the integration, you will be asked for the most important settings:
| Option | Type | Required | Description |
|---|---|---|---|
station |
string | Yes | Station name (e.g. München Hbf), DS100 ID (e.g. MH), or EVA ID. The setup flow includes an autocomplete search to help find the correct official name. |
data_source |
string | No | Backend source (DB, AVV, etc.). Default: IRIS-TTS. |
next_departures |
int | No | Number of upcoming departures to display. Default: 4. |
platforms |
string | No | Filter by comma-separated platforms (e.g., 1, 2, 5). |
via_stations |
string | No | Filter by stations the train must pass through. |
via_stations_logic |
string | No | Logic for multiple via stations (OR / AND). Default: OR. |
direction |
string | No | Filter by direction text (API dependent). |
Options Menu (Configure): All other settings are available via the Configure button on the integration entry. They are grouped into:
| Option | Default | Description |
|---|---|---|
update_interval |
3 |
Fetch interval in minutes. Minimum: 1 minute. |
hide_low_delay |
False |
Hide departures with < 5 min delay. |
drop_late_trains |
False |
Hide past departures even if they are delayed. |
deduplicate_departures |
False |
Filter out duplicate entries. |
detailed |
False |
Show extra attributes (messages, ids, keys, wagon order, etc.). |
past_60_minutes |
False |
Show departures from the past 60 minutes. |
keep_route |
False |
Keep full route (stopover) details in attributes. |
keep_endstation |
False |
Keep departure if station is also the endstation. |
custom_api_url |
- | Use a private/custom API instance. |
offset |
00:00 |
Time offset for search (HH:MM or HH:MM:SS). |
admode |
departure |
Display departure or arrival times. |
paused |
False |
Pause periodic updates (Stop data fetching). |
excluded_directions |
- | Exclude departures with specific direction (substring match). |
ignored_train_types |
[] |
List of train types to ignore. |
enable_text_view |
False |
Enable simplified text view for ePaper displays. |
text_view_template |
(Default) | Template for the simplified text view (e.g., {line};{destination};{platform};{time}). |
deduplicate_key |
(Default) | Template for the unique trip identifier used for deduplication. Default: {journeyID}{journeyId}{id}{key}{trainNumber}. |
[!TIP] Deduplication for KVV If you are using Karlsruher Verkehrsverbund (KVV) and see duplicate entries for different platforms, try setting the
deduplicate_keyto{line}or{key}. The default key may be too specific because the KVV API includes the scheduled time in the trip ID.[!WARNING] Limitations & Performance * Sensor Limit: You are limited to 30 sensors unless using a custom_api_url. * Update Interval: Minimum is 1 minute to prevent API bans/throttling. * Storage: Enabling
detailed,keep_route, or a high number ofnext_departurescan hit Home Assistant's state storage limits. See Issue #22. * Data Accuracy: Depends on the selecteddata_source.
| Service | Description |
|---|---|
watch_train |
Monitor a specific train and notify on delay/platform changes. |
track_connection |
Monitor a connecting train at a transfer station. |
set_paused |
Toggle periodic updates for one or more stations (Smart Pausing). |
set_offset |
Dynamically override the departure time offset temporarily. |
refresh_departures |
Manually trigger a data update for all stations. |
This integration allows fetching data from various backend sources via DBF.
👇 Click to expand the full list of supported Data Sources
Note: To use HAFAS for stations also found in IRIS-TTS (e.g. "Frankenforst Kippekausen"), choose the specific backend or set
hafas=1. See Issue #8.
Direct migration is not possible due to API differences. The old integration supported "Start to Destination" routing, which db-infoscreen handles differently.
To replicate "Start -> Destination" behavior:
Via Stations: Use via_stations to filter trains going through your destination or key stops.
Single Station: If only one station is entered, filtering is performed server-side (at the API) for maximum efficiency.
Multiple Stations: If multiple stations are entered, the sensor switches to local filtering to support complex logic.
Logic (AND/OR):
Platforms: Filter by platform if trains to your destination always use specific tracks.
Two Sensors: Create two sensors (one for Start, one for typical changeover stations) to track complex routes.
For a detailed set of examples including platform change alerts, occupancy warnings, and advanced filtering, check out our Automation Cookbook.
Notify when the next train is delayed:
```yaml automation: - alias: "Train Delay Notification" trigger: - platform: template value_template: "{{ state_attr('sensor.station_departures', 'next_departures')[0]['delayArrival'] | int > 10 }}" action: - service: notify.mobile_app data: message: > The train to {{ state_attr('sensor.station_departures', 'next_departures')[0]['destination'] }} i
$ claude mcp add ha-db_infoscreen \
-- python -m otcore.mcp_server <graph>