Implementiere Multi-Endpoint Support und konfigurierbare Benachrichtigungsregeln (Version 3.0)

This commit is contained in:
2025-06-27 14:08:26 +02:00
parent 18464d4c1b
commit 2b1e4274b3
4 changed files with 450 additions and 62 deletions

107
README.md
View File

@ -6,10 +6,13 @@ Ein Python-Skript, das den TI-Status überwacht und neue Meldungen über Apprise
- Überwacht die TI-Status-API auf neue Meldungen
- Sendet Benachrichtigungen über Apprise (unterstützt viele Dienste wie Mattermost, Slack, Telegram, Discord, etc.)
- **Mehrere Endpunkte gleichzeitig** (Mattermost + Slack + Telegram + ...)
- **Konfigurierbare Benachrichtigungsregeln** (Filter, Zeiten, Verzögerungen)
- Konfiguration über .env Datei
- Markdown-Formatierung der Nachrichten
- Vermeidet Duplikate durch lokale Statusverfolgung
- Debug-Ausgaben für bessere Transparenz
- Umfassende Test-Tools
## Installation
@ -40,38 +43,108 @@ pip install -r requirements.txt
cp env.example .env
```
2. Bearbeite die `.env` Datei und setze deine Apprise URL:
2. Bearbeite die `.env` Datei und konfiguriere deine Endpunkte:
### Mattermost Webhook
```
APPRISE_URL=mattermost://username:password@mattermost.medisoftware.org/channel?webhook=your_webhook_id
### Mehrere Endpunkte konfigurieren
```bash
# Mattermost Webhook
APPRISE_URL_MATTERMOST=mattermost://username:password@mattermost.medisoftware.org/channel?webhook=your_webhook_id
# Slack (optional)
APPRISE_URL_SLACK=slack://token_a/token_b/token_c/#channel
# Telegram (optional)
APPRISE_URL_TELEGRAM=telegram://bottoken/ChatID
# Discord (optional)
APPRISE_URL_DISCORD=discord://webhook_id
# Email (optional)
APPRISE_URL_EMAIL=smtp://user:pass@gmail.com:587
# Pushover (optional)
APPRISE_URL_PUSHOVER=pover://token/user_key
# Microsoft Teams (optional)
APPRISE_URL_TEAMS=msteams://TokenA/TokenB/TokenC/
```
### Andere Dienste
- **Slack**: `APPRISE_URL=slack://token_a/token_b/token_c/#channel`
- **Telegram**: `APPRISE_URL=telegram://bottoken/ChatID`
- **Discord**: `APPRISE_URL=discord://webhook_id`
### Benachrichtigungsregeln
```bash
# Benachrichtigungslevel (all, critical, maintenance, outage)
NOTIFICATION_LEVEL=all
# Filter für bestimmte Begriffe (kommagetrennt)
NOTIFICATION_FILTERS=störung,wartung,warnung
# Benachrichtigungszeiten (24h Format)
NOTIFICATION_HOURS=08:00-18:00
# Verzögerung zwischen Benachrichtigungen (in Sekunden)
NOTIFICATION_DELAY=5
# Debug-Modus für detaillierte Ausgaben
DEBUG_MODE=true
```
### Weitere Apprise-URLs
Weitere Apprise-URLs findest du in der [Apprise-Dokumentation](https://github.com/caronc/apprise#supported-notifications).
## Verwendung
Skript einmalig ausführen:
### Hauptskript ausführen:
```bash
python ti_status_checker.py
```
Das Skript gibt Debug-Informationen aus:
### Verbindungstest:
```bash
python test_apprise.py
```
Das Test-Skript bietet:
- Test aller konfigurierten Endpunkte
- Einzeltests für jeden Endpunkt
- Konfigurationsanzeige
- Direkte URL-Tests
### Debug-Modus aktivieren:
```bash
# In .env setzen:
DEBUG_MODE=true
```
Das Skript gibt dann detaillierte Debug-Informationen aus:
- API-Aufruf und Antwort
- Anzahl der gefundenen Meldungen
- Verarbeitung jeder einzelnen Meldung
- Benachrichtigungsregeln-Auswertung
- Endpunkt-Status
Für kontinuierliche Überwachung (z.B. mit cron):
### Für kontinuierliche Überwachung (z.B. mit cron):
```bash
# Alle 5 Minuten ausführen
*/5 * * * * cd /path/to/TI-Status2Mattermost && python ti_status_checker.py
```
## Benachrichtigungsregeln
### Filter
- Nur Meldungen mit bestimmten Begriffen senden
- Beispiel: `NOTIFICATION_FILTERS=störung,wartung`
### Zeiten
- Benachrichtigungen nur zu bestimmten Zeiten
- Beispiel: `NOTIFICATION_HOURS=08:00-18:00` (nur werktags)
- Beispiel: `NOTIFICATION_HOURS=09:00-17:00,19:00-22:00` (mehrere Zeiträume)
### Verzögerungen
- Verzögerung zwischen mehreren Benachrichtigungen
- Beispiel: `NOTIFICATION_DELAY=30` (30 Sekunden Pause)
## Unterstützte Dienste
Apprise unterstützt über 80 verschiedene Benachrichtigungsdienste, darunter:
@ -86,14 +159,22 @@ Apprise unterstützt über 80 verschiedene Benachrichtigungsdienste, darunter:
## Dateien
- `ti_status_checker.py` - Hauptskript mit Debug-Ausgaben
- `ti_status_checker.py` - Hauptskript mit Multi-Endpoint-Support
- `test_apprise.py` - Umfassendes Test-Tool für alle Endpunkte
- `requirements.txt` - Python-Abhängigkeiten (python-dotenv, apprise)
- `env.example` - Beispiel-Konfiguration
- `env.example` - Beispiel-Konfiguration mit allen Optionen
- `ti_status_state.json` - Lokale Statusverfolgung (wird automatisch erstellt)
- `.env` - Deine Konfiguration (nicht im Repository)
## Changelog
### Version 3.0 (Multi-Endpoint & Rules)
- ✅ Mehrere Apprise-Endpunkte gleichzeitig
- ✅ Konfigurierbare Benachrichtigungsregeln (Filter, Zeiten, Verzögerungen)
- ✅ Erweiterte Debug-Ausgaben
- ✅ Umfassendes Test-Tool für alle Endpunkte
- ✅ Fallback für alte Konfigurationen
### Version 2.0 (Apprise-Integration)
- ✅ Umstellung von Mattermost Webhook auf Apprise API
- ✅ Konfiguration über .env Datei