194 lines
5.0 KiB
Markdown
194 lines
5.0 KiB
Markdown
# TI-Status2Mattermost
|
|
|
|
Ein Python-Skript, das den TI-Status überwacht und neue Meldungen über Apprise an verschiedene Dienste sendet.
|
|
|
|
## Features
|
|
|
|
- Überwacht die [TI-Status-API](https://github.com/gematik/api-tilage) auf neue Meldungen
|
|
- Sendet Benachrichtigungen über [Apprise](https://github.com/caronc/apprise#supported-notifications) (unterstützt alle verbreiteten Dienste wie Mattermost, Slack, Telegram, Discord, SMTP, Teams, 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
|
|
- Umfassendes Test-Tool
|
|
|
|
## Installation
|
|
|
|
1. Repository klonen:
|
|
```bash
|
|
git clone https://gitea.medisoftware.org/Markus/TI-Status2Mattermost.git
|
|
cd TI-Status2Mattermost
|
|
```
|
|
|
|
2. Virtuelle Umgebung erstellen und aktivieren:
|
|
```bash
|
|
python -m venv .venv
|
|
# Windows:
|
|
.venv\Scripts\activate
|
|
# Linux/Mac:
|
|
source .venv/bin/activate
|
|
```
|
|
|
|
3. Abhängigkeiten installieren:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Konfiguration
|
|
|
|
1. Kopiere die Beispiel-Konfiguration:
|
|
```bash
|
|
# Windows:
|
|
copy env.example .env
|
|
# Linux/Mac:
|
|
cp env.example .env
|
|
```
|
|
|
|
2. Bearbeite die `.env` Datei und konfiguriere deine Endpunkte:
|
|
|
|
### Mehrere Endpunkte konfigurieren
|
|
|
|
```bash
|
|
# Mattermost Webhook
|
|
APPRISE_URL_MATTERMOST=mattermost://username:password@<your-mattermost-server>/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/
|
|
```
|
|
|
|
### 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
|
|
|
|
### Hauptskript ausführen:
|
|
```bash
|
|
python ti_status_checker.py
|
|
```
|
|
|
|
### 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):
|
|
```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:
|
|
- Mattermost
|
|
- Slack
|
|
- Telegram
|
|
- Discord
|
|
- Email
|
|
- Pushover
|
|
- Microsoft Teams
|
|
- und viele weitere
|
|
|
|
## Dateien
|
|
|
|
- `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 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
|
|
- ✅ Unterstützung für über 80 Benachrichtigungsdienste
|
|
- ✅ Debug-Ausgaben für bessere Transparenz
|
|
- ✅ Verbesserte Markdown-Formatierung
|
|
|
|
### Version 1.0 (Ursprünglich)
|
|
- Mattermost Webhook Integration
|
|
- Lokale Statusverfolgung
|
|
|
|
## Lizenz
|
|
|
|
[MIT License](LICENSE.txt) |