Webbasiertes Dashboard zur automatischen Verarbeitung und Darstellung von Feuerwehr-Alarmen mit Echtzeit-Anzeige, Kartendarstellung und Wetterinformationen.
- Überblick
- Features
- Screenshots
- Systemarchitektur
- Schnellstart
- Installation
- Konfiguration
- Verwendung
- Integration mit alarm-mail und alarm-messenger
- Dokumentation
- Entwicklung
- Lizenz
Der Feuerwehr Alarm Monitor ist ein modernes, webbasiertes Dashboard-System zur automatischen Verarbeitung und Darstellung von Alarm-Meldungen. Das System wurde speziell für Feuerwehren entwickelt und eignet sich für Installationen im lokalen Netzwerk, bei denen ein Server-Gerät die Alarmverarbeitung übernimmt und mehrere Client-Geräte die Informationen in verschiedenen Ansichten darstellen.
- Wachenzentrale: Großbildschirm im Vollbildmodus (Kiosk-Modus)
- Fahrzeughalle: Zusätzliche Displays für schnelle Informationen
- Mobile Endgeräte: Smartphone-optimierte Ansicht mit Navigationsfunktion
- Einsatzleitung: Desktop-Ansicht mit Historie und Detailinformationen
Das System besteht aus drei entkoppelten Komponenten, die zusammen eine vollständige Alarm-Management-Lösung bilden:
- alarm-mail – E-Mail-Überwachung und Parsing
- alarm-monitor (dieses Repository) – Dashboard und Datenverarbeitung
- alarm-messenger (optional) – Mobile Push-Benachrichtigungen und Rückmeldungen
- ✅ API-basierter Empfang – Authentifizierte REST-API für sichere Alarmübermittlung
- ✅ Duplikatserkennung – Automatische Erkennung bereits verarbeiteter Alarme
- ✅ Gruppenfilterung – Optionale Filterung nach TME-Codes oder Gruppennamen
- ✅ Persistente Speicherung – Alle Alarme werden in einer Historie gespeichert
- 🗺️ Automatische Geokodierung – Koordinaten-Ermittlung über OpenStreetMap (Nominatim)
- 🗺️ Interaktive Karte – Einsatzort-Darstellung mit Leaflet und OpenStreetMap
- 🗺️ Navigation – Dedizierte Navigationsseite mit Routenplanung (optional mit OpenRouteService)
- 🗺️ Mobile Navigation – Direkte Links zu Apple Karten / Google Maps
- 🌤️ Aktuelle Wetterdaten – Temperatur, Niederschlag, Wind über Open-Meteo API
- 🌤️ Wettervorhersage – Stündliche Vorhersage für Einsatzplanung
- 🌤️ Standort-Wetter – Wetterdaten für Einsatzort in Alarmansicht
- 🌤️ Idle-Wetter – Lokales Wetter in der Standardansicht
- 📺 Alarm-Ansicht – Vollbildanzeige mit allen Einsatzinformationen
- 📺 Idle-Ansicht – Uhrzeit, Wetter und letzter Einsatz im Ruhezustand
- 📺 Mobile-Ansicht – Optimiert für Smartphones und Tablets
- 📺 Historien-Ansicht – Tabellarische Übersicht aller vergangenen Einsätze
- 📺 Navigations-Ansicht – Routenplanung zum Einsatzort
- 📱 Push-Benachrichtigungen – Mobile Alarmierung über alarm-messenger
- 📱 Teilnehmerrückmeldungen – Echtzeit-Anzeige von Zusagen/Absagen
- 📱 Qualifikationen – Anzeige von Qualifikationen der Teilnehmer
- 📱 Führungsrollen – Kennzeichnung von Führungskräften
- 🎨 Branding – Anpassbare Feuerwehrnamen und Logos
- 🎨 Farbschema – CSS-Variablen für individuelle Farbgestaltung
- 🎨 Anzeigedauer – Konfigurierbare Dauer der Alarmanzeige
- 🎨 Standortdaten – Individuelle Standardkoordinaten und Standortnamen
- ⚙️ Einstellungs-Oberfläche – Webbasierte Konfiguration ohne Neustart
- ⚙️ Feuerwehr-Name – Dynamische Anpassung des angezeigten Namens
- ⚙️ Standortkonfiguration – Einstellung von Standardkoordinaten und Standortnamen
- ⚙️ Gruppenfilter – Konfiguration der TME-Codes direkt in der Oberfläche
- ⚙️ Persistente Speicherung – Einstellungen bleiben über Neustarts hinweg erhalten
Bei einem aktiven Einsatz zeigt das Dashboard alle relevanten Informationen wie Stichwort, Einsatzort, alarmierte Fahrzeuge und Wetterdaten an.
Bei aktivierter alarm-messenger Integration zeigt das Dashboard die Rückmeldungen der Einsatzkräfte in Echtzeit an.
Im Ruhezustand zeigt das Dashboard Uhrzeit, Datum, aktuelles Wetter und den letzten Einsatz.
Übersichtliche Darstellung aller vergangenen Einsätze mit Filterfunktion.
Optimiert für Smartphones und Tablets mit Touch-Bedienung und direkter Navigation.
Webbasierte Konfigurationsoberfläche für zentrale Einstellungen wie Feuerwehr-Name, Standort und Gruppenfilter. Änderungen werden sofort übernommen und persistent gespeichert.
┌─────────────────────┐
│ IMAP Postfach │ ← Leitstelle sendet Alarm-E-Mails
│ (Leitstelle) │
└──────────┬──────────┘
│
│ E-Mails mit XML-Inhalt
↓
┌─────────────────────┐
│ alarm-mail │ ← Überwacht Postfach, parst E-Mails
│ Service │ (separater Microservice)
└──────────┬──────────┘
│
├──────────────────────┬─────────────────────┐
│ │ │
│ POST /api/alarm │ POST /api/emergencies (optional)
↓ ↓ ↓
┌─────────────────────┐ ┌──────────────────┐ ┌─────────────────────┐
│ alarm-monitor │ │ alarm-messenger │ │ Browser Clients │
│ (Dashboard) │◄───│ (optional) │ │ - Desktop │
│ │ │ │ │ - Mobile │
│ - Empfängt Alarme │ │ - Push-Benachri-│ │ - Tablets │
│ - Geokodierung │ │ chtigungen │ │ - Kiosk-Displays │
│ - Wetterabfrage │ │ - Teilnehmer- │ └─────────────────────┘
│ - Speicherung │ │ rückmeldungen │ │
│ - Dashboard-API │ └──────────────────┘ │
└──────────┬──────────┘ │
│ │
│ GET /api/emergencies/{id}/participants │
│ (Teilnehmerrückmeldungen abrufen) │
│ │
└───────────────────────────────────────────────┘
HTTP/HTTPS (Web-Interface)
- E-Mail-Empfang: Die Leitstelle sendet Alarm-E-Mails mit XML-Inhalt an ein IMAP-Postfach
- Parsing: Der
alarm-mailService prüft regelmäßig das Postfach, parst die E-Mails und extrahiert die Alarmdaten - Übermittlung: Alarme werden via REST-API an
alarm-monitorgesendet (und optional analarm-messenger) - Verarbeitung: Der
alarm-monitorreichert Alarme mit Geodaten und Wetterdaten an - Speicherung: Alarme werden persistent in der Historie gespeichert
- Darstellung: Browser-Clients zeigen Alarme in verschiedenen Ansichten an
- Rückmeldung (optional):
alarm-messengersendet Push-Benachrichtigungen und sammelt Teilnehmerrückmeldungen
- Funktion: IMAP-Postfach-Überwachung und E-Mail-Parsing
- Repository: github.com/TimUx/alarm-mail
- Technologie: Python, IMAP, XML-Parsing
- Aufgaben:
- Regelmäßige Prüfung des IMAP-Postfachs
- Parsing von XML-Alarm-Daten
- Validierung und Transformation
- REST-API Übermittlung an alarm-monitor
- Funktion: Zentrale Dashboard-Anwendung
- Technologie: Python, Flask, SQLite/JSON
- Aufgaben:
- Empfang von Alarmen über REST-API
- Geokodierung über Nominatim
- Wetterabfrage über Open-Meteo
- Persistente Speicherung
- Web-Dashboard mit mehreren Ansichten
- API für externe Clients
- Funktion: Mobile Push-Benachrichtigungen und Teilnehmerverwaltung
- Repository: github.com/TimUx/alarm-messenger
- Technologie: Node.js, Express, Push-Notifications
- Aufgaben:
- Empfang von Alarmen vom alarm-mail Service
- Versand von Push-Benachrichtigungen an registrierte Geräte
- Sammlung von Teilnehmerrückmeldungen
- Bereitstellung von Rückmeldedaten für alarm-monitor
- Docker und Docker Compose installiert ODER
- Python 3.9+ für native Installation
- Netzwerkverbindung zu OpenStreetMap und Open-Meteo
- Zugriff auf IMAP-Postfach (für alarm-mail Service)
# 1. Repository klonen
git clone https://github.com/TimUx/alarm-monitor.git
cd alarm-monitor
# 2. Konfiguration erstellen
cp .env.example .env
nano .env # API-Key eintragen: openssl rand -hex 32
# 3. Container starten
docker compose up -d
# 4. Dashboard öffnen
# Browser: http://localhost:8000Fertig! Das Dashboard läuft jetzt und wartet auf Alarme vom alarm-mail Service.
- alarm-mail Service einrichten – Siehe Integration mit alarm-mail
- Konfiguration anpassen – Siehe Konfiguration
- alarm-messenger einrichten (optional) – Siehe Integration mit alarm-messenger
Docker ist die einfachste und empfohlene Methode für Produktion.
# Voraussetzungen installieren
sudo apt update
sudo apt install docker.io docker-compose -y
# Repository klonen
git clone https://github.com/TimUx/alarm-monitor.git
cd alarm-monitor
# Konfiguration erstellen
cp .env.example .env
# API-Key generieren und eintragen
openssl rand -hex 32 # Kopieren Sie den Output
nano .env # Tragen Sie den API-Key ein
# Container bauen und starten
docker compose up --build -d
# Status prüfen
docker compose ps
docker compose logs -f
# Health-Check
curl http://localhost:8000/healthHinweis: Die Datei instance/alarm_history.json wird automatisch gemountet und bleibt bei Container-Updates erhalten.
Für Entwicklung oder wenn Docker nicht verfügbar ist.
# System vorbereiten
sudo apt update
sudo apt install python3 python3-venv python3-pip git -y
# Repository klonen
git clone https://github.com/TimUx/alarm-monitor.git
cd alarm-monitor
# Virtuelle Umgebung erstellen
python3 -m venv .venv
source .venv/bin/activate
# Abhängigkeiten installieren
pip install --upgrade pip
pip install -r requirements.txt
# Konfiguration
cp .env.example .env
openssl rand -hex 32 # API-Key generieren
nano .env # Konfiguration anpassen
# Anwendung starten
flask --app alarm_dashboard.app run --host 0.0.0.0 --port 8000
# Oder mit Gunicorn für Produktion
gunicorn --bind 0.0.0.0:8000 --workers 2 'alarm_dashboard.app:create_app()'Für native Installation mit automatischem Start:
sudo nano /etc/systemd/system/alarm-monitor.service[Unit]
Description=Feuerwehr Alarm Monitor
After=network.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/alarm-monitor
Environment="PATH=/home/pi/alarm-monitor/.venv/bin"
ExecStart=/home/pi/alarm-monitor/.venv/bin/gunicorn \
--bind 0.0.0.0:8000 \
--workers 2 \
--worker-class gthread \
--threads 4 \
'alarm_dashboard.app:create_app()'
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable alarm-monitor
sudo systemctl start alarm-monitor
sudo systemctl status alarm-monitorFür dedizierte Anzeigegeräte im Vollbildmodus:
# Autostart-Skript erstellen
mkdir -p ~/.config/autostart
cat > ~/.config/autostart/alarm-dashboard.desktop << 'EOF'
[Desktop Entry]
Type=Application
Name=Alarm Dashboard Kiosk
Exec=chromium-browser --kiosk --noerrdialogs --disable-infobars --disable-session-crashed-bubble http://SERVER-IP:8000
EOF
# Bildschirmschoner deaktivieren
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
# Folgende Zeilen hinzufügen:
# @xset s off
# @xset -dpms
# @xset s noblankDie Konfiguration erfolgt über zwei Wege:
- Web-Oberfläche (empfohlen): Zentrale Einstellungen können direkt in der Web-Oberfläche unter
/settingskonfiguriert werden - Umgebungsvariablen: Als Fallback für initiale Konfiguration oder wenn keine Web-UI verfügbar ist
Folgende Einstellungen können direkt über die Web-Oberfläche konfiguriert werden (erreichbar über den Einstellungen-Button im Menü):
- Feuerwehr-Name: Name der Feuerwehr, der in allen Ansichten angezeigt wird
- Standard Breitengrad/Längengrad: Koordinaten für Wetter-Anzeige im Ruhezustand
- Standard Standortname: Bezeichnung des Standorts (z.B. "Feuerwache Willingshausen")
- Gruppen-Filter (TME-Codes): Kommagetrennte Liste von TME-Codes zur Alarmfilterung
Hinweis: Web-basierte Einstellungen haben Vorrang vor Umgebungsvariablen und werden persistent gespeichert.
# API-Key für Alarmempfang (ERFORDERLICH)
# Generieren mit: openssl rand -hex 32
ALARM_DASHBOARD_API_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6Wichtig: Dieser API-Key muss im alarm-mail Service als ALARM_MAIL_MONITOR_API_KEY konfiguriert werden.
# Feuerwehr-Name für Anzeige (kann in Web-UI geändert werden)
# ALARM_DASHBOARD_FIRE_DEPARTMENT_NAME=Feuerwehr Musterstadt
# Anzeigedauer eines Alarms in Minuten (danach Wechsel zu Idle-Ansicht)
ALARM_DASHBOARD_DISPLAY_DURATION_MINUTES=30
# Standardkoordinaten für Idle-Ansicht (können in Web-UI geändert werden)
# ALARM_DASHBOARD_DEFAULT_LATITUDE=51.2345
# ALARM_DASHBOARD_DEFAULT_LONGITUDE=9.8765
# ALARM_DASHBOARD_DEFAULT_LOCATION_NAME=Feuerwache Musterstadt# Kommagetrennte Liste von TME-Codes für Alarmfilterung (kann in Web-UI geändert werden)
# Leer = alle Alarme werden angezeigt
# Mit Werten = nur Alarme mit diesen TME-Codes werden angezeigt
# ALARM_DASHBOARD_GRUPPEN=WIL26,WIL41,WIL52# Nominatim für Geokodierung (Standard: OSM)
# ALARM_DASHBOARD_NOMINATIM_URL=https://nominatim.openstreetmap.org/search
# Open-Meteo für Wetter (Standard: Open-Meteo API)
# ALARM_DASHBOARD_WEATHER_URL=https://api.open-meteo.com/v1/forecast
# ALARM_DASHBOARD_WEATHER_PARAMS=current_weather=true&hourly=precipitation,precipitation_probability
# OpenRouteService für Navigation (optional)
# ALARM_DASHBOARD_ORS_API_KEY=your-ors-api-key-here# Messenger-Server URL und API-Key
ALARM_DASHBOARD_MESSENGER_SERVER_URL=https://messenger.example.com
ALARM_DASHBOARD_MESSENGER_API_KEY=your-messenger-api-key-hereHinweis: Ohne diese Konfiguration funktioniert das System vollständig, zeigt aber keine Teilnehmerrückmeldungen an.
# Pfad zur Historie-Datei (Standard: instance/alarm_history.json)
# ALARM_DASHBOARD_HISTORY_FILE=/custom/path/to/history.json
# Version und Release-Link
# ALARM_DASHBOARD_APP_VERSION=v1.0.0
# ALARM_DASHBOARD_APP_VERSION_URL=https://github.com/TimUx/alarm-monitor/releases/tag/v1.0.0# ==============================================
# Feuerwehr Alarm Monitor - Konfiguration
# ==============================================
# --- PFLICHTFELDER ---
ALARM_DASHBOARD_API_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
# --- GRUNDEINSTELLUNGEN ---
ALARM_DASHBOARD_FIRE_DEPARTMENT_NAME=Feuerwehr Willingshausen
ALARM_DASHBOARD_DISPLAY_DURATION_MINUTES=30
ALARM_DASHBOARD_DEFAULT_LATITUDE=50.9345
ALARM_DASHBOARD_DEFAULT_LONGITUDE=9.2834
ALARM_DASHBOARD_DEFAULT_LOCATION_NAME=Feuerwehrhaus Willingshausen
# --- GRUPPENFILTER ---
# Leer = alle Alarme, oder TME-Codes kommagetrennt
ALARM_DASHBOARD_GRUPPEN=
# --- MESSENGER-INTEGRATION (optional) ---
# Für Teilnehmerrückmeldungen und Push-Benachrichtigungen
# ALARM_DASHBOARD_MESSENGER_SERVER_URL=https://messenger.feuerwehr-beispiel.de
# ALARM_DASHBOARD_MESSENGER_API_KEY=messenger-api-key-hier
# --- NAVIGATION (optional) ---
# OpenRouteService API-Key für Routenplanung
# ALARM_DASHBOARD_ORS_API_KEY=ors-api-key-hier
# --- VERSION ---
ALARM_DASHBOARD_APP_VERSION=v1.0.0Das Hauptdashboard zeigt entweder den aktuellen Alarm oder die Idle-Ansicht an.
Alarmansicht (bei aktivem Alarm):
- Einsatzstichwort und Unterstichwort
- Zeitstempel des Alarms
- Interaktive Karte mit Einsatzort
- Vollständige Adressinformationen
- Aktuelle Wetterdaten am Einsatzort
- Diagnose und Bemerkungen
- Alarmierte Fahrzeuge (AAO)
- Funkmeldeempfänger (FME)
- Telefonmeldeempfänger (TME)
- Teilnehmerrückmeldungen (wenn alarm-messenger aktiv)
Idle-Ansicht (kein aktiver Alarm):
- Große Uhr mit Datum
- Lokales Wetter am Standort
- Vereinswappen
- Kompakte Anzeige des letzten Einsatzes
Optimiert für Smartphones und Tablets:
- Touch-freundliche Bedienung
- Kompakte Informationsdarstellung
- Direkte Navigation zu Apple Karten / Google Maps
- Automatische Aktualisierung
Tabellarische Übersicht aller Einsätze:
- Chronologische Sortierung (neueste zuerst)
- Zeitstempel, Stichwort, Ort
- Diagnose und Bemerkungen
- Alarmierte Fahrzeuge
- Filterbare Tabelle
Dedizierte Seite für Routenplanung:
- Karte mit Einsatzort
- Routenplanung mit OpenRouteService (optional)
- Entfernungs- und Zeitberechnung
Webbasierte Konfigurationsoberfläche:
- Feuerwehr-Name: Anpassung des angezeigten Namens
- Standortkonfiguration: Eingabe von Breitengrad, Längengrad und Standortname
- Gruppenfilter: Konfiguration der TME-Codes (kommagetrennt)
- Sofortige Übernahme: Änderungen werden direkt nach dem Speichern übernommen
- Persistente Speicherung: Einstellungen bleiben über Neustarts erhalten
- Erreichbar über den Einstellungen-Button in der Navigation aller Seiten
POST /api/alarm
Content-Type: application/json
X-API-Key: <ihr-api-key>
{
"incident_number": "2024-001",
"keyword": "F3Y",
"description": "Brand in Wohngebäude",
"location": "Musterstraße 1",
"latitude": 51.2345,
"longitude": 9.8765,
...
}GET /api/alarm
# Antwort bei aktivem Alarm:
{
"active": true,
"alarm": { ... },
"last_alarm": { ... }
}
# Antwort bei Idle:
{
"active": false,
"last_alarm": { ... }
}GET /api/history?limit=50
# Antwort:
{
"history": [
{ ... },
{ ... }
],
"count": 50
}GET /api/mobile/alarm
# Optimierte Antwort für mobile ClientsGET /api/settings
# Antwort:
{
"fire_department_name": "Feuerwehr Willingshausen",
"default_latitude": 51.2345,
"default_longitude": 9.8765,
"default_location_name": "Feuerwache Willingshausen",
"activation_groups": "WIL26,WIL41,WIL52"
}POST /api/settings
Content-Type: application/json
{
"fire_department_name": "Feuerwehr Musterstadt",
"default_latitude": 50.1234,
"default_longitude": 8.5678,
"default_location_name": "Hauptwache",
"activation_groups": "MST10,MST20"
}
# Antwort:
{
"status": "ok",
"settings": { ... }
}GET /health
# Antwort:
{"status": "ok"}# Eigenes Wappen ersetzen (PNG mit transparentem Hintergrund empfohlen)
cp mein-wappen.png alarm_dashboard/static/img/crest.png
# Container neu starten (Docker)
docker compose restartFarben sind als CSS-Variablen definiert und können einfach angepasst werden:
# Datei bearbeiten
nano alarm_dashboard/static/css/dashboard.cssRelevante CSS-Variablen:
:root {
--accent: #e74c3c; /* Hauptfarbe (Rot) */
--accent-dark: #c0392b;
--background: #1a1a1a; /* Hintergrund */
--surface: #2d2d2d; /* Karten-Hintergrund */
--text: #ffffff; /* Textfarbe */
--text-secondary: #b0b0b0;
}
body.mode-idle {
--idle-accent: #3498db; /* Farbe in Idle-Ansicht */
--idle-bg: #0f0f0f;
}Der alarm-mail Service ist erforderlich um Alarme aus dem IMAP-Postfach zu empfangen.
# Repository klonen
git clone https://github.com/TimUx/alarm-mail.git
cd alarm-mail
# Konfiguration erstellen
cp .env.example .env
nano .env# --- IMAP-Postfach ---
ALARM_MAIL_IMAP_HOST=imap.example.com
ALARM_MAIL_IMAP_PORT=993
ALARM_MAIL_IMAP_USE_SSL=true
ALARM_MAIL_IMAP_USERNAME=alarm@feuerwehr.de
ALARM_MAIL_IMAP_PASSWORD=IhrSicheresPasswort
ALARM_MAIL_IMAP_MAILBOX=INBOX
ALARM_MAIL_POLL_INTERVAL=60
# --- alarm-monitor Integration ---
# Wichtig: API-Key muss mit alarm-monitor übereinstimmen!
ALARM_MAIL_MONITOR_URL=http://alarm-monitor:8000
ALARM_MAIL_MONITOR_API_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6# Docker
docker compose up -d
# Oder nativ
python -m alarm_mail.appFür eine gemeinsame Installation können beide Services in einer compose.yaml kombiniert werden:
services:
alarm-monitor:
build: ./alarm-monitor
ports:
- "8000:8000"
env_file:
- ./alarm-monitor/.env
volumes:
- ./alarm-monitor/instance:/app/instance
alarm-mail:
build: ./alarm-mail
depends_on:
- alarm-monitor
env_file:
- ./alarm-mail/.env
environment:
- ALARM_MAIL_MONITOR_URL=http://alarm-monitor:8000Der alarm-messenger Service ist optional und ermöglicht mobile Push-Benachrichtigungen und Teilnehmerrückmeldungen.
# Repository klonen
git clone https://github.com/TimUx/alarm-messenger.git
cd alarm-messenger
# Konfiguration
cp .env.example .env
nano .env # API_SECRET_KEY setzen
# Starten
docker compose up -d# In alarm-monitor .env hinzufügen:
ALARM_DASHBOARD_MESSENGER_SERVER_URL=http://alarm-messenger:3000
ALARM_DASHBOARD_MESSENGER_API_KEY=<api-secret-key-vom-messenger># In alarm-mail .env hinzufügen:
ALARM_MAIL_MESSENGER_URL=http://alarm-messenger:3000
ALARM_MAIL_MESSENGER_API_KEY=<api-secret-key-vom-messenger>alarm-mailempfängt Alarm und sendet an beide Servicesalarm-messengersendet Push-Benachrichtigungen an registrierte Geräte- Teilnehmer geben Rückmeldung in ihrer App
alarm-monitorfragt Teilnehmerliste vomalarm-messengerab- Dashboard zeigt Rückmeldungen in Echtzeit an
Weitere Details siehe docs/MESSENGER_INTEGRATION.md
- 📚 Dokumentations-Index – Übersicht aller Dokumentation
- 🚀 Quick Start Guide – 15-Minuten Schnelleinstieg
- 📖 Betriebshandbuch – Ausführliche Anleitung für Installation, Betrieb und Wartung
- 🏗️ Architecture – Technische Systemarchitektur
- ❓ FAQ – Häufig gestellte Fragen
- 📱 Messenger-Integration – Details zur Integration mit alarm-messenger
- 📸 Screenshots – Visuelle Dokumentation aller Ansichten
- 🤝 Contributing – Beiträge zum Projekt
- alarm-mail Repository – E-Mail-Überwachung und Parsing
- alarm-messenger Repository – Mobile Benachrichtigungen
- Externe Dienste:
- Nominatim API – Geokodierung
- Open-Meteo API – Wetterdaten
- OpenRouteService – Routenplanung
- Leaflet – Kartendarstellung
alarm-monitor/
├── alarm_dashboard/ # Hauptanwendung
│ ├── app.py # Flask-Anwendung
│ ├── config.py # Konfiguration
│ ├── storage.py # Alarm-Speicherung
│ ├── geocode.py # Geokodierung
│ ├── weather.py # Wetterabfrage
│ ├── messenger.py # Messenger-Integration
│ ├── static/ # CSS, JS, Bilder
│ │ ├── css/
│ │ ├── js/
│ │ └── img/
│ └── templates/ # HTML-Templates
│ ├── dashboard.html
│ ├── mobile.html
│ ├── history.html
│ └── navigation.html
├── tests/ # Unit-Tests
├── docs/ # Dokumentation
│ ├── screenshots/
│ └── MESSENGER_INTEGRATION.md
├── instance/ # Persistente Daten (nicht im Repo)
│ └── alarm_history.json
├── .env.example # Beispiel-Konfiguration
├── requirements.txt # Python-Abhängigkeiten
├── Dockerfile # Container-Image
├── compose.yaml # Docker Compose
└── README.md # Diese Datei
# Repository klonen und Setup
git clone https://github.com/TimUx/alarm-monitor.git
cd alarm-monitor
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Entwicklungsserver starten
export FLASK_APP=alarm_dashboard.app
export FLASK_ENV=development
flask run --debug --host 0.0.0.0 --port 8000
# Tests ausführen
pytest
# Test-Alarm senden
curl -X POST http://localhost:8000/api/alarm \
-H "X-API-Key: $(grep ALARM_DASHBOARD_API_KEY .env | cut -d= -f2)" \
-H "Content-Type: application/json" \
-d '{
"incident_number": "TEST-001",
"keyword": "F3Y",
"keyword_sub": "Brand",
"location": "Teststraße 1, 12345 Teststadt",
"latitude": 51.2345,
"longitude": 9.8765,
"description": "Test-Alarm für Entwicklung"
}'# Code-Formatierung
black alarm_dashboard/
# Linting
flake8 alarm_dashboard/
pylint alarm_dashboard/
# Type-Checking
mypy alarm_dashboard/Beiträge sind willkommen! Bitte:
- Forken Sie das Repository
- Erstellen Sie einen Feature-Branch (
git checkout -b feature/amazing-feature) - Committen Sie Ihre Änderungen (
git commit -m 'Add amazing feature') - Pushen Sie den Branch (
git push origin feature/amazing-feature) - Öffnen Sie einen Pull Request
Dieses Projekt steht unter der MIT-Lizenz. Siehe LICENSE Datei für Details.
- GitHub Issues: https://github.com/TimUx/alarm-monitor/issues
- E-Mail: t.braun@feuerwehr-willingshausen.de
- OpenStreetMap für Kartendaten und Nominatim-Geokodierung
- Open-Meteo für kostenlose Wetterdaten
- Leaflet für die Kartenbibliothek
- Alle Beitragenden und Tester
Mit ❤️ entwickelt für Feuerwehren





