2025-01-19 04:33:49 +01:00
# Train Tracker
2024-09-28 14:13:32 +02:00
## Beschreibung
2025-01-19 16:48:15 +01:00
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.
2024-09-28 14:13:32 +02:00
## Funktionen
2025-01-19 04:33:49 +01:00
- Abrufen von Zugabfahrten für mehrere Bahnhöfe
- Berechnung der aktuellen Zugposition basierend auf Abfahrtszeit und Routeninformationen
2025-01-19 16:48:15 +01:00
- Speichern und Aktualisieren von Zuginformationen in einer MariaDB-Datenbank
- Erfassung und Analyse von Verspätungsdaten
2025-01-19 04:33:49 +01:00
- Automatisches Löschen veralteter Einträge
2025-01-19 16:48:15 +01:00
- Tägliche Übertragung und Aggregation von Verspätungsstatistiken
2024-09-28 14:13:32 +02:00
## Voraussetzungen
2025-01-19 04:33:49 +01:00
- Go 1.15 oder höher
2025-01-19 16:48:15 +01:00
- MariaDB
2025-01-19 04:33:49 +01:00
- Zugang zur DB-Vendo-API
2024-09-28 14:13:32 +02:00
## Installation
1. Klonen Sie das Repository:
```
2025-01-19 04:33:49 +01:00
git clone https://code.brothertec.eu/simono41/train-tracker.git
2024-09-28 14:13:32 +02:00
```
2025-01-19 04:33:49 +01:00
2. Navigieren Sie in das Projektverzeichnis:
```
cd train-tracker
```
2024-09-28 14:13:32 +02:00
2025-01-19 04:33:49 +01:00
3. Installieren Sie die Abhängigkeiten:
2024-09-28 14:13:32 +02:00
```
2025-01-19 04:33:49 +01:00
go mod tidy
2024-09-28 14:13:32 +02:00
```
## Konfiguration
2025-01-19 04:33:49 +01:00
Konfigurieren Sie die Anwendung über folgende Umgebungsvariablen:
2024-09-28 14:13:32 +02:00
2025-01-19 16:48:15 +01:00
- `DB_DSN` : MariaDB-Datenbankverbindungsstring
2025-01-19 04:33:49 +01:00
- `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
2025-01-19 16:48:15 +01:00
- `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")
2024-09-28 14:13:32 +02:00
2025-01-19 04:33:49 +01:00
## Datenbankstruktur
2024-09-28 14:13:32 +02:00
2025-01-19 16:48:15 +01:00
Die Anwendung verwendet drei Haupttabellen:
2024-09-28 14:13:32 +02:00
2025-01-19 16:48:15 +01:00
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.
2024-09-28 14:13:32 +02:00
2025-01-19 04:33:49 +01:00
## Verwendung
2025-01-19 16:48:15 +01:00
1. Stellen Sie sicher, dass die MariaDB-Datenbank läuft und die Tabellen erstellt wurden.
2. Setzen Sie die erforderlichen Umgebungsvariablen.
2025-01-19 04:33:49 +01:00
2025-01-19 16:48:15 +01:00
3. Starten Sie die Anwendung:
2025-01-19 04:33:49 +01:00
```
go run main.go
```
2025-01-19 16:48:15 +01:00
Die Anwendung wird nun kontinuierlich Abfahrtsinformationen abrufen, Zugpositionen berechnen und in der Datenbank speichern.
2025-01-19 04:33:49 +01:00
2024-09-28 14:13:32 +02:00
## Entwicklung
2025-01-19 04:33:49 +01:00
### Code-Struktur
- `main.go` : Hauptanwendungslogik und Einstiegspunkt des Programms
2025-01-19 16:48:15 +01:00
- Funktionen wie `fetchDepartures()` , `fetchTripDetails()` , `savePosition()` , `calculateCurrentPosition()` , `updateTodayDelayStats()` , `transferDailyDelayStats()` und `deleteOldEntries()` implementieren die Kernfunktionalität
2025-01-19 04:33:49 +01:00
### Beitrag
2024-09-28 14:13:32 +02:00
2025-01-19 04:33:49 +01:00
Beiträge sind willkommen! Bitte erstellen Sie einen Pull Request für Verbesserungen oder Fehlerbehebungen.
2024-09-28 14:13:32 +02:00
## Lizenz
2025-01-19 04:33:49 +01:00
Dieses Projekt ist unter der [MIT-Lizenz ](https://opensource.org/licenses/MIT ) lizenziert.
## Kontakt
Bei Fragen oder Problemen öffnen Sie bitte ein Issue im [Git-Repository ](https://code.brothertec.eu/simono41/train-tracker ).