ETB – Das Einsatztagebuch
ETB – Das Einsatztagebuch
ETB – Das Einsatztagebuch (kurz: ETB) ist das Einsatzdokumentations-Produkt von BrunSoft.
Web-basiertes Einsatztagebuch mit automatischem Mail-Parser, Lagekarte, Alarmierung (Telegram oder Web Push) und Rollen-Konzept — entwickelt für eine Feuerwehr in NRW, von Grund auf darauf ausgelegt, von anderen Feuerwehren übernommen und über einen Setup-Wizard auf die eigene Wache konfiguriert zu werden.
Status: aktiv im Einsatz bei einer Feuerwehr. Andere Feuerwehren sind willkommen — die ortspezifischen Stellen werden Schritt für Schritt in den Setup-Wizard und in Konfigurations-Settings verschoben.
Was es kann
- Mail-Parser — eingehende Alarm-Mails der Leitstelle werden automatisch geparst (Stichwort, Adresse, Sachverhalt, Einsatzmittel, Melder) und erzeugen einen Einsatz in der Datenbank.
- Stichwort-Katalog — administrierbarer Katalog der Einsatzstichworte (Kategorie, volles Stichwort, Anzeige-Variante, Aliase) inkl. CSV-Import und automatisch abgeleiteter Anzeige-Variante über Ausblend-Präfixe. Im Einsatz-Formular wählst du das Stichwort verkettet (Kategorie → Stichwort); Freitext bleibt für noch nicht katalogisierte Stichworte möglich. Der Mail-Parser gleicht eingehende Alarm-Mails gegen den Katalog ab (Treffer auf volles Stichwort oder Alias → Anzeige-Variante).
- Lagekarte — Leaflet/OpenStreetMap, zeigt offene und abgeschlossene Einsätze, Hydranten und Einsatzmittel-Marker. Das Einsatzmittel-Panel öffnet am Smartphone und im Tablet-Hochformat als Vollbild-Overlay.
- Karten-Links je Einsatz — direkte Sprünge zur Einsatzstelle in externen Karten-Diensten: TIM-Online (NRW-Kataster), Digitaler Zwilling NRW (dz.nrw.de, landesweites 3D-Geosystem — je Instanz ab-/zuschaltbar), OpenStreetMap und der eigene Hydrantenplan — in der Einsatz-Detailseite und in der Telegram-Alarm-Nachricht. Die für den Digitalen Zwilling nötigen UTM-Koordinaten (EPSG:25832) berechnet das ETB automatisch aus den GPS-Daten.
- Kurz-Standort je Einsatz — optionales, kompaktes Standort-Kürzel
zusätzlich zur Adresse, automatisch aus den GPS-Koordinaten abgeleitet:
als Plus Code (Open Location Code, offline berechnet, kostenlos) und/oder
what3words (kostenpflichtiger API-Schlüssel in
config/.env). Beide Anbieter sind je Instanz einzeln zuschaltbar und standardmäßig aus; im Bearbeiten-Formular lässt sich der Standort auch per Kürzel setzen (bidirektionale Angleichung mit GPS/UTM). what3words mit Monatszähler und Verbindungstest im Admin sowie Kontingent-Karte im System-Status. - Hydrantenplan — eigene OSM-basierte Karte mit dem Hydranten-Inventar der Wehr, gespeist aus einer selbst hochgeladenen GeoJSON-Datei (zweistufiger Upload mit Vorschau, tolerant bei Feldnamen). Farb-Klassen nach Nennweite (Schwellen, Bezeichnungen und Farben frei konfigurierbar), Filter nach Ort und Dimension.
- Meldungs-Bus & Alarmierung — alle Nachrichten des ETB laufen über eine kanal-unabhängige Schicht: Adressiert wird an Benutzer, Rollen und Löschgruppen, ein austauschbarer Kanal-Adapter macht daraus die Zustellung — wahlweise Telegram oder Web Push (siehe unten). Der Zustellweg gilt für die ganze Installation — ein einzelner Benutzer wählt ihn bewusst nicht selbst. Für den Umstieg gibt es die Erprobung: Solange sie läuft, kann der Administrator einzelnen Personen einen abweichenden Weg geben (Telegram, Web Push oder beides), ohne dass die übrige Wehr etwas merkt; das Beenden setzt den Kanal für alle und alle Ausnahmen zurück. Im Admin-Bereich Mitteilungen legst du je Meldungsart mehrere Regeln fest (die Führungsstelle bekommt anderen Text und andere Rückmeldungen als eine Löschgruppe; pro Person greift die erste passende), je Regel eine Kurzfassung für Benachrichtigungen — bewusst ohne Personendaten — und eine Langfassung, beides mit Live-Vorschau. Der Katalog zeigt außerdem die Handlung hinter einer Meldung: welchen Knopf sie im Postfach trägt, wohin er führt und welches Recht ihn sichtbar macht. Die Antworten einer Entscheidung (Gerät freigeben/abmelden) sind dabei fest eingebaut und bewusst nicht editierbar — sie lösen eine echte Handlung aus. Dazu ein Zustellnachweis mit sechs Zuständen (offen, zugestellt, nur eingeschränkt, nur im ETB sichtbar, nicht gesendet, fehlgeschlagen) und Eskalation bei echter Fehlzustellung; einen Ausweichkanal gibt es bewusst nicht. Jeder Benutzer sieht in seinem Postfach, was an ihn ging. Für reine Alarm-Empfänger gibt es die Rolle Einsatzkraft: ein Konto ohne Zugang, das die Person nur adressierbar macht. Telegram bringt weiterhin die Sonder-Nachricht für IuK-Alarmstichworte und sechs frei editierbare Nachrichten-Templates (Alarm, Alarmierungsliste, Fehler, Heartbeat, ETB-Reset, Selbsttest) mit Platzhaltern und Live-Vorschau.
- Rückkanal — „wer kommt?" ohne Messenger — Rückmeldungen hängen an
Meldung und Person: als Knöpfe in der App, als Knöpfe direkt an der
Push-Benachrichtigung (ohne App und ohne Anmeldung — der einzige Weg für
die Rolle Einsatzkraft) und als Knöpfe an der Telegram-Nachricht.
Die Rückmeldung ist immer eine der vorgegebenen Antworten, damit sie
auswertbar bleibt; ein optionaler Zusatztext ergänzt sie. Aus dem
Telegram-Chat zählt eine Antwort nur, wenn sie aus einem Chat kommt, in den
die Instanz selbst sendet; wie sie hereinkommt, ist wählbar — per
Webhook (sofort, braucht HTTPS und Erreichbarkeit von außen) oder per
Abholen über den Cron (ausgehender Aufruf, läuft auf jedem Webspace, so
frisch wie der Cron-Takt). Ausgewertet wird das unter Rückmeldungen
(Recht
mitteilung.rueckmeldungen, für Gast und Einsatzkraft gesperrt — die Seite zeigt Klarnamen), mit Filter je Einsatz. Dazu zwei Dinge, die sonst mit dem Gruppen-Chat verloren gingen: die Sammelmeldung — nach einem kurzen Fenster ein Stand der Rückmeldungen an die Führung, leise, plus genau ein Nachtrag (frühestens fünf Minuten später) — und die freie Durchsage an eine Löschgruppe oder Rolle (Rechtmitteilung.durchsage, protokolliert, keine Direktnachricht an Einzelne). Wer wie geantwortet hat, steht mit Namen direkt unter der Meldung im Postfach — für Träger des Rechtsmitteilung.rueckmeldungen(Default Lage/EL/Admin); ohne das Recht nur die Anzahl der Zusagen, und an Gast und Einsatzkraft grundsätzlich keine Klarnamen. - Postfach & Profil — die Sicht der einzelnen Person — das Postfach bündelt alles Nachrichtliche und sortiert nicht nach Datum, sondern nach „Wartet auf Dich" (Rückmeldung oder Entscheidung nötig) und „Verlauf"; ein Briefsymbol mit Zähler führt von jeder Seite dorthin, in der installierten App steht dieselbe Zahl am App-Symbol. Meldungen tragen die passende Handlung als Knopf (Schema-Check öffnen, Gerät freigeben, Warnung ansehen) — nur, wenn das Recht dafür da ist. Entscheidungen (Gerät freigeben, Warnung freigeben) bleiben 14 Tage offen statt vier Stunden und verlassen die Instanz nie über Telegram, weil dort jeder Mitleser entscheiden könnte. Im Profil sieht jeder seine eigenen Geräte mit Zustand (Erreichbar / Unbewiesen / Wartet auf Freigabe / Stumm), löst je Gerät einen Probealarm aus und pflegt Name, E-Mail und Passwort selbst.
- Web Push — Alarmierung über die eigene App, ohne Fremddienst — zweiter
Zustellweg des Meldungs-Bus: Alarme landen direkt auf Handy und Tablet,
adressiert an Personen statt an Chats. Damit kommen auch personengenaue
Meldungen (Freigabe-Anfrage, Rollen-Angebot) wirklich an. Die Nutzlast ist
zwischen Server und Gerät verschlüsselt (RFC 8291/8292, gegen die
Testvektoren der Standards geprüft) — der Push-Dienst von Google, Apple
oder Mozilla sieht nur Chiffrat und Geräte-Adresse, keine Einsatzdaten.
Auf dem Sperrbildschirm steht bewusst nur die Kurzfassung ohne
Personendaten. Verwaltet wird das unter
Admin → Mitteilungen → Web Push: Schlüssel der Instanz (einmalig), optionale Freigabe neuer Geräte (Vorgabe aus), eine Bereitschafts-Übersicht, die Personen zählt (erreichbar / unbewiesen / stumm / ohne Gerät) und die Geräteliste — dort unterscheidet das ETB abgeschickt von angekommen: Erst der Empfangsnachweis des Geräts belegt, dass es klingelt. Wer sich anmelden kann, richtet sein Gerät selbst im Profil ein (mit Probealarm zur Prüfung); für die Rolle Einsatzkraft (kein Zugang) gibt es einen Einladungslink — 14 Tage gültig, genau einmal verwendbar, ausdrücklich keine Anmeldung. Voraussetzung: die Instanz läuft über HTTPS (auf iPhone/iPad zusätzlich „Zum Home-Bildschirm"). - Alarmmonitor für die Fahrzeughalle — die Seite Rückmeldungen hat einen Vollbild-Modus: links die Lage (Nummer, Stichwort, Adresse, Sachverhalt, kleine Lagekarte), rechts wer kommt — Atemschutzgeräteträger mit einem AGT hinter dem Namen, ebenso in der Rückmeldeliste. Die Schriftgröße stellt man vor Ort per Regler ein, weil dieselbe Pixelzahl auf 32″ und 65″ eine andere Millimeterhöhe ist; ein Knopf schaltet auf Großschrift für den Blick vom Hallentor. Drei Zustände, nie zwei: Lage, Ruhe (Uhr, Datum, letzte Einsätze, Wetter) und Störung — antwortet der Server nicht, bleibt der letzte Stand mit seinem Alter stehen, samt dem Satz „Ein Alarm in dieser Zeit wäre hier nicht zu sehen". Für Schirme ohne Anmeldung gibt es Bildschirm-Zugänge: je Schirm eine eigene, einzeln widerrufbare Adresse, die nur das Lagebild lesen darf — kein Postfach, keine Einsatzakte, keine Verwaltung.
- Kurznachricht zur Lage — „ELW raus", „Abbruch". Jeder Empfänger einer Meldung kann mit einem Tipp die anderen Empfänger derselben Meldung informieren. Ausdrücklich keine Rückmeldung: Sie sagt etwas über die Lage, nicht darüber, wer kommt, und zählt in keiner Kachel mit.
- Nachsehen können — Zustellprotokoll und Status — das Zustellprotokoll beantwortet „ist der Alarm angekommen?" je Meldung (so viele Empfänger, so viele erreicht, so viele Antworten; ein Klick zeigt Inhalt und alle Empfänger mit ihrem Stand). Die Statusseite beantwortet „käme jetzt einer an?" in einem Rutsch — Zustellweg, Schlüssel, Erreichbarkeit, letzte Meldung, Zustellquote, Lebenszeichen des Cron, Hallenbildschirme. Jeder Punkt sagt, was zu tun ist, und verlinkt dorthin.
- „Auf diesem Gerät angemeldet bleiben" — ein Häkchen beim Anmelden, und das Gerät fragt 90 Tage nicht mehr nach dem Passwort; die Sitzung endet sonst nach zwölf Stunden Untätigkeit, und wer nachts um drei alarmiert wird, müsste erst tippen. Freiwillig, im Profil sichtbar, einzeln widerrufbar — und die Verwaltung öffnet es nicht: Für alles unter Administration fragt das ETB weiterhin nach dem Passwort.
- Multi-Alarm-Regeln & manuelle Auslösung — ein Stichwort kann
automatisch mehrere Folge-Einsätze (oder -Abschnitte) anlegen
(z. B. UW-ERSTALARM → Grundschutz + Bereitstellung). Bleibt die
Leitstellen-Mail aus, löst der Knopf „
⚡ Alarm auslösen" dieselbe Regel von Hand aus — Basis-Einsatz + Folge-Einsätze an wählbarer Adresse inklusive echter Telegram-Alarmierung, mit Cooldown gegen Doppelauslösung (Recht „Alarm manuell auslösen", Default Lage/EL/Admin). Auch bei manuell angelegten oder geänderten Einsätzen bietet ein Bestätigungs-Banner das Auslösen passender Regeln an (Telegram optional, je Regel und Einsatz nur einmal). - Rollen-Konzept —
admin,lage,einsatzleiter,dispo,sp_dispo,gastmit abgestuften Rechten auf Einsätze, Abschnitte, Schwerpunkte und Stammdaten, dazueinsatzkraftals reiner Meldungs-Empfänger ohne Login (das Konto macht die Person nur über ihre Löschgruppe adressierbar; zurückgemeldet wird direkt an der Benachrichtigung). Berechtigungen pro Rolle administrierbar (/admin/rollen.php) über eine Häkchen-Matrix aus 48 atomaren Permissions — mit Admin-Failsafe und Locked-Permissions gegen Selbst-Aussperren. Rollen-, Aktiv- und Einsatz-Rollen-Änderungen wirken ohne Neuanmeldung (Status-Prüfung pro Request; deaktivierte Konten werden sofort ausgeloggt). Passwort-Selbsthilfe per E-Mail-Link (zeitlich begrenzt, einmalig, nur für Konten mit hinterlegter E-Mail) über ausgehenden SMTP-Versand; keine Selbstregistrierung. Angemeldet ändert jeder Name, E-Mail und Passwort selbst im Profil (Passwortwechsel nur mit dem alten Passwort, jede Adresse gehört genau einem Konto); Benutzername, Rolle und Löschgruppen bleiben Sache der Administration. - Einsatz-Rollen (temporäre Rollen) — einem Benutzer befristet (max. 48 h) die höhere Rolle Einsatzleiter oder Lage leihen, z. B. für eine mehrtägige Lage. Wirkt sofort ohne Neuanmeldung, das höhere Recht gewinnt („Highlander"), und läuft automatisch aus. Administrator und Schwerpunkt-Dispo sind ausgeschlossen. Wer die Rolle selbst nur geliehen hat, darf sie ihrerseits weitervergeben — die Kette wird dabei über die Laufzeit gedeckelt (endet spätestens mit der eigenen geliehenen Rolle), nicht über ein Verbot. Dazu der Alarm-Knopf (je Alarm-Regel konfigurierbar): Löst die Regel aus, kann ein Disponent die Rolle Lage oder Einsatzleiter einmalig selbst übernehmen — für Alarmlagen ohne anwesende Führung; die so übernommene Lage darf dabei unabhängig vom sonst nötigen Vergabe-Recht weitervergeben, höhere Rollen können das Angebot stattdessen entschärfen. Entziehen („Entfernen", „Alle zurücksetzen") bleibt dagegen der festen Basis-Rolle vorbehalten — eine geliehene Rolle kann ihrem Verleiher nichts wegnehmen.
- Abschnitts-Funktion — größere Einsätze in operative Abschnitte unterteilen (Wasserversorgung, Brandbekämpfung, …) mit eigenem Status, Abschnittsleiter, Funk-Rufgruppe und Einsatzmittel-Zuweisung.
- Schwerpunkte (Großlagen-Gruppierung) — bei Unwetter, Flächenbrand oder Großübung mehrere Einsätze unter einem dedizierten Disponenten bündeln; eigener Einsatzmittel-Pool, eigene Lagekarte mit Dichte- Visualisierung, automatische Einsatz-Zuweisung nach Ort, eigenes „Schwerpunkttagebuch" mit gefiltertem Sub-View aller Module. Optional entsteht beim Anlegen automatisch ein Leitungs-Einsatz für die Schwerpunkt-Führung — ein ganz normaler, oben fixierter Einsatz, der sich wie jeder andere verhält (auch beim Abschluss). Wichtige Einsätze lassen sich in der Übersicht per Reißzwecken-Symbol anheften und stehen dann unabhängig von Sortierung immer oben.
- Bevölkerungswarnung (MoWaS) — das standardisierte Anforderungsformular
für eine Warnung über das Modulare Warnsystem (Warn-App NINA, Sirenen,
Cell Broadcast, Rundfunk) im ETB erfassen, freigeben und als versandfertiges
PDF erzeugen — an einem Einsatz oder Schwerpunkt gestartet und aus dessen
Daten vorbelegt. Mit Vier-Augen-Freigabe je Zyklus (Erstwarnung →
Aktualisierung → Entwarnung), Warnbereichen (eigen/Nachbar/„Gesamt"),
editierbaren Handlungsempfehlungen und Meldungsvorlagen mit Platzhaltern,
administrierbaren Katalogen samt Musterdaten-Loader, revisionsfester
Historisierung der übermittelten Stände, einem Zivilschutz-Warn-Indikator
in Listen/Detail und Warnflächen auf den Karten. Der zu warnende Bereich
ist wahlweise ein Umkreis oder die gesamte Gemeinde — gilt die Warnung
der ganzen Gemeinde (Feld 7 oder ein als „Gesamt" markierter Warnbereich),
zeichnen Lagekarte und Einsatz-Karte statt eines Kreises den
Gemeinde-Umriss (einmalig aus OpenStreetMap geholt oder als GeoJSON-Datei
hochgeladen). Eine offene Warnung blockiert das Erledigen des zugehörigen
Einsatzes bzw. Schwerpunkts, bis sie abgeschlossen ist. Vier eigene Rechte
(
mowas.view/create/release/export) — Sehen und das Herunterladen der Formulare (PDF/Excel) sind getrennt, Downloads werden protokolliert; die Warnung wird nie automatisch versendet. Verlangt Eure Leitstelle ihr eigenes Formular, füllt das ETB es maschinell: Für die Kreisleitstelle Rhein-Sieg-Kreis entsteht das Original-Formular (F.1 Anlage A) als fertige, in Excel weiter bedienbare Excel-Datei zum Download (umschaltbar in den Stammdaten, PDF bleibt daneben erhalten). Die Gemeinde wird einmalig aus dem Formular selbst gewählt, und eine neue Formular-Version der Leitstelle spielt der Administrator geprüft selbst ein. - Wetter (zubuchbares Zusatzmodul) — amtliche Warnungen des Deutschen
Wetterdienstes für frei wählbare Beobachtungsgebiete (eigene Gemeinde,
Nachbarn, Kreis — komfortabel aus dem amtlichen DWD-Gebietskatalog gewählt),
aktuelle Messwerte, eine 24-Stunden-Vorschau mit Vorwarnzeit im Klartext
und ein Lagebild zum Ausdrucken für die Lagebesprechung. Auf Lagekarte,
Wetterseite und maximierter Einsatzkarte drei zuschaltbare Ebenen:
DWD-Warnflächen (schraffiert, Muster kodiert die Stufe, dazu das Symbol
der Warnart — Gewitter, Sturm, Regen, Schnee, Glätte, Frost, Tauwetter,
Nebel, Hitze, UV; Hitze und UV nach der eigenen Farbskala des DWD),
Regenradar mit Zeitleiste (−2 h bis +2 h, abspielbar) und
Blitze & Vorhersage (erkannte Blitze plus Vorhersage für die nächste
Stunde). Ein Klick auf die Karte
setzt die Wetter-Rose (Temperatur als Ring und Zahl, Windkeil in
Wehrichtung, Böen als Zacken) und daneben die Warntafel mit der Warnlage
an genau diesem Punkt, inklusive Gebietsname. Die Wetterkarte lässt sich
maximieren, ohne Ausschnitt und Schalterstellung zu verlieren. Jeder neue
Einsatz hält automatisch fest, wie das Wetter bei der Anlage war
(Detailsicht und PDF-Export); Warnung und aktuelles Wetter lassen sich per
Knopf als Kommentar ins Tagebuch übernehmen (Text serverseitig erzeugt,
nie aus dem Formular). Warnungen, Warnflächen, Radar und Blitze kommen
immer vom DWD (über Bright Sky und die DWD-Geodienste, mit Ausweichweg für
die Warnungen); für Kennzahlen und Vorhersage ist zusätzlich MET
Norway wählbar (CC BY 4.0, Kontakt-Kennung Pflicht), wahlweise als
Modellwert für den Ort (MOSMIX) oder als Stationsmessung — die
Anzeige nennt immer den Dienst und sagt, was von beidem sie zeigt. Ein
Leserecht (
wetter.view), standardmäßig nicht freigeschaltet: ohne Freischaltung sind Menüpunkt, Seiten und Karten-Ebenen für alle unsichtbar. - Atemschutzüberwachung — führt Trupps unter Pressluftatmer: anlegen,
einsetzen, in festen Abständen den Flaschendruck abfragen, entlassen. Der
Rückzugsdruck wird nach FwDV 7 gerechnet (2 × Anmarschverbrauch),
optional mit Sicherheitszuschlag und Mindestdruck aus der eigenen
Dienstanweisung. Gearbeitet wird auf einer Vollbild-Tafel für das Tablet
am Fahrzeug (große Kacheln, Knöpfe für Handschuhe) — erreichbar ohne
Anmeldung über einen QR-Code, dessen Code lokal gerechnet wird, damit
der Zugangsschlüssel das Haus nicht verlässt. Läuft im Gerät
(local-first): Die Tafel rechnet Drücke, Rückzugsdruck und Takt selbst und
schickt danach an den Server — ohne Verbindung lässt sich alles bedienen,
bis hin zu einer neu angelegten Überwachung mit neuen Trupps; jede Eintragung
steht sofort da, nachgereicht wird später mit der eigenen Uhrzeit, und
der Abgleich im Hintergrund unterbricht nie einen offenen Dialog. Auch
Protokoll, Ausdruck und die Übersichtsliste zeigen, was noch im Gerät liegt
— sichtbar als „noch nicht übertragen" gekennzeichnet, mit Legende im Fuß
des Nachweises; der Atemschutznachweis bleibt damit vollständig, auch wenn am
Einsatzende kein Netz da war. Ein Balken sagt jederzeit, wer gerade führt
(oder dass die Führung ohne Verbindung nicht zu prüfen ist); wer nicht
schreiben darf, öffnet mit einem Tipp auf eine Kachel deren Historie — die
Kachel ist dafür als „nur ansehen" gekennzeichnet. Dazu Flaschenwechsel,
Zwischen-Bereitschaft (den Abfragetakt eines Trupps anhalten, ohne ihn zu
entlassen), protokollierter Rückzugsbefehl,
Übergabe der Überwachung mit Anfrage-Weg, nachträglicher Einsatzbezug
(für das, was am Fahrzeug ohne Verbindung entstanden ist), AGT-Kennzeichen an
den Personen, ein Merker „stellt Atemschutzgeräteträger" je Einheit und
ein revisionsfestes Protokoll als Ausdruck, PDF oder Abschnitt im
Einsatz-Bericht. Vier Rechte (
atemschutz.view,.fuehren,.freigeben,.verknuepfen), Löschen allein durch den Administrator, je Instanz komplett abschaltbar. Der Bereich des SP-Disponenten gilt auch hier: Zu einem Einsatz außerhalb bleiben die Namen der Träger und Erfasser verdeckt. - Audit-Log — jede Mutation (Einsatz, Abschnitt, EM-Zuweisung, Kommentar) wird revisionsfest geloggt.
- PDF-Export — kompletter Einsatz-Bericht inkl. Kommentaren, Anhängen, Abschnitten, einer Einsatzmittel-Übersicht mit Stärke & Kontakt, dem AÜ-Protokoll und den Bevölkerungswarnungen (beide einzeln abwählbar, standardmäßig an) und optional Audit-Historie. Bild-Anhänge werden für die PDF-Datei automatisch verkleinert (max. 1600 px, JPEG) — die Originale bleiben unverändert.
- Setup-Wizard — geführte Erst-Konfiguration (Org-Name, Logo, Karten- Center, Telegram, Mailbox, …).
- Mehrmandanten-fähig — Tabellen-Präfix pro Instanz, mehrere ETBs können in derselben DB nebeneinander laufen.
- Dark-Mode & UI-Komfort — app-weiter dunkler Modus (folgt initial
dem Betriebssystem), einklappbare Sidebar und ein separater
Hell/Dunkel-Schalter für die Vollkarten (Lagekarte, Hydrantenplan); die
Mini-Karten in Einsatz- und Abschnitts-Detail folgen automatisch dem
App-Theme. Die Einsatz-Übersicht lässt sich zwischen Komfort
(luftige Karten-Zeilen) und Kompakt (dicht, für viele Einsätze)
umschalten; jeder Einsatz trägt eine farbige Status-Kachel (laufende
Nummer + Kurz-Status) in Liste, Detail-Kopf, je Abschnitt und als
Lagekarte-Marker, Abschnitte lassen sich direkt in der Liste aufklappen.
Status und Wichtigkeit werden über Farbe + Label unterschieden (keine
Icons/Marker-Formen); die Farben der fünf Einsatz-Status sind
admin-konfigurierbar (
/admin/einsatz-status-farben.php) und wirken überall — Pillen, Zeilenbalken, Kacheln, Lagekarte-Marker und Filter. Durchgängige Inline-SVG-Icons (Tabler-Stil) statt Emoji. Zentrale Design-Tokens (tokens.css) für ein konsistentes, an einer Stelle anpassbares Erscheinungsbild. Die laufende Programmversion steht dezent unten in der Seitenleiste und auf der Login-Seite — bei jedem Deploy automatisch aus dem Git-Stand erzeugt. - Mobil nutzbar & installierbar (PWA) — auf schmalen Bildschirmen ausklappbares Off-Canvas-Menü, einspaltige Formulare und größere Touch-Ziele; per „Zum Startbildschirm hinzufügen" als App-ähnliche Verknüpfung installierbar (HTTPS), mit echten App-Icons in allen Größen (192/512 px inkl. adaptiver „maskable"-Variante für Android, opakes 180-px-Icon für iOS) — automatisch aus dem Branding-Logo gerendert. Bewusst ohne Offline-Datenspeicher (Network-first) — ein Einsatztagebuch zeigt stets den aktuellen Stand; einzige Ausnahme ist die Atemschutztafel, die im Keller und im Funkloch gebraucht wird und deshalb im Gerät rechnet (ihr Zwischenspeicher gehört dem angemeldeten Benutzer und wird beim Abmelden und beim Benutzerwechsel geräumt). Ohne Netz erscheint statt der Browser-Fehlerseite eine eigene Offline-Seite mit „Erneut versuchen"-Knopf und Verbindungs-Status, die ausdrücklich darauf hinweist, dass gerade Abgeschicktes nicht gespeichert ist. Auf schmalen Bildschirmen führt ein Sprungknopf „Zu den Einsatzmitteln" direkt zur unter den Inhalt gerutschten EM-Seitenleiste.
- Branding — Login-Logo, separates Menü-Logo für die Seitenleiste und Favicon hochladen sowie die Leitstellen-Adresse hinterlegen. Farben und Schrift kommen bewusst aus dem ausgelieferten Design (zentrale Design-Tokens) mit sauberer Hell-/Dunkel-Variante.
- Integriertes Handbuch & Kontext-Hilfe — seiten-genaue
Bedienungsanleitung (ein Thema je Bildschirm) in der App („Hilfe"), als
„?"-Schublade direkt im Kontext jeder Seite, ohne Login unter
/handbuch.phplesbar und ins GitLab-Wiki gespiegelt — Inhalt einmal als Markdown gepflegt.
Anforderungen
- PHP 8.1 oder neuer (Tests laufen auf 8.2, Entwicklung auf 8.5) mit Extensions:
pdo_mysql,imap,mbstring,fileinfo,curl,dom,gd,openssl(signiert die Web-Push-Nachrichten); optionalzip(nur für den Excel-Export der Bevölkerungswarnung im Original-Formular einer Leitstelle — ohne die Erweiterung läuft alles andere unverändert; es entfallen dann auch die Gemeinde-Auswahl und das Einspielen einer neuen Formular-Version, weil beides aus der Formular-Datei gelesen wird) - MySQL 5.7+ / MariaDB 10.3+
- Webserver mit Document-Root auf
public/und Rewrite-Modul (Apachemod_rewriteoder Nginx) - Cron alle 1–5 Minuten für die Mailbox-Abfrage
- Ausgehende HTTPS-Verbindungen vom Server — für das Zusatzmodul
Wetter (
api.brightsky.devundmaps.dwd.de, bei gewähltem Dienst MET Norway zusätzlichapi.met.no— auch die Bilder von Regenradar und Blitzen holt der Server und liefert sie selbst aus; nach außen ist nur er sichtbar) und für Web Push (die Endpunkte der Push-Dienste von Google, Apple und Mozilla) - HTTPS mit gültigem Zertifikat — Pflicht für Web Push (ohne sicheren Kontext gibt es keinen Service Worker und damit keine Benachrichtigungen) und für den Telegram-Webhook; ebenso dafür, dass die Atemschutztafel nach einem Neustart des Tablets ohne Netz überhaupt noch aufgeht (die Warteschlange für nachzureichende Einträge arbeitet dagegen auch ohne). Ohne HTTPS läuft das ETB im Übrigen normal, die Alarmierung bleibt dann bei Telegram — und die Rückmeldungen aus dem Chat holt der Cron ab, statt sie sich per Webhook zustellen zu lassen
Installation
- Code in den Webserver kopieren und Document-Root auf
public/setzen. - Konfiguration anlegen:
cp config/.env.example config/.env # DB-Zugang + IMAP-Postfach (Alarm-Mails) eintragen; optional SMTP_* # fuer „Passwort vergessen" (ausgehende Mail). APP_TIMEZONE nur, wenn # die Wehr NICHT in Europe/Berlin liegt (das ist die Vorgabe). - Im Browser öffnen — der Setup-Wizard erscheint automatisch und führt durch die restlichen Schritte (Org-Name, Logo, Standort, Erste User, Telegram-Bot, Cron-Token).
- Cron einrichten — der Wizard zeigt am Ende den passenden
Crontab-Eintrag mit Token; alternativ unter
Admin → Einstellungeneinsehbar:*/2 * * * * curl -fsS "https://etb.example.de/cron.php?token=…" >/dev/null
Update einer bestehenden Installation
git pull
# Schema-Aenderungen wendet die SchemaProvider-Migration beim naechsten
# Login automatisch an.Erscheint nach dem Update der Schema-Banner, einmalig
/admin/schema-check.php → „Reparieren" ausführen — legt neue Tabellen
und Spalten an (z. B. für den Passwort-Reset). Wer „Passwort vergessen"
nutzen will, ergänzt zusätzlich die SMTP_*-Werte in config/.env.
Für den Meldungs-Bus legt derselbe Schema-Check die Tabellen
user_loeschgruppe, meldung_arten, meldung_regeln, meldungen,
meldung_zustellungen und meldung_kanal_ziele an, für Web Push
zusätzlich push_abos und push_einladungen; er spielt den
Meldungskatalog ein, ergänzt die Rolle einsatzkraft und rüstet das Recht
mitteilung.durchsage nach. Für den Rückkanal kommen im selben Lauf
acht Spalten dazu (Antwort-Ausweis und Zusatztext an den Zustellungen, vier
für die Sammelmeldung, der Meldungsbezug der Telegram-Antworten und der
Besitznachweis der Geräte), zwei Indizes sowie die Meldungsarten
Sammelmeldung und Freie Durchsage. Für Postfach und Profil kommen zwei
Spalten an den Geräten dazu (push_abos.freigegeben_at,
push_abos.letzter_empfang), das Recht mitteilung.rueckmeldungen (aus
mitteilung.durchsage nachgezogen), die Meldungsart Neues Gerät angemeldet —
und bereits angemeldete Geräte gelten einmalig als freigegeben, damit nach
dem Update niemand stumm wird. Zwei weitere Schritte richten den
Meldungs-Katalog nach: fehlende Kurz-/Langfassungen werden einmalig in
leere Felder nachgetragen (eigene Texte bleiben; eine bereits angepasste
Fassung derselben Meldungsart hat Vorrang vor dem Standard), und die
Entscheidungs-Antworten Freigeben/Abmelden an Neues Gerät angemeldet
werden bei jedem Lauf wiederhergestellt — ohne sie stünde die
Geräte-Freigabe im Postfach ohne Knopf da.
An der Alarmierung ändert sich dabei nichts:
Der Zustellweg bleibt auf Telegram, und die Chat-IDs aus der config/.env
gelten als Rückfall weiter, bis du sie unter Admin → Mitteilungen durch
eigene Zuordnungen ersetzt. Vor dem Lauf lassen sich Rückmeldungen aus der
App und vom Sperrbildschirm nicht speichern; Alarmierung und
Telegram-Rückmeldungen laufen weiter.
Web Push schaltest du bewusst selbst frei (Admin → Mitteilungen → Web Push): Schlüssel der Instanz erzeugen, Geräte einrichten bzw.
Einladungslinks verteilen — und erst dann den Zustellweg umstellen. Der
Wechsel ist scharf: Es gibt kein Nebeneinander zweier Kanäle, wer kein Gerät
eingerichtet hat, bekommt ab dem Umschalten nichts mehr. Die Seite zeigt
dafür die Zahl „Ohne Gerät".
Das Zusatzmodul Wetter schaltest Du unter
Admin → Feuerwehr → Wetter → Freischaltung frei. Das Leserecht wetter.view
zieht der Schema-Check für alle Rollen nach, die schon die Lagekarte sehen
dürfen; feiner einstellen kannst Du es danach unter
Admin → Rollen & Berechtigungen.
Backups (DB-Dump + storage/uploads/ + public/branding/) vor jedem
Update werden empfohlen.
Dokumentation
Eine ausführliche Bedienungsanleitung liegt unter docs/handbuch/
— seiten-genau geschnitten (ein Thema je Bildschirm, mit Frontmatter für
Reihenfolge und Gruppierung) — und ist über vier Wege zugänglich, immer
derselbe Inhalt:
- Kontext-Hilfe: das „?" rechts in der Aktionsleiste der meisten Seiten öffnet das passende Thema in einer seitlichen Hilfe-Schublade (bleibt über Reload/Seitenwechsel offen; auf schmalen Bildschirmen/PWA ausgeblendet).
- In der App: Sidebar-Eintrag „Hilfe" — das ganze Handbuch mit aufklappbaren Gruppen, ergänzt um dein konfiguriertes Branding.
- Öffentlich ohne Login:
/handbuch.php— dasselbe Handbuch ohne Anmeldung lesbar (eigenes, bewusst helles Layout); auf der Login-Seite neben „Passwort vergessen?" verlinkt. - Im GitLab-Wiki: Home — zum Nachlesen außerhalb der Anwendung (z. B. auf dem Tablet während eines Einsatzes).
Master-Quelle sind immer die Markdown-Dateien im Repo. Das Wiki wird via
scripts/wiki-sync.ps1 aktuell gehalten.
Releases
- v4.9.5 — Feature-Release: Atemschutzüberwachung (#232 (closed)). Trupps unter Pressluftatmer anlegen, einsetzen, in festen Abständen abfragen und entlassen — auf einer Vollbild-Tafel für das Tablet am Fahrzeug, per QR-Code auch ohne Anmeldung erreichbar. Rückzugsdruck nach FwDV 7 (2 × Anmarschverbrauch, optionaler Zuschlag und Mindestdruck), Flaschenwechsel als eigener Vorgang, Zwischen-Bereitschaft (Takt anhalten, ohne zu entlassen), protokollierter Rückzugsbefehl, Übergabe der Überwachung mit Anfrage-Weg und Freigabe-Recht. Läuft im Gerät (local-first): Die Tafel rechnet den Zustand jedes Trupps selbst, ohne Verbindung lässt sich alles bedienen — auch eine neu angelegte Überwachung mit neuen Trupps —, nachgereicht wird später mit der eigenen Uhrzeit, und der Abgleich unterbricht nie einen offenen Dialog. Damit die Tafeln draußen da sind, genügt es, die Liste Werkzeuge → Atemschutz einmal mit Netz zu öffnen: Sie lädt die laufenden Überwachungen im Hintergrund auf das Gerät; für alles andere gibt es ohne Verbindung ein leeres Gerüst, das offen sagt, dass dieses Gerät die Überwachung nicht kennt. Ungewöhnliche Werte werden nachgefragt statt gesperrt, eine Druckabfrage ohne Druck abgelehnt; das revisionsfeste Protokoll gibt es als Ausdruck, PDF und als Abschnitt im Einsatz-Bericht — der jetzt zusätzlich die Bevölkerungswarnungen trägt. Dazu AGT-Kennzeichen an den Personen, ein Merker „stellt Atemschutzgeräteträger" je Einheit (genau eine Einheit je Überwachung, das normiert die Truppnamen), nachträglicher Einsatzbezug, Löschen allein durch den Administrator, ein selbst gerechneter QR-Code samt Aushang und vier neue Rechte. Das Modul ist je Instanz komplett abschaltbar. Dazu kam im Betrieb: MAYDAY — die Notlage eines Trupps wird mit einem Knopf dokumentiert (Uhrzeit, Trupp, alle Träger, die zuletzt erfassten Drücke) und auf jedem Gerät sichtbar gemacht, auch ohne Netz. Die Übergabe der Überwachung hat einen Dialog mit drei Wegen (an ein Konto, an einen freien Namen, an niemanden). Meldungen aus der Überwachung stehen in der Einsatzakte mit der Quelle „Atemschutz" statt „System", gebremst durch eine zweistufige Mengenbegrenzung, damit der anonyme Tafel-Zugang die Akte nicht fluten kann. Außerhalb des Atemschutzes: Der Not-Aus der Alarmierung hinterlässt jetzt eine Revisionsspur, die sich nicht löschen lässt — wer abschaltet und danach das Protokoll leert, hinterließ vorher nichts. Und ein Stichwort-Muster kann keine Einheit mehr stillschweigend übergehen: Bricht der Mustervergleich ab, wird alarmiert statt übersprungen. Update: Schema-Check nötig.
- v4.9.0 — Feature-Release: Alarmierung ohne fremden Messenger (#182 (closed)). Ein kanalunabhängiger Meldungs-Bus adressiert Menschen, Rollen und Löschgruppen; Web Push stellt direkt auf den Sperrbildschirm zu, Ende zu Ende verschlüsselt, und ist für neue Installationen die Vorgabe. Vier Wege zurückzumelden — zwei Knöpfe an der Benachrichtigung, eine Antwortseite ohne Anmeldung, ein Alarm-Fenster in der App und das Postfach mit Ordnern, Liste und Vorschaufenster. Dazu Sammelmeldung und Kurznachricht zur Lage als Ersatz für das, was der Gruppen-Chat nebenbei lieferte, ein Alarmmonitor für die Fahrzeughalle samt Bildschirm-Zugängen, Zustellprotokoll und Statusseite, „angemeldet bleiben" für den nächtlichen Alarm und eine Schritt-für-Schritt-Anleitung zum Verteilen (Android und iPhone getrennt, als Handzettel zum Ausdrucken). Bestehende Installationen bleiben auf Telegram, bis sie bewusst umstellen — vorher mit einer Handvoll Freiwilliger erprobbar. Update: Schema-Check nötig.
- v4.8.0 — Feature-Release: Wetter als zubuchbares Zusatzmodul (#210 (closed)).
Amtliche Warnungen des Deutschen Wetterdienstes für frei wählbare
Beobachtungsgebiete, aktuelle Messwerte, eine 24-Stunden-Vorschau mit
Vorwarnzeit im Klartext und ein Lagebild zum Ausdrucken. Auf Lagekarte,
Wetterseite und maximierter Einsatzkarte drei Ebenen: DWD-Warnflächen
(schraffiert, mit dem Symbol der Warnart; Hitze und UV nach der eigenen
Farbskala des DWD), Regenradar mit Zeitleiste und Blitze &
Vorhersage. Ein Klick
auf die Karte setzt die Wetter-Rose und daneben die Warntafel mit der
Warnlage an genau diesem Punkt; die Wetterkarte lässt sich maximieren.
Jeder neue Einsatz hält automatisch fest, wie das Wetter bei der Anlage
war; Warnung und aktuelles Wetter lassen sich als Kommentar ins Tagebuch
übernehmen. Warnungen, Flächen, Radar und Blitze kommen immer vom DWD;
für Kennzahlen und Vorhersage ist zusätzlich MET Norway wählbar (CC BY
4.0, Kontakt-Kennung Pflicht). Neues Leserecht
wetter.view; das Modul ist standardmäßig aus. Mit gebündelt ist das nie veröffentlichte Zwischenrelease 4.7.5: Einsätze anheften, optionaler Leitungs-Einsatz am Schwerpunkt, eine offene Bevölkerungswarnung blockiert das Erledigen, der Formular-Download hängt am neuen Rechtmowas.export, Filter „Mit Warnung", Sperrmeldungen nennen Namen statt Anzahl — dazu die selbst gesetzte Zeitzone (APP_TIMEZONE, PHP und Datenbank gemeinsam). Schema-Check nötig (vier Wetter-Tabellen, Spalteeinsaetze.ist_fixiert, Rechtewetter.viewundmowas.export). - v4.7.0 — Feature-Release: Export der Bevölkerungswarnung im
Original-Formular der Leitstelle (#208 (closed)). Die Kreisleitstelle
Rhein-Sieg-Kreis akzeptiert nur ihr eigenes Excel-Formular — das ETB
befüllt dieses Original (F.1 Anlage A, Version 8.3) jetzt maschinell aus der
Warnung und bietet es ab der Freigabe als Download an
(„Formular Leitstelle (Excel)"), inklusive Ankreuzfeldern, Koordinaten-
Kästchen, Warnbereichen und archivierten Ständen; die Datei rechnet beim Öffnen
neu durch und bleibt in Excel bedienbar (Auswahllisten, Klartext-Zeilen).
Umgestellt wird das in den MoWaS-Stammdaten über die neue Export-Vorlage
(Voreinstellung bleibt das bisherige Standard-Dokument, das PDF bleibt
zusätzlich erhalten). Dort wird auch die Gemeinde einmalig festgelegt
(Auswahl aus dem Formular selbst — sie bestimmt Feld 2 und den
Verwaltungsbereich-Code), eine neue Formular-Version der Leitstelle geprüft
selbst eingespielt und die Gemeindegrenze für die Karten geholt (oder als
GeoJSON-Datei hochgeladen); dazu Standardwerte für die Bürgerinformation
(Feld 17). Im Melde-Formular ist Feld 7 jetzt eine Entscheidung zwischen
Umkreis und gesamter Gemeinde; gilt die Warnung der ganzen Gemeinde —
über Feld 7 oder über einen als „Gesamt" markierten Warnbereich
(Feld 11) —, zeichnen Lagekarte und Einsatz-Karte den Gemeinde-Umriss
statt eines Kreises. Ohne gespeicherte Gemeindegrenze bleibt die Fläche
bewusst leer, ein Kreis wäre dort irreführend. Der Übermittlungs-Hinweis
nennt jeweils das richtige Dokument. Für den
Excel-Export braucht der Server die PHP-Erweiterung
zip; fehlt sie, bleibt es sichtbar beim Standard-Dokument. Schema-Check nötig (neue Spalte für die gespeicherte Auswahlreihenfolge der Warnbereiche). - v4.6.0 — Feature-Release: Bevölkerungswarnung (MoWaS) (#208 (closed)). Das ETB
kann das Anforderungs-/Meldeformular für eine Bevölkerungswarnung erfassen,
über ein Vier-Augen-Prinzip freigeben und als PDF-Dokument für die
Leitstelle erzeugen — gestartet an einem Einsatz oder Schwerpunkt. Der
Ablauf ist Phase × Zyklus (Erstwarnung → Aktualisierung 1…n → Entwarnung,
je Entwurf → Zur Freigabe → Freigegeben → Bei Leitstelle → Aktiv), jede
Übermittlung wird als revisionsfester Stand historisiert und am Einsatz per
System-Kommentar dokumentiert. Dazu Gefahrenbereich (vier Koordinatenformate,
Pflicht-Umkreis, bis zu drei Warnbereiche), editierbare Handlungsempfehlungen
mit Auswahl-Fenster, ein Warn-Indikator (Zivilschutz-Zeichen) und Warn-Radius
auf den Karten, drei Rechte
mowas.view/create/releasesowie eine eigene MoWaS-Leitstelle in den Stammdaten. Die Warnung wird nicht automatisch versendet — das ETB erzeugt nur das Dokument. Schema-Check nötig (/admin/schema-check.php→ „Reparieren"). - v4.5.1 — Wartungs-Release (#200 (closed) komplett, überwiegend intern): der
bislang auf rund 40 Sidebar-Seiten von Hand kopierte Seitenrahmen
(
<!DOCTYPE>bislayout-mainsamt schließender Tags) wandert in drei neue HelferMainNavSidebar::pageHead()/pageBody()/pageEnd()(#200 (closed)-B1); Erfolgsmeldungen laufen über einen Session-Flash statt?msg=-URL-Parameter (#200 (closed)-B2), dersp_url()-Helfer trägt den Schwerpunkt-Kontext auch in der Einsatzübersicht (#200 (closed)-C) und die Modal-Mechanik ist vereinheitlicht (geteiltes Schließen-X, einEtbModal-Öffnen/Schließen-Helfer, zentrale Tab-Fokusfalle; #200 (closed)-A). Einzige sichtbare Änderungen: eine kleine Barrierefreiheits-Verbesserung (Tastatur-Fokus bleibt jetzt auch in den beiden Schwerpunkt-Einstellungen-Fenstern) und sauberere URLs nach dem Speichern — sonst kein neues Feature. Kein Schema-Check nötig. - v4.5.0 — Feature- und Härtungs-Release: Kurz-Standort je Einsatz (#186 (closed))
— kompakte Standort-Kürzel (Plus Codes offline/kostenlos und what3words,
letzteres auch ohne API-Schlüssel von Hand pflegbar), beide auf die jeweilige
Karte verlinkt, mit Kostenschutz (Pro-Einsatz-Deckel) für die kostenpflichtige
what3words-Automatik; Hydrantenplan aus eigener GeoJSON-Datei statt Google
MyMaps (#181 (closed), konfigurierbare Dimensionsklassen); PWA-Offline-Seite + mobiler
EM-Sprungknopf (#195 (closed)); Rechte-Konsolidierung und -Härtung (#201 (closed)/#202 (closed)/#204 (closed)/
#205 (closed)/#206 (closed)): der Status-Riegel und
abschnitt.createsitzen zentral/serverseitig, „Max. Abschnitte pro Einsatz" wird erzwungen; export-Bild-Cache mit Eviction (#203 (closed)) und ein Deploy-Schutz, der einen fehlenden Schema-Stand nach einem Update mit einer freundlichen Hinweisseite statt einer Fehlerseite abfängt. Update-Hinweis: einmaliger Schema-Check nötig (legt die neuen Kurz-Standort- Spalten an; Plus Codes werden für Bestandseinsätze offline nachgetragen). - v4.1.0 — Konsolidierungs-Release (Design-System, Endpoints, Security):
Sondersignal-Automatik (#41 (closed)) — das Sondersignal der Leitstellen-Mail setzt
automatisch die Eil-/Zeit-Wichtigkeit (frei konfigurierbar über zwei neue
Spalten in der Wichtigkeit-Verwaltung); Design-System-Konsolidierung
(#189 (closed)): zentrale Design-Tokens (Schrift/Radius/Schatten), geteilte
Komponenten-Bausteine (
.cmp-scope), eine einheitliche z-index-Leiter (schwebende Hinweise liegen jetzt zuverlässig über Dialogen), projektweit einheitliche AJAX-Antwortform und ein zentralersp_url()-Helfer für den Schwerpunkt-Kontext; echte PWA-App-Icons (#194 (closed)) und automatische Bild-Verkleinerung im PDF-Export (#191 (closed)); ein Security-Block (500er-Deckel für Massen-Aktionen, 5000-Zeilen-Limit im CSV-Import, Cleanup abgelaufener Temp-Rollen, HTTPS-only-Weiterleitungen + datensparsames Telegram-Protokoll, einheitliche Scope-Meldungen) sowie kleinere Bugfixes (#187 (closed)/#193 (closed)). Außerdem Projekt-Umzug zu GitLab. Update-Hinweis: einmaliger Schema-Check nötig (legt die neuen Eil-/Zeit-Einstellungen idempotent an). - v4.0.0 — Großes Funktions- und Fundament-Release: neuer
Einsatz-Status-Lebenszyklus mit Abschnitts-Sperre und geführtem
Abschluss-Workflow; Einsatz-Rollen (temporär geliehene Führungsrollen,
„Highlander"), manuelles Auslösen von Alarmregeln und der Alarm-Knopf
(einmaliges Rollen-Angebot zur Selbstübernahme); Stichwort-Katalog
(Pflege, Auswahl im Einsatz-Formular, Mail-Parser-Abgleich, Auslösen auch bei
manuellen Einsätzen); Entmandantisierung (neutrale Standard-Texte);
Design-Konsolidierung (Status-Kachel, Komfort/Kompakt-Umschalter,
durchgängige SVG-Icons, vereinfachtes Branding); Orts- & Abschluss-Block
(verbindliche Katalog-Orte, Adress-Suffix je Ort, Geocode-Cache-Zugriff,
Schwerpunkt-Abschluss Erledigt/Abgeschlossen); Stärke-Block (Drei-Felder-
Eingabe ZVF/GF/Ma, zuletzt zugewiesene Stärke, Gruppe „entlassen"),
überörtliche Einsatzmittel im SP-Wizard (tastaturbedienbar) und die
mitscrollende EM-Übersicht; das Karten-Paket „Digitaler Zwilling NRW"
(automatische UTM-Koordinaten EPSG:25832) plus Tablet-Hochformat der
Lagekarte; Einsätze endgültig löschen (Hard-Delete mit Begründung; Recht
einsatz.delete, Kommentar-Moderation wandert nachcomment.delete); dazu ein Barrierefreiheits- und Politur-Block (Einsatzmittel-Status zusätzlich als Text statt nur Farbe, markenrote statt blaue Bestätigungs-Dialoge, Tastatur-Fokusfallen, Dark-Kontraste) und die Lagekarten-Scope-Härtung für Disponenten. Update-Hinweis: einmaliger Schema-Check nötig; die Entmandantisierung meldet beim Update außerdem alle aktiven Sitzungen einmalig ab - v3.0.1 — Bugfixing & Feinschliff: neues Recht „Als Disponent arbeiten" (Default Dispo fest, Lage/Einsatzleiter zuschaltbar, Admin via Failsafe; SP-Dispo bleibt ausgeschlossen); Einsatzmittel-Seitenleiste zeigt durchgängig die laufende Nummer (#007) und frisch alarmierte Mittel korrekt als „im Einsatz"; zugeordnete Einsatzmittel jetzt auch mobil sichtbar; Live-Update der EM-Seitenleiste bei Statuswechsel; app-weit neutrale Link-/ Button-/Kachel-Farben (kein Blau nach Klick); Dark-Mode-Korrekturen (Setup-Wizard, Geocode-Admin/-Cache, EM-Gruppen, Lagekarte); Lagekarte- und Geocode-Nummern im #007-Format; diverse Disponenten-Feinheiten
- v3.0.0 — Schwerpunkte, Sicherheit & UX-Overhaul: Schwerpunkt- Einsatzstärke getrennt nach „im Einsatz" und „Reserve", Einsatzmittel- Stärke im Schema A/B/C/S (Gesamt automatisch); Theme-Engine inkl. Dark-Mode-Feinschliff, gruppiertes Hauptmenü, Menü-Logo, Setup-Wizard mit vertikaler Schritt-Navigation, mobil/PWA inkl. Touch-Drag für die Einsatzmittel-Zuweisung, Versionsanzeige in Sidebar + Login; Lagekarte ohne „Taktisch"-Modus; Kommentar-Bild-Galerie, PDF-Export mit Stärke & Kontakt, sauberer Bild-Pagination und immer hellem Druck; Passwort-vergessen per E-Mail-Link (SMTP) + Session-Invalidierung, CSRF-Schutz für Setup-Wizard und Admin-Formulare; großes Refactoring (Services/JS/CSS) mit Tests, PHPStan & CI; 11 Triage-Issues behoben
- v2.4.0 — Schwerpunkt-Dispo-Kopplung, Folge-Abschnitte & Übersichtlichkeit: Einsatz-/Abschnitts-Dispo folgt im Schwerpunkt automatisch dem SP-Dispo (gesperrt, Herauslösen-Modal), Alarm-Regeln mit Folge-Abschnitten + Auto-Reset-Stopp pro Regel, administrierbare Standard-Werte (+ Abschnitts-Status „geplant"), Personalstärke-Anzeige & Gesamtstärke, Einsatzmittel nach Gruppen, Lagekarte-Filter-Toggle (Beamer), Geocode-Cache-Verwaltungsseite
- v2.3.0 — Dark-Mode, UI-Politur & CSS-Zentralisierung: app-weiter
dunkler Modus, einklappbare Sidebar, Karten-Hell/Dunkel-Toggle,
einklappbare Filterleiste, zentrale Design-Tokens (
tokens.css+components.css), einheitliche Admin-Breadcrumbs + Kachel-Reorg - v2.2.0 — Bug-Fixing & Alarm-Regeln: Multi-Alarm-Regelwerk (UW-ERSTALARM → Grundschutz + Bereitstellung), Wichtigkeit „Bereitstellung", Unwettermail-Multi-Einsatz-Parsing, generischer Spalten-Migrations-Mechanismus + Feature-Tabellen-Banner, korrigierte Cron-/Heartbeat-Statistik, SP-Dispo-Dropdown-Trennung
- v2.1.0 — Handbuch: In-App-Hilfe (
/hilfe.php) + Wiki-Sync über 20 Markdown-Topics indocs/handbuch/ - v2.0.0 — Administrierbare Rollen-/Permission-Matrix, Modal-Dialog- Library, Schwerpunkt-Historie, Schema-Auto-Migration, Lagekarte- Verbesserungen (Tooltip-z-Index, warme Heatmap, Cluster-Toggle)
- v1.5.0 — Schwerpunkte (Großlagen-Gruppierung)
- v1.0.0 — Erste stabile Version
Vollständige Änderungshistorie mit allen Bugfixes und Upgrade-Hinweisen im CHANGELOG.
Lizenz
GPL-3.0 — frei nutzen, weitergeben und anpassen, solange Änderungen ebenfalls unter GPL-3.0 verfügbar gemacht werden.
Entwicklung
Repository: privat. Kontakt für Fragen / Mitarbeit über die im Repo hinterlegten Issues bzw. direkt an den Maintainer.