Diese Anleitung ist schon seit längerem nicht überarbeitet worden, daher nicht ganz aktuell. Das Skript mit dem anhang beta, wird zur dieser Zeit (08/2023) überarbeitet, da gibt es immer wieder unkommentierte Änderungen. Die Konfiguration wird in diesem ebenfalls immer mal wieder angepasst, so das ein einfaches Copy&Paste nicht ausreicht. Könnt ihr gerne testen, aber es ist expliziert eher ALPHA als beta.
Supportthread: Iobroker Forum
Mit diesem Script kannst du Warnungen des Deutschen Wetterdienstes, der Unwetterzentrale, der Zentralanstalt für Meteorologie und Geodynamik(Österreich) oder von Nina (Notfallinformationssystem der BRD) als Text oder Sprachausgabe über verschiedene Wege ausgeben. Dieses geschieht entweder automatisch nach dem Eintreffen oder nach Betätigen eines Schalters. Für DWD, Zamg und UWZ gibt es Datenpunkte um bei bestimmten Gefahren selbst gesteuerte Aktionen auszuführen. Letzteres nutze ich z.B. um bei Sturm/Regen und offenen Fenstern auf diese hinzuweisen.
Unterstützt:
- Telegram, Pushover, Home24-Mediaplayer, SayIt, Alexa, Datenpunkt, eMail oder Whatsapp
- Standalone Datenabruf für DWD, NINA, UWZ und Zamg
- Wetterwarnung
- Wetterentwarnung
Funktionen:
- Filter die Warnungen nach doppelt, Gefahr(level) und Höhe
- Umschalten über iobroker zwischen DWD/UWZ/NINA
- Automatischer Versand und/oder manueller Nachrichtenversand (in Lang- oder Kurzform)
- Zeitschaltuhr für Sprachausgabe
- Datenpunkte mit der Startzeit, Endzeit, Type, Schlagzeile, Beschreibung, Farbe für Level(bgcolor) und höchstem Warnlevel dieses Typs
- Datenpunkthauptpfade sind konfigurierbar incl. 0_userdata
- Konfigurationsprüfung soweit möglich
- Automodus und einzelne Pushdienste über iobroker schaltbar, sowohl für Automodus als auch Manuell
- Optimierte Sprachausgabe
Kleinkram:
- Sprachausgabe: Sturmdetails werden ausgefiltert oder korrekt ausgesprochen (konfigurierbar)
- Sprachausgabe: Pause zwischen dem Absenden der einzelnen Warnungen an die Wiedergabeeinheit konfigurierbar.
- Manuelle Sprachnachrichten können die Zeitschaltuhr missachten. (konfigurierbar)
- Multi-User/Device bei fast allen Pushdiensten verfügbar (außer Datenpunkt & pushover & whatsapp)
- Autorestart bei Datenpunkterstellung
- Alexa und SayIt mit Lautstärkeeinstellung. Alexagruppen unterstützen keine Lautstärke trotzdem konfigurieren.
- Zusätzliche Hervorhebung konfigurierbar über attentionWarningLevel (im Betreff/Ansage)
- Filter für Nina-sender
- Namesbezeichner für Nina verfügbar, diese werden benötigt, falls in der Warnung Ort genannt wird, das auszugeben und damit die Bedeutung der Warnung hervorzuheben.
Dank an:
- Mic für die createUserStates() Funktionen
- CruziX der diese eingebaut hat.
- crunchip, sigi234, Latzi fürs Testen und Ideen
- die ursprünglichen Authoren s.o. (im Skript)
Bedeutung der Farben:
- 0 - Grün
- 1 - Dunkelgrün (wobei tails entfernt)
- 2 - Gelb Wetterwarnungen (Stufe 2)
- 3 - Orange Warnungen vor markantem Wetter (Stufe 3)
- 4 - Rot Unwetterwarnungen (Stufe 4).
- 5 - Violett Warnungen vor extremem Unwetter (DWD -> Weltuntergang nach aktueller Erfahrung und Nina -> höchste Stufe
Update: Das Skript wird in Zukunft keine externen Adapter mehr benötigen oder unterstützen. Das Skript und die Dokumentation wurden zu erst nur für externe Adapter geschrieben, daher beziehen sich vieles auf die Zusammenarbeit mit diesen. Wenn ihr den integrierten Datenabruf verwenden wollt, findet ihr unter Objekten im Unterverzeichnis
0_userdata.0.wetterwarnung1.config.basiskonfiguration.warnzelle
Die Warnzellen die verwendet werden. Ihr könnt dort Warnzellen hinzufügen und entfernen. Im Unterschied zu allen anderen Datenpunkten die sich über die Objekte verändern lassen, überschreiben die Änderungen dort jedoch nicht die Einstellungen im Skript. Wenn das Skript gestartet wird, werden alle im Skript definierten Warnzellen dort eingetragen, anschließend werden alle dort eingetragenen Warnzellen vom Skript eingelesen und verwendet. Folglich könnt ihr keine Warnzellen löschen die im Skript definiert sind. Folgenden Variablen werden für die Definition von Warnzellen verwendet.
Update: Das wird alles über Datenpunkte erledigt
- DWD/UWZ/NINA auf true stellen um den jeweiligen Modus zu aktiveren.
- Mode ist aus Kompatibilitätsgründen drin und kann als Zeichenkette UWZ usw enthalten.
- Punkte unter .auto aktiveren oder deaktivieren den automatischen Versand von Warnmeldungen.
- .on schaltet den kompletten automatischen Versand an/aus.
- die Restlichen schalten für einen bestimmten Modus eine bestimmte Art an oder aus.
- Punkte unter manuell schalten für das manuelle Auslösen in einem bestimmten Modus die Möglichkeit an oder aus. (z.B. UWZ über alexa aber NINA nicht).
- mindestens v0.0.22
- in der Adapterkonfiguration diesen Punkt aktivieren: Json der Warnung in den State rawJson speichern (erhöhter Speicherbedarf)
Konfiguration bei Verwendung des Skript internen Datenabrufs für DWD, ZAMG, UWZ, NINA (keine anderen Adapter nötig)
- für UWZ konfiguriert regionName. [['UWZ + DE + PLZ','Mein Ort']]
var regionName = [['','']];// var regionName = ['UWZDE13245', 'Entenhausen']
-die Warncelle ist die Zahl in der linken Spalte: https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=3
// Standalone Datenquelle
// entnehme ZAHL aus CSV
/* nur Gemeinde/Landkreis/Großstädte werden verwendet: https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=3 */
var dwdWarncellId = ''; // Deaktivieren mit '' einzel: '2334535354' mehrere: ['23423424','23423423']
- Bei Zamg einfach die Koordinaten eingeben (müssen in Österreich liegen)
// Koordinaten [{laengen:13.05501,breiten:47.80949}];.
var zamgCoordinates = []; // [] ist deaktiviert
var uZAMGMitMeteoinformationen = true; // gibt die Wetterinformationen mit der Beschreibung aus: z.B Eine Kaltfront und ein Italientief sorgen im Warnzeitraum...
- Für Nina ebenfalls die Koordinaten eingeben (müssen in Deutschland liegen)
// für Nina gebt die Koordinaten für euren Ort ein.
ninaCoordinates = [] // ninaCoordinates = [{breiten:51.2277, laengen:6.7735, text:'dadrüben'}, {breiten:53.0511000, laengen:8.6309100, text:'Delmenhorst'}];
- DWD/UWZ/NINA muß gesetzt werden, ist alles deaktiviert.
- Anschließend die Einstellungen unter 0_userdata.0.wetterwarnung.config.auto und 0_userdata.0.wetterwarnung.config.manuell kontrollieren. Mit diesen könnt ihr einstellen das z.B DWD über Alexa und Email ausgegeben wird, Nina hingegen nur über Email
- Nach dem ersten Start werden Datenpunkte erstellt, die in Zukunft zur Konfiguration genutzt werden und die Werte im Skript überschreiben. Diese findet ihr unter config
- Der Datenpfad zu allen von diesem Script erstellten Datenpunkten.
var mainStatePath = 'javascript.0.wetterwarnung_test.';
// oder
var mainStatePath = '0_userdata.0.wetterwarnung.';
- Aktiveren der Ausgabemöglichkeiten. Es muß mindestens 1 Punkt aktiviert sein. Zu den jeweiligen Optionen muß der entsprechende Adapter installiert werden und eventuell im folgenden noch weitere Konfigurationen vorgenommen werden.
//uPushdienst+= TELEGRAM;
//uPushdienst+= PUSHOVER;
//uPushdienst+= EMAIL;
//uPushdienst+= SAYIT;
//uPushdienst+= HOMETWO; // kein Adapter nötig
//uPushdienst+= ALEXA;
//uPushdienst+= STATE; // kein Adapter nötig
//uPushdienst+= IOGO;
Um einen Punkt zu aktiveren entferne die // z.B.
uPushdienst+= TELEGRAM;
- Stellt uLogAusgabe auf 0 wenn alles so läuft wie ihr euch das vorstellt.
var uLogAusgabe= 2; // auf 0 gibt es überhaupt keine Ausgabe beim normalen Betrieb.
- Mit Hilfe dieser Variablen bestimmt ihr ob Email, Textnachrichten oder Sprachnachrichten voreingestellt ohne Beschreibung (false) und/oder Anweisungen (false) versand werden.
var uSpracheMitBeschreibung = true; // gilt für alle Sprachnachrichten
var uSpracheMitAnweisungen = true; // uSpracheMitBeschreibung muß evenfalls true sein um Anweisungen zu erhalten
var uHtmlMitBeschreibung = true; // gilt für Email
var uHtmlMitAnweisungen = true; // uHtmlMitBeschreibung muß evenfalls true sein um Anweisungen zu erhalten
var uTextMitBeschreibung = true; // gilt nicht für Email, aber für alle anderen Textnachrichten
var uTextMitAnweisungen = true; // uTextMitBeschreibung muß evenfalls true sein um Anweisungen zu erhalten
uTextHtmlMitOhneAlles = false // diese beiden Optionen überschreiben alle oben getroffenen Einstellungen
var uSpracheMitOhneAlles = true;
- MitOhneAlles folgendes Muster: Warnung vor Typ, für Region, Stufe: Farbe, Tag Tageszeit
- Beispiel: Warnung vor Sturm für Köln, Stufe: gelb, heute abend
- Wenn die Sprachausgabe manuell ausgelöst wird, kann die Sprachausgabewarteschlage gelöscht (true) oder die abgerufenen Nachrichten angehangen werden (false).
var uManuellClickClearSpeakMessageList = true;
- Die Sprachausgabe kann die Details zur Windgeschwindigkeit ausblenden (false) oder aussprechen (true)
var windForceDetailsSpeak = false;
- Ab wieviel Uhr darf die Sprachausgabe verwendet werden (Mo-Fr)
var startTimeSpeak = '6:45';
- Ab wieviel Uhr darf die Sprachausgabe am Wochenende verwendet werden (Sa-So)
var startTimeSpeakWeekend = '9:00';
- Wann endet die Sprachausgabeabends
var endTimeSpeak = '22:30';
- Das manuelle Auslösen der Sprachausgabe berücksichtigt die Zeitschaltuhr (false) es ignoriert sie (true)
var forcedSpeak = true;
- minlevel hiermit bestimmt man ab welchem Level Warnungen von diesem Skript berücksichtigt werden. Dieser Wert sollte nicht höher als 3 eingestellt sein.
const minlevel = 1
- attentionWarningLevel Warnungen gleich/über diesem Wert werden extra hervorgehoben. Die Überschriften zeigen auf Gefahr hin. Pushover-Nachrichten werden mit höherer Prioritätversand. Alle internen nicht einstellbaren Filter/ Filter die im 2. Konfigurationsabschnitt stehen übergehen diese Warnung.
const attentionWarningLevel = 4
- Warnungen von DWD und UWZ kommen gelegentlich mit einer von/bis Höhenangabe.
- Tragt bitte hier die Höhe des tiefesten Punktes in eurem Gebiet ein, den ihr in eurem täglichen Leben aufsucht. In meiner Region kommen Meldungen eher selten mit dem "bis" Eintrag.
const minhoehe = 0
- Hier den höchsten Punkt. Dieser wird mit dem "von" Eintrag verglichen. Ich nehme die Höhe meines Ortes 350m +/- 100m
const maxhoehe = 5000
- optionale Punkte brauchen nicht angepasst zu werden, wenn die Möglichkeit oben aktiviert wurde.
- nicht optionale Punkte müssen angepasst/überprüft werden, wenn die Möglichkeit oben aktiviert wurde.
- Stelle hier Optional bestimmte Nutzer oder ChatID ein. Einzelnutzer ['Hans']; Multinutzer ['Hans', 'Gretel']; Nutzer vom Adapter übernehmen [];
- Die Instanz nur anpassen, wenn deine davon abweicht. Das gilt für jede Instanzeinstellung
var telegramUser = [''];
var telegramChatId = [''];
var telegramInstanz = 'telegram.0';
- Stelle hier Optional 1 Emailadresse ein, von der versendet wird, und mehrere Emailadressen die empfangen sollen.
var senderEmailID = [""];// 1 Eintrag erlaubt [] oder ["email1"]
var empfaengerEmailID = [""];// Mehrere Empfänger möglich. [] oder ["email1"] oder ["email1","email2"]
var emailInstanz = 'email.0';
- DeviceName, hier könnt ihr eines der angemeldeten Gerät bestimmen, das die Nachrichten erhalten soll. Ist kein Gerät bestimmt bekommen alle die Nachricht.
- uPushoverSound bietet euch die Möglichkeit einen eigenen Sound für die Nachricht auszuwählen. Was ihr dort eintragen könnt findet ihr dort: https://pushover.net/api#sounds
var uPushoverDeviceName = '';
var uPushoverSound = '';
var pushoverInstanz = 'pushover.0';
- ioGoUser: Tragt keinen, einen, oder mehrere "ID des Gerätes" ein.
var ioGoUser = [''];
- Das ist ungetestet, benutzt besser SayIt. Eingabe IP-Adresse incl. Port für Home24-Mediaplayer mehrere möglich
var idMediaplayer = ["192.168.178.x:Port"]; // (muß einen sinnvollen Wert beinhalten, wenn aktiviert)
- idSayIt muß korrekt ausgefüllt sein, mit dem Datenpfad zum .text Datenpunkt, mehrere möglich.
- sayItVolumen muß die gleiche Anzahl an Einträgen haben wie idSayIt 0-100
var idSayIt = ["sayit.0.tts.text"]; // (muß einen sinnvollen Wert beinhalten, wenn aktiviert)
var sayItVolumen = [30]; // gleiche Anzahl wie idSayIt
- idAlexaSerial beinhaltet die Seriennummer deines Echos/deiner Echos. var idAlexaSerial =['G090RV32984110Y', 'G090RV32984110Y'];
- alexaVolumen 0-100 die gleiche Anzahl wie idAlexaSerial z.B. [30,30];
var idAlexaSerial = [''];
var alexaVolumen = [30];
var alexaInstanz = 'alexa2.0';
- Einstellungen zur Unwetterzentrale/UWZ:
Hier gibts du die UWZ RegionID an. Also z.B. UWZDE12345 und den Namen deines Ortes z.B. Entenhausen.
var regionName = [['UWZDE12345','Entenhausen']];
- Einstellungen zu Nina
- Hier stellt bitte euren Ort und euren Landkreis ohne (Kreis, Landkreis, etc) ein. Warnungen von Nina kommen mit Aufgelisteten Orten, das Skript sucht dort drin nach euren Bezeichnern und gibt den gefundenen in der Warnung mit aus.
var uGemeinde = '';
var uLandkreis = '';