~derf
dark mode

You have reached the personal homepage of an entity commonly known as derf / derfnull / Birte Friesel. Hi! 👋

Resources

Contact

You can reach me by E-Mail (d​erf@fina​lr​ewind.org) and on IRC (derf0 @ OFTC, hackint). My PGP key for E-Mail encryption is 64FE6EC0 55560F9E F13A3044 19E6E524 EBB177BA. I occasionally post stuff on the Fediverse (@derf@social.skyshaper.org).

The remainder of this page duplicates a curated sub-set of projects and the latest blog entries.

Projects

> hafas 'Eichlinghofen H-Bahn, Dortmund' 'Dortmund Hbf'

00:15        Schw-B HB5  (0:03)  S 1

Schw-B HB5 → Universität S-Bahnhof, Dortmund
21:51  ab  Eichlinghofen H-Bahn, Dortmund
21:55  an  Universität S-Bahnhof, Dortmund

Walk 37m  (approx. 3 minutes)
S 1 → Dortmund Hbf
21:58  ab  Dortmund Universität: 2
22:06  an  Dortmund Hbf: 4
> efa Essen Martinstr Düsseldorf Hbf
14:34 ab  Essen Martinstr.: Bstg. 1      Straßenbahn 108      Essen Altenessen Bf Schleife
14:38 an  Essen Hauptbahnhof: Bstg. 1

14:47 ab  Essen Hauptbahnhof: 2          R-Bahn RE11 (RRX)    Düsseldorf Hbf
15:24 an  Düsseldorf Hbf: 10
> hafas-m 'Hamburg Dammtor'
13:49  ( +1)  RE 7     Flensburg                  3
13:49  ( +1)  RE 7     Kiel Hbf                   3
13:49         S 5      Buxtehude                  2
13:50  ( +4)  Bus 5    Nedderfeld, Hamburg
13:50         U 1      Ohlstedt, Hamburg
> efa-m -s VVO Dresden Hbf
13:40 ( -2)  5      66           Lockwitz
13:41        3      3         .  Wilder Mann
13:44        4      3         .  Coschütz
13:44        6      66           Freital-Deuben
13:46 ( +4)  6      360          Kurort Altenberg Bahnhof
13:46        5      360          Dresden Ammonstraße / Budapester Straße
13:48 ( +1)  1      7         *  Weixdorf
13:51        1      10        .  Tolkewitz
13:52        Gl.10  RE3          Hof Hbf

News

Travel-Status-DE-DBRIS-0.01.tar.gz (signature)

  • Initial release
  • Supports station board requests, trip details, and station search

Travel-Status-DE-VRR-3.06.tar.gz (signature)

  • EFA APIs know two types of stop IDs: numbers and codes. This module now consistently refers to numeric stop IDs as id_num and stop ID codes as id_code.
  • Departure: Rename ->stop_id to ->stop_id_num
  • Stop: Rename ->id to ->id_num
  • Stop: Rename ->stop_id to ->id_code
  • Departure: Add ->id accessor.

Travel-Status-DE-VRR-3.05.tar.gz (signature)

  • efa-m: add --raw-json option
  • EFA stopFinder: add special handling for #results == 1
2024-12-22 11:27

Stop IDs in EFA APIs

EFA-based local transit APIs have two kinds of stop identifiers: numbers such as 20009289 and codes such as de:05113:9289. travelynx needs a single type of ID, and this post is meant mostly for myself to find out which ID is most useful. The numeric one would of course be ideal, as travelynx already uses numeric IDs in its stations table.

Numbers

DM_REQUEST: Available as stopID in each departureList entry.

STOPSEQCOORD_REQUEST: Available as parent.properties.stopId in each locationSequence entry.

STOPFINDER_REQUEST: Available as stateless and ref.id.

COORD_REQUEST: missing.

Codes

DM_REQUEST: missing.

STOPSEQCOORD_REQUEST: Available as parent.id in each locationSequence entry. Outside of Germany, the format changes, e.g. placeID:27006983:1 for a border marker (not an actual stop) and NL:S:vl for Venlo Bf.

STOPFINDER_REQUEST: Available as ref.gid.

COORD_REQUEST: Available as id and properties.STOP_GLOBAL_ID in each locations entry.

API Input

  • DM_REQUEST: Accepts stop names, numbers, and codes
  • STOPSEQCOORD_REQUEST: Accepts stop numbers and codes

Examples

  • LinzAG Ebelsberg Bahnhof: 60500470 / at:44:41121
  • LinzAG Linz/Donau Hillerstraße: 60500450 / at:44:41171
  • NWL Essen Hbf: 20009289 / de:05113:9289
  • NWL Münster Hbf: 24041000 / de:05515:41000
  • NWL Osnabrück Hbf: 28218059 / de:03404:71612
  • VRR Essen Hbf: 20009289 / de:05113:9289
  • VRR Nettetal Kaldenkirchen Bf: 20023754 / de:05166:23754
  • VRR Venlo Bf: 21009676 / NL:S:vl

Conclusion

Looks like numeric stop IDs are sufficient. They're missing from the COORD_REQUEST endpoint, but that's not a dealbreaker -- all database-related operations work with DM_REQUEST and STOPSEQCOORD_REQUEST data. Also, there seems to be no universal mapping between the two types of stop IDs.

Travel-Status-DE-VRR-3.04.tar.gz (signature)

  • EFA: Add NWL service definition

Travel-Status-DE-DeutscheBahn-6.15.tar.gz (signature)

  • HAFAS: add SaarVV service definition

Travel-Status-DE-DeutscheBahn-6.13.tar.gz (signature)

  • HAFAS->station: correctly identify referenced stations in non-DB backends

Travel-Status-DE-DeutscheBahn-6.14.tar.gz (signature)

  • DB service: Bump HCI Core and ext versions. Note that the service no longer reports route data for stationboard results after this change.
  • ZVV service: Update HAFAS endpoint URL.

Travel-Status-DE-DeutscheBahn-6.12.tar.gz (signature)

  • Do not cache upstream CGI_NO_SERVER and CGI_READ_FAILED errors. These are typically temporary.

Travel-Routing-DE-HAFAS-0.09.tar.gz (signature)

  • Improve handling of backend messages and errors

Travel-Status-DE-VRR-3.03.tar.gz (signature)

  • efa-m: handle undefined platforms
  • Trip->polyline: pass fallback => 1 to return beeline between stops if the backend did not provide a polyline.

Travel-Status-DE-VRR-3.02.tar.gz (signature)

  • Stop: Add ar_delay, dep_delay, delay, stop_id accessos
  • EFA: Fix place_candidates
  • EFA: Add stop and stops functions
  • EFA: Add static get_servicesmethod
  • efa-m: Add -j/ --with-jidoption
  • efa-m -Oa, -Ob, -Of: Show delays
  • EFA, efa-m: Add stopfinder ("?foo") and stop search ("lat:lon") modes
  • Add ...::Trip and ...::Info modules
  • Info, Stop, Trip: Note that the API of these modules is not yet final and may change between minor versions

Travel-Status-DE-DeutscheBahn-6.11.tar.gz (signature)

  • HAFAS: Add mobiliteit service definition

Travel-Status-DE-VRR-3.01.tar.gz (signature)

  • Fix Departure->route_interesting
  • efa-m: Add --json option

Travel-Status-DE-VRR-3.00.tar.gz (signature)

  • Drop XML::LibXML dependency
  • New dependencies: DateTime::Format::Strptime, JSON
  • Switch API language from XML to JSON
  • Rename Travel::Status::DE::EFA::Result to Travel::Status::DE::EFA::Departure
  • EFA: Add static get_service_ids function
  • EFA: Add bwegt backend service
  • EFA: Remove identified_data accessor (not supported by JSON backends)
  • EFA: Remove static get_efa_urls function; use get_service_ids instead
  • EFA->new, EFA->new_p: Add optional cache key
  • Result/Departure: Add hints accessor
  • Result/Departure: Remove info accessor; use hints instead
  • Stop: Add place, full_name and occupancy accessors
  • Line: Add number accessor
  • Stop: Remove name_suf accessor; use name instead
  • efa-m: -Oa, -Ob, -Of: show per-stop occupancy, if available