.dockerignore | ||
.gitignore | ||
docker-compose.yml | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
init.sql | ||
LICENSE | ||
main.go | ||
main.go.old | ||
README.md | ||
Train Tracker-1737329906903.json |
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
-
Klonen Sie das Repository:
git clone https://code.brothertec.eu/simono41/train-tracker.git
-
Navigieren Sie in das Projektverzeichnis:
cd train-tracker
-
Installieren Sie die Abhängigkeiten:
go mod tidy
Konfiguration
Konfigurieren Sie die Anwendung über folgende Umgebungsvariablen:
DB_DSN
: MariaDB-DatenbankverbindungsstringAPI_BASE_URL
: Basis-URL der DB-Vendo-APIDURATION
: Zeitspanne in Minuten für die Abfrage von AbfahrtenDELETE_AFTER_MINUTES
: Zeit in Minuten, nach der alte Einträge gelöscht werdenSTATION_IDS
: Komma-getrennte Liste von Bahnhofs-IDsUPDATE_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:
trips
: Speichert Informationen zu einzelnen Zugfahrtentoday_delay_stats
: Speichert tägliche Verspätungsstatistikendelay_stats
: Speichert aggregierte Verspätungsstatistiken
Detaillierte Tabellenstrukturen finden Sie in der init.sql
Datei.
Verwendung
-
Stellen Sie sicher, dass die MariaDB-Datenbank läuft und die Tabellen erstellt wurden.
-
Setzen Sie die erforderlichen Umgebungsvariablen.
-
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()
unddeleteOldEntries()
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.