Hinzufügen einer Sleeper Function und Anpassung der README
This commit is contained in:
parent
b8502c680e
commit
0dad75038b
2 changed files with 23 additions and 21 deletions
41
README.md
41
README.md
|
@ -2,20 +2,21 @@
|
||||||
|
|
||||||
## Beschreibung
|
## Beschreibung
|
||||||
|
|
||||||
Train Tracker ist ein in Go geschriebenes Programm, das Echtzeitinformationen über Zugbewegungen verfolgt und speichert. Es 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 MySQL-Datenbank.
|
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
|
## Funktionen
|
||||||
|
|
||||||
- Abrufen von Zugabfahrten für mehrere Bahnhöfe
|
- Abrufen von Zugabfahrten für mehrere Bahnhöfe
|
||||||
- Berechnung der aktuellen Zugposition basierend auf Abfahrtszeit und Routeninformationen
|
- Berechnung der aktuellen Zugposition basierend auf Abfahrtszeit und Routeninformationen
|
||||||
- Speichern und Aktualisieren von Zuginformationen in einer MySQL-Datenbank
|
- Speichern und Aktualisieren von Zuginformationen in einer MariaDB-Datenbank
|
||||||
|
- Erfassung und Analyse von Verspätungsdaten
|
||||||
- Automatisches Löschen veralteter Einträge
|
- Automatisches Löschen veralteter Einträge
|
||||||
- Regelmäßige Protokollierung von Datenbankstatistiken
|
- Tägliche Übertragung und Aggregation von Verspätungsstatistiken
|
||||||
|
|
||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|
||||||
- Go 1.15 oder höher
|
- Go 1.15 oder höher
|
||||||
- MySQL-Datenbank
|
- MariaDB
|
||||||
- Zugang zur DB-Vendo-API
|
- Zugang zur DB-Vendo-API
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
@ -39,45 +40,43 @@ Train Tracker ist ein in Go geschriebenes Programm, das Echtzeitinformationen ü
|
||||||
|
|
||||||
Konfigurieren Sie die Anwendung über folgende Umgebungsvariablen:
|
Konfigurieren Sie die Anwendung über folgende Umgebungsvariablen:
|
||||||
|
|
||||||
- `DB_DSN`: MySQL-Datenbankverbindungsstring
|
- `DB_DSN`: MariaDB-Datenbankverbindungsstring
|
||||||
- `API_BASE_URL`: Basis-URL der DB-Vendo-API
|
- `API_BASE_URL`: Basis-URL der DB-Vendo-API
|
||||||
- `DURATION`: Zeitspanne in Minuten für die Abfrage von Abfahrten
|
- `DURATION`: Zeitspanne in Minuten für die Abfrage von Abfahrten
|
||||||
- `DELETE_AFTER_MINUTES`: Zeit in Minuten, nach der alte Einträge gelöscht werden
|
- `DELETE_AFTER_MINUTES`: Zeit in Minuten, nach der alte Einträge gelöscht werden
|
||||||
- `STATION_IDS`: Komma-getrennte Liste von Bahnhofs-IDs
|
- `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
|
## Datenbankstruktur
|
||||||
|
|
||||||
Stellen Sie sicher, dass Ihre MySQL-Datenbank eine `trips`-Tabelle mit folgender Struktur hat:
|
Die Anwendung verwendet drei Haupttabellen:
|
||||||
|
|
||||||
```sql
|
1. `trips`: Speichert Informationen zu einzelnen Zugfahrten
|
||||||
CREATE TABLE trips (
|
2. `today_delay_stats`: Speichert tägliche Verspätungsstatistiken
|
||||||
id VARCHAR(36) PRIMARY KEY,
|
3. `delay_stats`: Speichert aggregierte Verspätungsstatistiken
|
||||||
timestamp DATETIME,
|
|
||||||
train_name VARCHAR(255),
|
Detaillierte Tabellenstrukturen finden Sie in der `init.sql` Datei.
|
||||||
fahrt_nr VARCHAR(255),
|
|
||||||
trip_id VARCHAR(255),
|
|
||||||
latitude DOUBLE,
|
|
||||||
longitude DOUBLE
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
## Verwendung
|
## Verwendung
|
||||||
|
|
||||||
1. Setzen Sie die erforderlichen Umgebungsvariablen.
|
1. Stellen Sie sicher, dass die MariaDB-Datenbank läuft und die Tabellen erstellt wurden.
|
||||||
|
|
||||||
2. Starten Sie die Anwendung:
|
2. Setzen Sie die erforderlichen Umgebungsvariablen.
|
||||||
|
|
||||||
|
3. Starten Sie die Anwendung:
|
||||||
```
|
```
|
||||||
go run main.go
|
go run main.go
|
||||||
```
|
```
|
||||||
|
|
||||||
Die Anwendung wird nun kontinuierlich Abfahrtsinformationen abrufen, die Zugpositionen berechnen und in der Datenbank speichern.
|
Die Anwendung wird nun kontinuierlich Abfahrtsinformationen abrufen, Zugpositionen berechnen und in der Datenbank speichern.
|
||||||
|
|
||||||
## Entwicklung
|
## Entwicklung
|
||||||
|
|
||||||
### Code-Struktur
|
### Code-Struktur
|
||||||
|
|
||||||
- `main.go`: Hauptanwendungslogik und Einstiegspunkt des Programms
|
- `main.go`: Hauptanwendungslogik und Einstiegspunkt des Programms
|
||||||
- Funktionen wie `fetchDepartures()`, `fetchTripDetails()`, `savePosition()`, `calculateCurrentPosition()` und `deleteOldEntries()` implementieren die Kernfunktionalität
|
- Funktionen wie `fetchDepartures()`, `fetchTripDetails()`, `savePosition()`, `calculateCurrentPosition()`, `updateTodayDelayStats()`, `transferDailyDelayStats()` und `deleteOldEntries()` implementieren die Kernfunktionalität
|
||||||
|
|
||||||
### Beitrag
|
### Beitrag
|
||||||
|
|
||||||
|
|
3
main.go
3
main.go
|
@ -195,6 +195,9 @@ func fetchTripDetails(apiBaseURL, tripID string) (*TripDetails, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func savePosition(db *sql.DB, dep Departure, apiBaseURL string) {
|
func savePosition(db *sql.DB, dep Departure, apiBaseURL string) {
|
||||||
|
// Füge einen 3-Sekunden-Sleeper hinzu
|
||||||
|
time.Sleep(3 * time.Second)
|
||||||
|
|
||||||
tripDetails, err := fetchTripDetails(apiBaseURL, dep.TripId)
|
tripDetails, err := fetchTripDetails(apiBaseURL, dep.TripId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Fehler beim Abrufen der Zugdetails für TripID %s: %v\n", dep.TripId, err)
|
log.Printf("Fehler beim Abrufen der Zugdetails für TripID %s: %v\n", dep.TripId, err)
|
||||||
|
|
Loading…
Reference in a new issue