Eine simple Client Implementierung der NINA Warn App API für die MagicMirror² Plattform.
Klicke hier für den Forum Thread.
Feedback und Mithilfe willkommen.
Wenn du meine Arbeit schätzt, dann freue ich mich über einen bescheidenen Beitrag zu meinem nächsten Feierabend-Bier.
- Das Modul ruft periodisch die NINA API auf und ermittelt Warnmeldungen für deinen Kreis.

- Es können Alarme mehrerer Städte/Gemeinden gleichzeitig abgerufen werden.
- Identische Warnungen können zusammengefasst werden.

- 2 unterschiedliche Themes
-
Navigiere in das
MagicMirror/modulesVerzeichnis und führe folgendes Kommando aus, um das Projekt auf deine Festplatte zu klonen:git clone https://github.com/jalibu/MMM-NINA
-
Ermittle den amtlichen Gemeindeschlüssel deines Ortes aus dieser Liste.
-
Binde das Modul abschließend in die MagicMirror-Konfiguration
MagicMirror/config/config.jsein (Beispiel Konfiguration).{ module: "MMM-NINA", position: "top_right", config: { ags: ["110000000000"], // Liste der Gemeinden, die abgefragt werden sollen downgradeLhpSeverity: false, downgradeCancelSeverity: true, hideCancelledWarnings: false, excludeProviders: [], // Mögliche Werte ["MOWAS", "DWD", "BIWAPP", "LHP"] maxAgeInHours: 6, maxWidth: "200px", mergeAlertsById: true, mergeAlertsByTitle: true, orderBySeverity: true, showIcon: true, showDate: true, showCity: true, showNoWarning: true, theme: "top", // Erlaubte Werte: top, top-floating, side updateIntervalInSeconds: 120, } }
Um das Modul zu aktualisieren, navigiere in das Modulverzeichnis und führe ein git pull aus:
cd ~/MagicMirror/modules/MMM-NINA
git pull| Feld | Beschreibung | Default |
|---|---|---|
| ags | (Liste von Strings) Amtliche(r) Gemeindeschlüssel (AGS) Wichtig: Werte unbedingt als String mit führenden Nullen angeben! |
["110000000000"] (Berlin) |
| downgradeLhpSeverity | (Boolean) Reduziert die Severity von Meldungen des Länderübergreifenden Hochwasser Portals (LHP) auf "Minor" |
false |
| downgradeCancelSeverity | (Boolean) Aufgehobene Warnungen sollen grün dargestellt werden und nicht in ihrer ursprünglichen Severity. | true |
| excludeProviders | (Liste von Strings) Liste von Providern, dessen Meldungen nicht angezeigt werden sollen. Provider sind: "MOWAS", "DWD", "BIWAPP", "LHP" | [] (kein Filter) |
| hideCancelledWarnings | (Boolean) Verstecke aufgehobene Warnungen | false |
| maxAgeInHours | (Integer) Maximales Alter der Warnmeldungen in Stunden, bevor sie ausgefiltert werden | 6 |
| maxWidth | (String) CSS Style für maximale Breite des Moduls, z.B. 220px. Weg lassen, zum Deaktivieren. |
undefined (deaktiviert) |
| mergeAlerts | Veraltet. Bitte stattdessen mergeAlertsById verwenden. | - |
| mergeAlertsById | (Boolean) Sofern Alerts für mehrere Gemeinden abgefragt werden, wird versucht gleiche Meldungen zusammenzufassen | true |
| mergeAlertsByTitle | (Boolean) Sofern Alerts mit gleichem Titel vorliegen, wird versucht die Meldungen zusammenzufassen | true |
| orderBySeverity | (Boolean) Sollen Warnmeldungen absteigend nach ihrem Schweregrad angezeigt werden? | true |
| showCity | (Boolean) Soll der Name der Gemeinde angezeigt werden? | true |
| showDate | (Boolean) Soll das Datum der Meldung angezeigt werden? | true |
| showIcon | (Boolean) Soll ein Warn-Symbol vor den Warnungen angezeigt werden? | true |
| showNoWarning | (Boolean) Lässt eine Meldung "Keine Warnungen" erscheinen, falls keine Ereignisse vorliegen. | false |
| updateIntervalInSeconds | (Integer) Abstand in Sekunden, in dem Warnmeldungen vom NINA Server abgerufen werden | 120 (2 Minuten) |
| theme | (String) Welches Theme soll angewendet werden? Verfügbare Themes: top, top-floating und side |
side |
This module is written in TypeScript and compiled with Rollup.
The source files are located in the /src folder.
Contribution for this module is welcome!
| Script | Purpose |
|---|---|
node --run build |
Production build (minified, optimized) |
node --run dev |
Development build with inline sourcemaps |
node --run demo |
Start MagicMirror with demo config (MM_CONFIG_FILE=modules/MMM-NINA/config.demo.js) |
node --run dev:watch |
Watch mode for active development |
node --run test |
Full quality check (TypeScript + ESLint + Prettier) |
node --run type-check |
TypeScript type validation only |
node --run lint |
Check code style (ESLint + Prettier) |
node --run lint:fix |
Auto-fix code style issues |
node --run release |
Create release (bumps version, updates CHANGELOG, creates git tag) |
Development Workflow:
# Start development with watch mode
node --run dev:watch
# Before committing, run full quality check
node --run test
# Auto-fix any linting/formatting issues
node --run lint:fix
# When ready for release
node --run releaseGit Hooks:
Folgende Git Hooks sind automatisch aktiviert:
- pre-commit: Führt
node --run testaus (verhindert untesteten Code) - pre-push: Führt
node --run buildaus (verhindert nicht-kompilierten Code)
Hinweis: Dieser Abschnitt ist für normale Nutzer nicht relevant. In größeren sollten die Gemeindeschlüssel jedoch aktuallisiert werden, um neue Gemeinden zu unterstützen.
Die Datei src/backend/Regionalschluessel_2025-07-31.json enthält alle deutschen Gemeinden mit ihren amtlichen Gemeindeschlüsseln (AGS). Diese Datei wird jährlich vom Statistischen Bundesamt aktualisiert.
Um die Datei zu aktualisieren:
- Download der neuesten Version (ersetze
YYYY-MM-DDmit dem aktuellen Datum, z.B.2026-07-31):
cd ~/MagicMirror/modules/MMM-NINA/src/backend
curl -s "https://www.xrepository.de/api/xrepository/urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs_YYYY-MM-DD/download/Regionalschl_ssel_YYYY-MM-DD.json" -o Regionalschluessel_YYYY-MM-DD.json- Update des Imports in src/backend/Utils.ts:
// Ändere von:
import { daten } from './Regionalschluessel_2025-07-31.json'
// zu:
import { daten } from './Regionalschluessel_YYYY-MM-DD.json'- Formatiere die neue Datei mit Prettier:
cd ~/MagicMirror/modules/MMM-NINA
node --run lint:fixDie neuesten Versionen sind verfügbar unter:
This project is licensed under the MIT License - see the LICENSE file for details.