Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

[Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten

Geplant Angeheftet Gesperrt Verschoben JavaScript
1.5k Beiträge 53 Kommentatoren 572.0k Aufrufe 52 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T ticaki

    Deprecated

    Wird zum Adapter weiterentwickelt und es finden keine Verbesserungen oder Fehlerbehebungen mehr statt. Abgesehen von kritischen.

    https://forum.iobroker.net/topic/68595/test-adapter-weather-warnings

    Das Script:


    Script auf Github

    DWD-UWZ-NINA-Pushwarnungen-iobroker

    Vorbemerkung

    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.

    Support

    Supportthread: Iobroker Forum

    Scriptbeschreibung

    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

    Vorbemerkung zur Konfigurationen

    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

    Konfiguration in ioBroker/Objekte unter mainStatePath.config

    1. DWD/UWZ/NINA auf true stellen um den jeweiligen Modus zu aktiveren.
    2. Mode ist aus Kompatibilitätsgründen drin und kann als Zeichenkette UWZ usw enthalten.
    3. 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.
    1. 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).

    Vorbereitung bei der Verwendung von NINA bei Verwendung des externen Adapters

    • 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'}];
    
    

    Konfigurationsparameter NACH dem ersten Start

    • 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

    Konfigurationsparameter Script

    Konfigurationsparameter vor dem ersten Start

    1. Der Datenpfad zu allen von diesem Script erstellten Datenpunkten.
    var mainStatePath = 'javascript.0.wetterwarnung_test.';
    // oder
    var mainStatePath = '0_userdata.0.wetterwarnung.';
    
    1. 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;
    

    Konfigurationsparameter Allgemein

    • 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

    Sprachausgabe weitere Einstellungen

    • 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;
    

    Zeitschaltuhr für Sprachausgabe

    • 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;
    

    Filtermöglichkeiten für Warnungen

    1. 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
    
    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
    
    1. 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
    

    Konfigurationsparameter für Pushmöglichkeiten

    • 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.

    Einstellungen zu Telegram: (optional)

    • 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';
    

    eMail: (optional)

    • 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';
    

    Pushover: (optional)

    • 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';
    

    ioGo (optional)

    • ioGoUser: Tragt keinen, einen, oder mehrere "ID des Gerätes" ein.
    var ioGoUser = [''];
    

    Home24:

    • 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)
    

    SayIt

    • 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
    

    Alexa

    • 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';
    

    Konfigurationsparameter zu den Modi DWD, UWZ, NINA

    1. 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']];
    
    1. 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 = '';
    
    ## Support
    - Findet ihr: https://forum.iobroker.net/topic/30616/script-dwd-uwz-nina-warnungen-als-push-sprachnachrichten/216
    
    [s=DWD/UWZ/NINA Script überarbeitet von ticaki]
    [Script auf Github](https://github.com/ticaki/DWD-UWZ-NINA-Pushwarnungen-iobroker)
    [/s]
    sigi234S Online
    sigi234S Online
    sigi234
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #122

    @ticaki

    Test Sayit:

    sayit.0	2020-03-05 14:46:16.922	error	(15156) Cannot get file: received file is too short
    sayit.0	2020-03-05 14:46:16.797	info	(15156) saying: Achtung Unwetter Warnung der Unwetterzentrale vor Schneefall gültig vom 05 März 13:00 Uhr, bis 06 März 16:00 Uhr. Unwetterwarnung der Stufe Orange vor Starkschneefall mit mehr als 1
    sayit.0	2020-03-05 14:46:15.742	info	(15156) saying: C:\Program Files\iobroker\Test\node_modules\iobroker.sayit/gong.mp3
    

    Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
    Immer Daten sichern!

    T 1 Antwort Letzte Antwort
    0
    • sigi234S sigi234

      @ticaki

      Test Sayit:

      sayit.0	2020-03-05 14:46:16.922	error	(15156) Cannot get file: received file is too short
      sayit.0	2020-03-05 14:46:16.797	info	(15156) saying: Achtung Unwetter Warnung der Unwetterzentrale vor Schneefall gültig vom 05 März 13:00 Uhr, bis 06 März 16:00 Uhr. Unwetterwarnung der Stufe Orange vor Starkschneefall mit mehr als 1
      sayit.0	2020-03-05 14:46:15.742	info	(15156) saying: C:\Program Files\iobroker\Test\node_modules\iobroker.sayit/gong.mp3
      
      T Nicht stören
      T Nicht stören
      ticaki
      schrieb am zuletzt editiert von ticaki
      #123

      @sigi234
      War der Text im SayIt Datenpunkt auch so abgeschnitten?

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      sigi234S 1 Antwort Letzte Antwort
      0
      • T ticaki

        @sigi234
        War der Text im SayIt Datenpunkt auch so abgeschnitten?

        sigi234S Online
        sigi234S Online
        sigi234
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #124

        @ticaki sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

        @sigi234
        War der Text im SayIt Datenpunkt auch so abgeschnitten?

        60;Achtung Unwetter Warnung der Unwetterzentrale vor Schneefall gültig vom 05 März  13:00 Uhr, bis 06 März  16:00 Uhr. Unwetterwarnung der Stufe Orange vor Starkschneefall mit mehr als 15 cm im Zeitraum von 12 Stunden, gültig von Donnerstag, 05.03. 13:00 Uhr bis Freitag, 06.03. 16:00 Uhr.  .   Insgesamt eine aktive Warnung.
        

        Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Immer Daten sichern!

        1 Antwort Letzte Antwort
        0
        • T ticaki

          Deprecated

          Wird zum Adapter weiterentwickelt und es finden keine Verbesserungen oder Fehlerbehebungen mehr statt. Abgesehen von kritischen.

          https://forum.iobroker.net/topic/68595/test-adapter-weather-warnings

          Das Script:


          Script auf Github

          DWD-UWZ-NINA-Pushwarnungen-iobroker

          Vorbemerkung

          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.

          Support

          Supportthread: Iobroker Forum

          Scriptbeschreibung

          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

          Vorbemerkung zur Konfigurationen

          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

          Konfiguration in ioBroker/Objekte unter mainStatePath.config

          1. DWD/UWZ/NINA auf true stellen um den jeweiligen Modus zu aktiveren.
          2. Mode ist aus Kompatibilitätsgründen drin und kann als Zeichenkette UWZ usw enthalten.
          3. 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.
          1. 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).

          Vorbereitung bei der Verwendung von NINA bei Verwendung des externen Adapters

          • 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'}];
          
          

          Konfigurationsparameter NACH dem ersten Start

          • 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

          Konfigurationsparameter Script

          Konfigurationsparameter vor dem ersten Start

          1. Der Datenpfad zu allen von diesem Script erstellten Datenpunkten.
          var mainStatePath = 'javascript.0.wetterwarnung_test.';
          // oder
          var mainStatePath = '0_userdata.0.wetterwarnung.';
          
          1. 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;
          

          Konfigurationsparameter Allgemein

          • 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

          Sprachausgabe weitere Einstellungen

          • 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;
          

          Zeitschaltuhr für Sprachausgabe

          • 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;
          

          Filtermöglichkeiten für Warnungen

          1. 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
          
          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
          
          1. 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
          

          Konfigurationsparameter für Pushmöglichkeiten

          • 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.

          Einstellungen zu Telegram: (optional)

          • 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';
          

          eMail: (optional)

          • 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';
          

          Pushover: (optional)

          • 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';
          

          ioGo (optional)

          • ioGoUser: Tragt keinen, einen, oder mehrere "ID des Gerätes" ein.
          var ioGoUser = [''];
          

          Home24:

          • 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)
          

          SayIt

          • 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
          

          Alexa

          • 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';
          

          Konfigurationsparameter zu den Modi DWD, UWZ, NINA

          1. 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']];
          
          1. 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 = '';
          
          ## Support
          - Findet ihr: https://forum.iobroker.net/topic/30616/script-dwd-uwz-nina-warnungen-als-push-sprachnachrichten/216
          
          [s=DWD/UWZ/NINA Script überarbeitet von ticaki]
          [Script auf Github](https://github.com/ticaki/DWD-UWZ-NINA-Pushwarnungen-iobroker)
          [/s]
          sigi234S Online
          sigi234S Online
          sigi234
          Forum Testing Most Active
          schrieb am zuletzt editiert von sigi234
          #125

          @ticaki

          Arbeite gerade an einer View, möchte einfach umschalten von UWZ to DWD
          Denke das geht nur mit einen 2. Skript und einer 2.View

          Screenshot (1909).png

          Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
          Immer Daten sichern!

          1 Antwort Letzte Antwort
          0
          • T Nicht stören
            T Nicht stören
            ticaki
            schrieb am zuletzt editiert von
            #126

            zu dem Fehler. Ich weiß nicht wie ich das beheben kann, da ist anscheinend bei SayIt was schief gelaufen. (denke ich)

            Zu deiner 2. Frage:

            Du möchtest im laufenden Betrieb von DWD auf UWZ umschalten?

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            sigi234S 1 Antwort Letzte Antwort
            0
            • T ticaki

              zu dem Fehler. Ich weiß nicht wie ich das beheben kann, da ist anscheinend bei SayIt was schief gelaufen. (denke ich)

              Zu deiner 2. Frage:

              Du möchtest im laufenden Betrieb von DWD auf UWZ umschalten?

              sigi234S Online
              sigi234S Online
              sigi234
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #127

              @ticaki sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

              Du möchtest im laufenden Betrieb von DWD auf UWZ umschalten?

              Jupp

              Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Immer Daten sichern!

              T 1 Antwort Letzte Antwort
              0
              • sigi234S sigi234

                @ticaki sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                Du möchtest im laufenden Betrieb von DWD auf UWZ umschalten?

                Jupp

                T Nicht stören
                T Nicht stören
                ticaki
                schrieb am zuletzt editiert von
                #128

                @sigi234
                Ok ich überlege mir was

                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                Spenden

                1 Antwort Letzte Antwort
                0
                • T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb am zuletzt editiert von ticaki
                  #129

                  Hab was, aber noch nicht getestet.
                  Ich baue einen State ein über den du den Mode einstellen kannst. Anschließend startet das Skript neu... Damit könnte ich auch den manuellen Restart raus bekommen beim ersten Start.

                  Wie wäre es, wenn man den Punkt Pushdienst auch über States einstellen könnte? Im Skript stellt man erlaubtes ein und das wird mit den States gegen geprüft. Der Automatikmodus würde da auch Sinn machen.

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  1 Antwort Letzte Antwort
                  0
                  • T Nicht stören
                    T Nicht stören
                    ticaki
                    schrieb am zuletzt editiert von ticaki
                    #130

                    Neue Version im Testordner.

                    dwd_uwz_script_iobroker.js

                    Vorweg bitte alte States löschen, hab Command in command umbenannt.

                    Was kann die neue Version von "test/dwd_uwz_script_iobroker.js":

                    • Autorestart nach Erstellung der States (restart ca. 1,5 sekunden offline)
                    • Mode lässt sich über State ändern ohne restart
                    • Mode kann 'UWZDWD' 'DWDUWZ enthalten
                    • Automode lässt sich über State ein/ausschalten
                    • Automode Pushdienste sind über States einstellbar (nur im Rahmen der Grundkonfiguration)
                    • Emails sind jetzt html mit Farbe ( Wenn da jemand was schöneres hat, her damit :) )
                    • gibt ne alive anzeige, die stimmt aber natürlich nur, wenn das script oder die scripteditor instanz nicht abstürzt
                    • die Telegram Ww? Wetterwarnungen? ist mit drin. wenns stört kommts wieder raus.
                    • Sprachausgabe 21.03. / 03.03. / l/m werden richtig ausgegeben
                    • hab die kleine aber nervige Pause zwischen "60 km/h .... und 70 km/h ... bla bla" behoben
                    • .alert in .alert.dwd und .alert.uwz aufgeteilt
                    • uwz/dwd level sind jetzt vergleichbar

                    bis v0.93.1

                    • alert. start umbenannt in begin / Beschreibung, Schlagzeile und Warnlevel abhängige Farbnummer (bgcolor) hinzugefügt
                    • duplicate filtern. (konfigurierbar) hatte heute 2 Meldungen wobei eine die andere zeitlich überdeckte und der rest war identisch
                    • code umsortiert
                    • Fehler in alert. behoben, der war aber lange drin (fehlender . )
                    • Sprachausgabe: Wartezeit ist konfigurierbar in ms pro Zeichen die Rechnung für Alexa 85ms * Textlänge + 2 Sekunden(für den Gong)

                    bis v0.93.5

                    • kosmetische Korrektur
                    • Aufgehoben Mitteilung korrigiert von "Die Wetterwarnung'Warnung vor Starkregen" zu "Die Wetterwarnung des DWD 'Warnung vor...'
                    • Kleinen Fehler mit großer Wirkung behoben.

                    v0.94.1 ist aktuell

                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                    Spenden

                    1 Antwort Letzte Antwort
                    1
                    • T Nicht stören
                      T Nicht stören
                      ticaki
                      schrieb am zuletzt editiert von
                      #131

                      Hab jetzt ordentlich mit DWD email/telegram/echo getestet und ne ganze Menge Kleinigkeiten richten müssen.

                      Die v0.94.2 ist ok. Kann jemand mit pushover, ioGo und SayIt das mal testen.

                      Das hier ist der Werbetext zu dem Script:

                      Unterstützt:

                      • Telegram, Pushover, Home24-Mediaplayer, SayIt, Alexa, Datenpunkt, eMail oder ioGo
                      • DWD-Adapter & Unwetterzentrale-Script
                      • Wetterwarnung
                      • Wetterentwarnung

                      Funktionen:

                      • Filter die Warnungen nach doppelt, Gefahr(level) und Höhe
                      • Umschalten über iobroker zwischen DWD und UWZ oder beides
                      • Autorestart bei Datenpunkterstellung
                      • Automatischer Versand und/oder manueller Nachrichtenversand
                      • Zeitschaltuhr für Sprachausgabe
                      • Datenpunkte mit der Startzeit, Endzeit, Type, Schlagzeile, Beschreibung, Farbe für Level(bgcolor) und höchstem Warnlevel dieses Typs
                      • Unterstützung für 0_userdata
                      • Datenpunkthauptpfade sind konfigurierbar incl. 0_userdata
                      • Konfigurationsprüfung soweit möglich
                      • Automodus und einzelne Pushdienste über iobroker schaltbar (hat nicht mit manuellem Versand zu tun)
                      • Optimierte Sprachausgabe
                      • Fingerweg vom .alive state :)

                      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)
                      • Alexa und SayIt mit Lautstärkeeinstellung. Alexagruppen unterstützen keine Lautstärke trotzdem konfigurieren.
                      • Zusätzliche Hervorhebung konfigurierbar über warnlevel (im Betreff/Ansage)

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      LatziL 1 Antwort Letzte Antwort
                      0
                      • T ticaki

                        Hab jetzt ordentlich mit DWD email/telegram/echo getestet und ne ganze Menge Kleinigkeiten richten müssen.

                        Die v0.94.2 ist ok. Kann jemand mit pushover, ioGo und SayIt das mal testen.

                        Das hier ist der Werbetext zu dem Script:

                        Unterstützt:

                        • Telegram, Pushover, Home24-Mediaplayer, SayIt, Alexa, Datenpunkt, eMail oder ioGo
                        • DWD-Adapter & Unwetterzentrale-Script
                        • Wetterwarnung
                        • Wetterentwarnung

                        Funktionen:

                        • Filter die Warnungen nach doppelt, Gefahr(level) und Höhe
                        • Umschalten über iobroker zwischen DWD und UWZ oder beides
                        • Autorestart bei Datenpunkterstellung
                        • Automatischer Versand und/oder manueller Nachrichtenversand
                        • Zeitschaltuhr für Sprachausgabe
                        • Datenpunkte mit der Startzeit, Endzeit, Type, Schlagzeile, Beschreibung, Farbe für Level(bgcolor) und höchstem Warnlevel dieses Typs
                        • Unterstützung für 0_userdata
                        • Datenpunkthauptpfade sind konfigurierbar incl. 0_userdata
                        • Konfigurationsprüfung soweit möglich
                        • Automodus und einzelne Pushdienste über iobroker schaltbar (hat nicht mit manuellem Versand zu tun)
                        • Optimierte Sprachausgabe
                        • Fingerweg vom .alive state :)

                        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)
                        • Alexa und SayIt mit Lautstärkeeinstellung. Alexagruppen unterstützen keine Lautstärke trotzdem konfigurieren.
                        • Zusätzliche Hervorhebung konfigurierbar über warnlevel (im Betreff/Ansage)
                        LatziL Online
                        LatziL Online
                        Latzi
                        schrieb am zuletzt editiert von
                        #132

                        @ticaki im Verzeichnis test ist noch die Version 0.94.0, ist das die Richtige?

                        1 Antwort Letzte Antwort
                        0
                        • T Nicht stören
                          T Nicht stören
                          ticaki
                          schrieb am zuletzt editiert von
                          #133

                          Nein... und das Äffchen drückt das Knöpfchen jetzt ist sie da

                          Danke :)

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          LatziL 1 Antwort Letzte Antwort
                          1
                          • T ticaki

                            Nein... und das Äffchen drückt das Knöpfchen jetzt ist sie da

                            Danke :)

                            LatziL Online
                            LatziL Online
                            Latzi
                            schrieb am zuletzt editiert von
                            #134

                            @ticaki :+1: läuft :+1:
                            Etwas für die nächste Version: Bei mir kommt bei telegram "Alle Wetterwarnungenwurden aufgehoben", bitte ein Leerzeichen einfügen -> "Alle Wetterwarnungen wurden aufgehoben"

                            T 1 Antwort Letzte Antwort
                            0
                            • LatziL Latzi

                              @ticaki :+1: läuft :+1:
                              Etwas für die nächste Version: Bei mir kommt bei telegram "Alle Wetterwarnungenwurden aufgehoben", bitte ein Leerzeichen einfügen -> "Alle Wetterwarnungen wurden aufgehoben"

                              T Nicht stören
                              T Nicht stören
                              ticaki
                              schrieb am zuletzt editiert von ticaki
                              #135

                              @Latzi
                              .... ups

                              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                              Spenden

                              LatziL 1 Antwort Letzte Antwort
                              0
                              • T ticaki

                                @Latzi
                                .... ups

                                LatziL Online
                                LatziL Online
                                Latzi
                                schrieb am zuletzt editiert von
                                #136

                                @ticaki ja, UWZ und regionName ist konfiguriert (UWZ-Nummer und Ort), muss ich sonst noch was angeben? Der Ort kommt bei mir weder bei Alexa noch Telegram an.

                                1 Antwort Letzte Antwort
                                0
                                • T Nicht stören
                                  T Nicht stören
                                  ticaki
                                  schrieb am zuletzt editiert von ticaki
                                  #137

                                  Ah ich lag falsch, manuell angestoßen und keinen Mode den er finden kann, ist behoben. Hab die Verionsnummer aber nicht angehoben.

                                  Ich kann bei "Alle Warnungen wurden aufgehoben" keinen Ort oder DWD/UWZ ausgeben.

                                  Diese Infos werden in der Warnung gespeichert und wenn alle Warnungen aufgehoben werden, könnte ich darauf noch zugriff bekommen, jedoch wenn du manuell anfragst weiß das Skript nur noch das es keine Warnungen gibt. Für DWD/UWZ schaut das Skript nach ob es Infos gibt.

                                  Vielleicht auch noch folgendes: Im Skript selbst gibt es keine Trennung zwischen DWD/UWZ wenn beides aktiv ist und beides 2 Warnungen hat, hast du 4 Warnungen in den mal "des DWD" und mal "der Unwetterzentrale" steht.

                                  Jetzt 16:30 ist das mit ' ' erst behoben, schon wieder nicht aufs knöpfchen gedrückt.

                                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                  Spenden

                                  C 1 Antwort Letzte Antwort
                                  0
                                  • T ticaki

                                    Ah ich lag falsch, manuell angestoßen und keinen Mode den er finden kann, ist behoben. Hab die Verionsnummer aber nicht angehoben.

                                    Ich kann bei "Alle Warnungen wurden aufgehoben" keinen Ort oder DWD/UWZ ausgeben.

                                    Diese Infos werden in der Warnung gespeichert und wenn alle Warnungen aufgehoben werden, könnte ich darauf noch zugriff bekommen, jedoch wenn du manuell anfragst weiß das Skript nur noch das es keine Warnungen gibt. Für DWD/UWZ schaut das Skript nach ob es Infos gibt.

                                    Vielleicht auch noch folgendes: Im Skript selbst gibt es keine Trennung zwischen DWD/UWZ wenn beides aktiv ist und beides 2 Warnungen hat, hast du 4 Warnungen in den mal "des DWD" und mal "der Unwetterzentrale" steht.

                                    Jetzt 16:30 ist das mit ' ' erst behoben, schon wieder nicht aufs knöpfchen gedrückt.

                                    C Offline
                                    C Offline
                                    CruziX
                                    schrieb am zuletzt editiert von
                                    #138

                                    @ticaki Ist das Skript für Nina funktionsfähig?
                                    Merke gerade, DWD hat keine Warnung, obwohl es den ganzen Tag regnet und Nina meldet gerade hochwasser ^^

                                    Wie geht das eig mit UWZ, muss ich das einfach im Skript aktivieren? Finde dazu keinen Adapter

                                    T 1 Antwort Letzte Antwort
                                    0
                                    • C CruziX

                                      @ticaki Ist das Skript für Nina funktionsfähig?
                                      Merke gerade, DWD hat keine Warnung, obwohl es den ganzen Tag regnet und Nina meldet gerade hochwasser ^^

                                      Wie geht das eig mit UWZ, muss ich das einfach im Skript aktivieren? Finde dazu keinen Adapter

                                      T Nicht stören
                                      T Nicht stören
                                      ticaki
                                      schrieb am zuletzt editiert von ticaki
                                      #139

                                      @CruziX
                                      Es hat funktioniert, aber da ich kaum Warnungen zum testen hatte, hab ich das erstmal zur Seite gestellt. Ich baue das in nächster Zeit fertig für den Github Nina Adapter.

                                      var debuglevel = 1;
                                      var debugchannel = 'info';
                                      
                                      function dwmlog( message, level, channel) {
                                         if (typeof channel === 'undefined') {
                                             channel = debugchannel;
                                         }
                                         if ( typeof level === 'undefined')
                                         {
                                             level = debuglevel;
                                         }
                                         if ( debuglevel >= level ) {
                                             log (message, channel );
                                         }
                                      }
                                      
                                      var AdapterId = "javascript."+instance;
                                      var ChannelId = "UWZ";
                                      
                                      var forceInitStates = false;
                                      var numOfWarnings = 7;
                                      
                                      var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                      
                                      
                                      /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                      var warncellid = ['UWZXXXXXXX'];
                                      /**************************************************************************************/
                                      
                                      
                                      var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
                                      
                                      function createStates(n){
                                         var AreaChannelID = null;
                                      
                                         for (var j=0; j<warncellid.length; j++) {
                                             AreaChannelId=ChannelId+"."+warncellid[j];
                                             for (var i=0; i<n; i++) {
                                                 createState(AreaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                                                 createState(AreaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                                                 createState(AreaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                                                 createState(AreaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                                                 createState(AreaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                                                 createState(AreaChannelId+".warning."+i+".severity",0,forceInitStates,{type: 'number'});
                                                 createState(AreaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                                                 createState(AreaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                                                 createState(AreaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                                                 createState(AreaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                                                 createState(AreaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
                                             }
                                         }
                                      }
                                      
                                      function getUWZLevel (warnName){
                                         var result = -1; // -1 is an error!
                                         var alert = warnName.split("_");
                                         var colors = ["green","darkgreen","yellow","orange","red","violet"];
                                      
                                         if (alert[0]=="notice") { result = 1; }
                                         else if (alert[1] == "forewarn") { result = 2; }
                                         else {
                                             result = colors.indexOf(alert[2]);
                                         }
                                         return result;
                                      }
                                      
                                      function getUWZUrgency (warnName){
                                         var result = 0;
                                      
                                         var alert = warnName.split("_");
                                         if (alert[1] == "forewarn") {
                                             result = 1;
                                         }
                                         else {
                                             result = 2; // immediate;
                                         }
                                         return result;
                                      }
                                      
                                      function getLevelColor(uwzLevel) {
                                         var uwzColor = [
                                             0x00ff00, // 0 - Grün
                                             0x009b00, // 1 - Dunkelgrün
                                             0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
                                             0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
                                             0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
                                             0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
                                         ];
                                         if (uwzLevel>=0 && uwzLevel<=5)
                                             return uwzColor[uwzLevel];
                                         else
                                             return 0;
                                      }
                                      
                                      function createHTMLShort(w){
                                         var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                      
                                         var theData = JSON.parse(w.object);
                                      
                                         html += '<h3>';
                                         if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                         html += UWZTypesArray[w.type];
                                         html +="</h3>";
                                         html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                         html += '<p>'+w.ShortText+'</p>';
                                         html += "</div>";
                                         return html;
                                      }
                                      
                                      function createHTMLLong(w){
                                         var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                      
                                         var theData = JSON.parse(w.object);
                                      
                                         html += '<h3>';
                                         if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                         html += UWZTypesArray[w.type];
                                         html +="</h3>";
                                         html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                         html += '<p>'+w.LongText+'</p>';
                                         html += "</div>";
                                         return html;
                                      }
                                      
                                      function processResultEntry(w) {
                                         this.object = JSON.stringify(w);
                                      
                                         this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
                                         this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
                                      
                                         // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
                                         // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
                                      
                                         this.LongText = w.payload.translationsLongText.DE;
                                         this.ShortText = w.payload.translationsShortText.DE;
                                      
                                         this.severity = w.severity;
                                         this.type = w.type;
                                         this.uwzLevel = getUWZLevel(w.payload.levelName);
                                         this.uwzUrgency = getUWZUrgency(w.payload.levelName);
                                         this.uwzColor = getLevelColor(this.uwzLevel);
                                         var x = this;
                                         this.HTMLShort = createHTMLShort(x);
                                         this.HTMLLong  = createHTMLLong(x);
                                      }
                                      
                                      function processData(Area,data) {
                                         if (!data) {
                                            return;
                                         }
                                         var AreaChannelId=ChannelId+"."+Area;
                                      
                                         var thedata = JSON.parse(data);
                                         var warnings= [];
                                      
                                         if (thedata.results.length>0) {
                                             for (i=0; i<thedata.results.length; i++) {
                                                 warnings.push(new processResultEntry(thedata.results[i]));
                                             }
                                         }
                                      
                                         warnings.sort(function(a,b){
                                             var asort = a.severity;
                                             var bsort = b.severity;
                                      
                                             return bsort-asort;
                                         });
                                      
                                      
                                         dwmlog(JSON.stringify(warnings));
                                      
                                         for (i=0; i<numOfWarnings; i++) {
                                             if (i<warnings.length) {
                                                 setState(AreaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                                                 setState(AreaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                                                 setState(AreaChannelId+".warning."+i+".object",warnings[i].object);
                                                 setState(AreaChannelId+".warning."+i+".begin",warnings[i].begin);
                                                 setState(AreaChannelId+".warning."+i+".end",warnings[i].end);
                                                 setState(AreaChannelId+".warning."+i+".severity",warnings[i].severity);
                                                 setState(AreaChannelId+".warning."+i+".type",warnings[i].type);
                                                 setState(AreaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                                                 setState(AreaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                                                 setState(AreaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                                                 setState(AreaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
                                             } else {
                                                 setState(AreaChannelId+".warning."+i+".LongText","");
                                                 setState(AreaChannelId+".warning."+i+".ShortText","");
                                                 setState(AreaChannelId+".warning."+i+".object","{}");
                                                 setState(AreaChannelId+".warning."+i+".begin","");
                                                 setState(AreaChannelId+".warning."+i+".end","");
                                                 setState(AreaChannelId+".warning."+i+".severity",0);
                                                 setState(AreaChannelId+".warning."+i+".type",0);
                                                 setState(AreaChannelId+".warning."+i+".uwzLevel",0);
                                                 setState(AreaChannelId+".warning."+i+".uwzColor",0);
                                                 setState(AreaChannelId+".warning."+i+".HTMLShort","");
                                                 setState(AreaChannelId+".warning."+i+".HTMLLong","");
                                           }
                                         }
                                      }
                                      
                                      function getAreaFromURI(uri) {
                                         var searchstr = "&areaID=";
                                         var n = uri.search(searchstr);
                                         var result = uri.slice(n+searchstr.length,uri.length);
                                         return result;
                                      }
                                      
                                      createStates(numOfWarnings);
                                      // processData(jsond2);
                                      
                                      var request = require('request');
                                      schedule ("* * * * *", function(){
                                         for (var i=0; i<warncellid.length; i++) {
                                                 request({
                                                     uri: url.replace("XXXAREAXXX",warncellid[i]),
                                                     method: "GET",
                                                     timeout: 10000,
                                                     followRedirect: true,
                                                     maxRedirects: 10
                                                 }, function(error, response, body) {
                                                     // dwmlog("UWZ Error" + error,2);
                                                     // dwmlog("UWZ Response: " + JSON.stringify(response),4);
                                                     dwmlog("AREA: "+getAreaFromURI(response.request.uri.href),4);
                                                     dwmlog("UWZ Body: " + body,4);
                                                     if (response.statusCode == 200) {
                                                         processData(getAreaFromURI(response.request.uri.href),body);
                                                     }
                                                 });
                                         }
                                      });
                                      
                                      

                                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                      Spenden

                                      C 1 Antwort Letzte Antwort
                                      1
                                      • T ticaki

                                        @CruziX
                                        Es hat funktioniert, aber da ich kaum Warnungen zum testen hatte, hab ich das erstmal zur Seite gestellt. Ich baue das in nächster Zeit fertig für den Github Nina Adapter.

                                        var debuglevel = 1;
                                        var debugchannel = 'info';
                                        
                                        function dwmlog( message, level, channel) {
                                           if (typeof channel === 'undefined') {
                                               channel = debugchannel;
                                           }
                                           if ( typeof level === 'undefined')
                                           {
                                               level = debuglevel;
                                           }
                                           if ( debuglevel >= level ) {
                                               log (message, channel );
                                           }
                                        }
                                        
                                        var AdapterId = "javascript."+instance;
                                        var ChannelId = "UWZ";
                                        
                                        var forceInitStates = false;
                                        var numOfWarnings = 7;
                                        
                                        var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                        
                                        
                                        /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                        var warncellid = ['UWZXXXXXXX'];
                                        /**************************************************************************************/
                                        
                                        
                                        var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
                                        
                                        function createStates(n){
                                           var AreaChannelID = null;
                                        
                                           for (var j=0; j<warncellid.length; j++) {
                                               AreaChannelId=ChannelId+"."+warncellid[j];
                                               for (var i=0; i<n; i++) {
                                                   createState(AreaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                                                   createState(AreaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                                                   createState(AreaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                                                   createState(AreaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                                                   createState(AreaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                                                   createState(AreaChannelId+".warning."+i+".severity",0,forceInitStates,{type: 'number'});
                                                   createState(AreaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                                                   createState(AreaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                                                   createState(AreaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                                                   createState(AreaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                                                   createState(AreaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
                                               }
                                           }
                                        }
                                        
                                        function getUWZLevel (warnName){
                                           var result = -1; // -1 is an error!
                                           var alert = warnName.split("_");
                                           var colors = ["green","darkgreen","yellow","orange","red","violet"];
                                        
                                           if (alert[0]=="notice") { result = 1; }
                                           else if (alert[1] == "forewarn") { result = 2; }
                                           else {
                                               result = colors.indexOf(alert[2]);
                                           }
                                           return result;
                                        }
                                        
                                        function getUWZUrgency (warnName){
                                           var result = 0;
                                        
                                           var alert = warnName.split("_");
                                           if (alert[1] == "forewarn") {
                                               result = 1;
                                           }
                                           else {
                                               result = 2; // immediate;
                                           }
                                           return result;
                                        }
                                        
                                        function getLevelColor(uwzLevel) {
                                           var uwzColor = [
                                               0x00ff00, // 0 - Grün
                                               0x009b00, // 1 - Dunkelgrün
                                               0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
                                               0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
                                               0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
                                               0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
                                           ];
                                           if (uwzLevel>=0 && uwzLevel<=5)
                                               return uwzColor[uwzLevel];
                                           else
                                               return 0;
                                        }
                                        
                                        function createHTMLShort(w){
                                           var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                        
                                           var theData = JSON.parse(w.object);
                                        
                                           html += '<h3>';
                                           if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                           html += UWZTypesArray[w.type];
                                           html +="</h3>";
                                           html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                           html += '<p>'+w.ShortText+'</p>';
                                           html += "</div>";
                                           return html;
                                        }
                                        
                                        function createHTMLLong(w){
                                           var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                        
                                           var theData = JSON.parse(w.object);
                                        
                                           html += '<h3>';
                                           if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                           html += UWZTypesArray[w.type];
                                           html +="</h3>";
                                           html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                           html += '<p>'+w.LongText+'</p>';
                                           html += "</div>";
                                           return html;
                                        }
                                        
                                        function processResultEntry(w) {
                                           this.object = JSON.stringify(w);
                                        
                                           this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
                                           this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
                                        
                                           // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
                                           // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
                                        
                                           this.LongText = w.payload.translationsLongText.DE;
                                           this.ShortText = w.payload.translationsShortText.DE;
                                        
                                           this.severity = w.severity;
                                           this.type = w.type;
                                           this.uwzLevel = getUWZLevel(w.payload.levelName);
                                           this.uwzUrgency = getUWZUrgency(w.payload.levelName);
                                           this.uwzColor = getLevelColor(this.uwzLevel);
                                           var x = this;
                                           this.HTMLShort = createHTMLShort(x);
                                           this.HTMLLong  = createHTMLLong(x);
                                        }
                                        
                                        function processData(Area,data) {
                                           if (!data) {
                                              return;
                                           }
                                           var AreaChannelId=ChannelId+"."+Area;
                                        
                                           var thedata = JSON.parse(data);
                                           var warnings= [];
                                        
                                           if (thedata.results.length>0) {
                                               for (i=0; i<thedata.results.length; i++) {
                                                   warnings.push(new processResultEntry(thedata.results[i]));
                                               }
                                           }
                                        
                                           warnings.sort(function(a,b){
                                               var asort = a.severity;
                                               var bsort = b.severity;
                                        
                                               return bsort-asort;
                                           });
                                        
                                        
                                           dwmlog(JSON.stringify(warnings));
                                        
                                           for (i=0; i<numOfWarnings; i++) {
                                               if (i<warnings.length) {
                                                   setState(AreaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                                                   setState(AreaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                                                   setState(AreaChannelId+".warning."+i+".object",warnings[i].object);
                                                   setState(AreaChannelId+".warning."+i+".begin",warnings[i].begin);
                                                   setState(AreaChannelId+".warning."+i+".end",warnings[i].end);
                                                   setState(AreaChannelId+".warning."+i+".severity",warnings[i].severity);
                                                   setState(AreaChannelId+".warning."+i+".type",warnings[i].type);
                                                   setState(AreaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                                                   setState(AreaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                                                   setState(AreaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                                                   setState(AreaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
                                               } else {
                                                   setState(AreaChannelId+".warning."+i+".LongText","");
                                                   setState(AreaChannelId+".warning."+i+".ShortText","");
                                                   setState(AreaChannelId+".warning."+i+".object","{}");
                                                   setState(AreaChannelId+".warning."+i+".begin","");
                                                   setState(AreaChannelId+".warning."+i+".end","");
                                                   setState(AreaChannelId+".warning."+i+".severity",0);
                                                   setState(AreaChannelId+".warning."+i+".type",0);
                                                   setState(AreaChannelId+".warning."+i+".uwzLevel",0);
                                                   setState(AreaChannelId+".warning."+i+".uwzColor",0);
                                                   setState(AreaChannelId+".warning."+i+".HTMLShort","");
                                                   setState(AreaChannelId+".warning."+i+".HTMLLong","");
                                             }
                                           }
                                        }
                                        
                                        function getAreaFromURI(uri) {
                                           var searchstr = "&areaID=";
                                           var n = uri.search(searchstr);
                                           var result = uri.slice(n+searchstr.length,uri.length);
                                           return result;
                                        }
                                        
                                        createStates(numOfWarnings);
                                        // processData(jsond2);
                                        
                                        var request = require('request');
                                        schedule ("* * * * *", function(){
                                           for (var i=0; i<warncellid.length; i++) {
                                                   request({
                                                       uri: url.replace("XXXAREAXXX",warncellid[i]),
                                                       method: "GET",
                                                       timeout: 10000,
                                                       followRedirect: true,
                                                       maxRedirects: 10
                                                   }, function(error, response, body) {
                                                       // dwmlog("UWZ Error" + error,2);
                                                       // dwmlog("UWZ Response: " + JSON.stringify(response),4);
                                                       dwmlog("AREA: "+getAreaFromURI(response.request.uri.href),4);
                                                       dwmlog("UWZ Body: " + body,4);
                                                       if (response.statusCode == 200) {
                                                           processData(getAreaFromURI(response.request.uri.href),body);
                                                       }
                                                   });
                                           }
                                        });
                                        
                                        

                                        C Offline
                                        C Offline
                                        CruziX
                                        schrieb am zuletzt editiert von
                                        #140

                                        @ticaki danke, ich denke der Autor ist nach kurzer Recherche @dwm .

                                        T 2 Antworten Letzte Antwort
                                        0
                                        • C CruziX

                                          @ticaki danke, ich denke der Autor ist nach kurzer Recherche @dwm .

                                          T Nicht stören
                                          T Nicht stören
                                          ticaki
                                          schrieb am zuletzt editiert von ticaki
                                          #141

                                          @CruziX
                                          Gut zu wissen. :)

                                          @all
                                          behobene Kleinigkeiten bisher ohne Versionsnummernanhebung:

                                          • Telegram&pushover&state&iogo: Amtliche Warnung vor fliegenen Fischenwurde -> Fischen wurde (behoben)
                                          • eMail: vor fliegenden Fischen des DWD/UWZ für Entenhausen gültig
                                            -> DWD/UWZ für Entenhausen: Gültig
                                          • Danke hinzugefügt in Kommentar :)

                                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                          Spenden

                                          sigi234S 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          794

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe