train-tracker/README.md

3.1 KiB

Train Tracker

Beschreibung

Train Tracker ist eine in Go geschriebene Anwendung, die Echtzeitinformationen über Zugbewegungen verfolgt und speichert. Sie nutzt die DB-Vendo-API, um Abfahrtsinformationen von spezifizierten Bahnhöfen abzurufen, berechnet die aktuelle Position der Züge basierend auf ihrer Route und speichert diese Informationen in einer MariaDB-Datenbank.

Funktionen

  • Abrufen von Zugabfahrten für mehrere Bahnhöfe
  • Berechnung der aktuellen Zugposition basierend auf Abfahrtszeit und Routeninformationen
  • Speichern und Aktualisieren von Zuginformationen in einer MariaDB-Datenbank
  • Erfassung und Analyse von Verspätungsdaten
  • Automatisches Löschen veralteter Einträge
  • Tägliche Übertragung und Aggregation von Verspätungsstatistiken

Voraussetzungen

  • Go 1.15 oder höher
  • MariaDB
  • Zugang zur DB-Vendo-API

Installation

  1. Klonen Sie das Repository:

    git clone https://code.brothertec.eu/simono41/train-tracker.git
    
  2. Navigieren Sie in das Projektverzeichnis:

    cd train-tracker
    
  3. Installieren Sie die Abhängigkeiten:

    go mod tidy
    

Konfiguration

Konfigurieren Sie die Anwendung über folgende Umgebungsvariablen:

  • DB_DSN: MariaDB-Datenbankverbindungsstring
  • API_BASE_URL: Basis-URL der DB-Vendo-API
  • DURATION: Zeitspanne in Minuten für die Abfrage von Abfahrten
  • DELETE_AFTER_MINUTES: Zeit in Minuten, nach der alte Einträge gelöscht werden
  • STATION_IDS: Komma-getrennte Liste von Bahnhofs-IDs
  • UPDATE_INTERVAL_MINUTES: Intervall in Minuten, in dem der Algorithmus erneut ausgeführt wird (Standard: 1)
  • TRANSFER_TIME: Uhrzeit für die tägliche Übertragung der Verspätungsstatistiken im Format "HH:MM" (Standard: "23:59")

Datenbankstruktur

Die Anwendung verwendet drei Haupttabellen:

  1. trips: Speichert Informationen zu einzelnen Zugfahrten
  2. today_delay_stats: Speichert tägliche Verspätungsstatistiken
  3. delay_stats: Speichert aggregierte Verspätungsstatistiken

Detaillierte Tabellenstrukturen finden Sie in der init.sql Datei.

Verwendung

  1. Stellen Sie sicher, dass die MariaDB-Datenbank läuft und die Tabellen erstellt wurden.

  2. Setzen Sie die erforderlichen Umgebungsvariablen.

  3. Starten Sie die Anwendung:

    go run main.go
    

Die Anwendung wird nun kontinuierlich Abfahrtsinformationen abrufen, Zugpositionen berechnen und in der Datenbank speichern.

Entwicklung

Code-Struktur

  • main.go: Hauptanwendungslogik und Einstiegspunkt des Programms
  • Funktionen wie fetchDepartures(), fetchTripDetails(), savePosition(), calculateCurrentPosition(), updateTodayDelayStats(), transferDailyDelayStats() und deleteOldEntries() implementieren die Kernfunktionalität

Beitrag

Beiträge sind willkommen! Bitte erstellen Sie einen Pull Request für Verbesserungen oder Fehlerbehebungen.

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert.

Kontakt

Bei Fragen oder Problemen öffnen Sie bitte ein Issue im Git-Repository.