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

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

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

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
1.5k Beiträge 53 Kommentatoren 572.8k 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.
  • M MartyBr

    @ticaki
    Ich habe hier meine 1.10 gestartet:

    Dieser Fehler kommt nach dem Start permanent:

    javascript.0
    2022-11-29 19:30:55.927 warn script.js.Wetter.Unwetterwarnung_1-0-10: info: getDataFromServer() 3. Error: read ECONNRESET Maybe internet is down!

    
    host.iobroker-slave
    2022-11-29 19:30:58.483	info	instance system.adapter.luftdaten.0 terminated with code 0 (NO_ERROR)
    
    javascript.0
    2022-11-29 19:30:55.927	warn	script.js.Wetter.Unwetterwarnung_1-0-10: info: getDataFromServer() 3. Error: read ECONNRESET Maybe internet is down!
    
    javascript.0
    2022-11-29 19:30:54.455	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Initialisierung abgeschlossen
    
    javascript.0
    2022-11-29 19:30:54.454	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Standalone NINA Datenabruf aktiviert
    
    javascript.0
    2022-11-29 19:30:54.454	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Standalone UWZ Datenabruf aktiviert
    
    javascript.0
    2022-11-29 19:30:54.454	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Standalone DWD2 Datenabruf aktiviert
    
    javascript.0
    2022-11-29 19:30:54.454	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Standalone DWD Datenabruf aktiviert
    
    javascript.0
    2022-11-29 19:30:54.454	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: InitDatabase() - first run: false
    
    javascript.0
    2022-11-29 19:30:54.453	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Setzte Modus, Inialisiere Datenbank, starte Datenabruf(asynchron)
    
    javascript.0
    2022-11-29 19:30:54.451	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Abonniere Konfigurationsdatenpunkte
    
    javascript.0
    2022-11-29 19:30:52.979	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Datenpunkte werden überprüft
    
    javascript.0
    2022-11-29 19:30:52.978	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Starte Initialisierung! - Bitte warten. Das dauert beim ersten Start etwas länger. - Das Skript in dieser Phase nicht Neustarten, wenn doch bitte Javascript Instanz ebenfalls neustarten
    
    javascript.1
    2022-11-29 19:30:51.557	info	script.js.Wetter.Wetter_Material_Design_1: Material Design Widgets: Wetter Skript triggered by '0_userdata.0.Wetterstation.Aussentemperatur'
    
    javascript.0
    2022-11-29 19:30:37.977	info	script.js.Wetter.Unwetterwarnung_1-0-10: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
    
    javascript.0
    2022-11-29 19:30:37.977	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Warte 15 Sekunden das bei einem eventuellen Restart alles beendet wurde!
    
    javascript.0
    2022-11-29 19:30:37.976	info	script.js.Wetter.Unwetterwarnung_1-0-10: info: Skripts gestartet: ID:1987.5707905849672
    
    javascript.0
    2022-11-29 19:30:37.920	info	Start javascript script.js.Wetter.Unwetterwarnung_1-0-10
    
    javascript.0
    2022-11-29 19:30:00.044	info	script.js.Astro.Astro-Tageszeit-Winter: Astro: Gültige Zeiten: [aktueller Tag: 1] | [nächster Tag: 13] | [Aktualisiert: 0] | Aktuelle Tageszeit: Nacht | Kommende 
    

    Hier das Script (nur der Konfiguration-Teil):

    //Version 1.0.10
    // Erläuterung Update:
    // Suche im Script nach 123456 und kopiere/ersetze ab diesem Punkt. So braucht ihr die Konfiguration nicht zu erneuern.
    // Link: https://forum.iobroker.net/topic/30616/script-dwd-uwz-nina-warnungen-als-push-sprachnachrichten/
    //
    /*
    /* ************************************************************************* */
    /*             Script zum Übertragen der DWD/UWZ-Wetterwarnungen über        */
    /*             Telegram, Pushover, Home24-Mediaplayer, SayIt, Alexa          */
    /*             Datenpunkt, eMail oder ioGo                                   */
    /*             Pushnachrichten können manuell ausgelöst werden               */
    /*             höchstes Warnlevel pro Warnungstyp is als State vorhanden     */
    /*     mit freundlicher Unterstützung von Paul53 (Tausend Dank nochmals)     */
    /*                    Stand: 13022017    PrinzEisenherz1                     */
    /*                    Stand: 08032020    ticaki                              */
    /*                                                                           */
    /*                                                                           */
    /* ************************************************************************* */
    
    /*
    Unterstützt:
    - Telegram, Pushover, Home24-Mediaplayer, SayIt, Alexa, Datenpunkt, eMail oder ioGo
    - DWD-Adapter & Unwetterzentrale-Script & NINA-Adapter ab V0.0.22
    - Eigener Datenabruf für DWD Kreiswarnungen (wie Adapter), DWD Gemeindeegene, UWZ, Nina (ausgenommen Hochwasser), 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
    - 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, 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)
    - 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.
    
    Farben-Bedeutung:
    0 - Grün // sollte es nicht geben
    1 - Dunkelgrün
    2 - Gelb Wetterwarnungen (Stufe 2)
    3 - Orange Warnungen vor markantem Wetter (Stufe 3)
    4 - Rot Unwetterwarnungen (Stufe 4) // im Grunde höchste Stufe in diesem Skript.
    5 - Violett Warnungen vor extremem Unwetter (sollte es nicht geben)
    
    
    
    Dank an:
    - crunchip, sigi234, Latzi, CruziX fürs Testen und Ideen
    - die ursprünglichen Authoren s.o.
    
    /* ************************************************************************
    /* ************************************************************************ */
    
    /* ************************************************************************ */
    /*            Datenpfad konfigurieren                                       */
    /* ************************************************************************ */
    /*                                                                          */
    /*            0_userdata. möglich                                           */
    /*                                                                          */
    /* ************************************************************************ */
    
    
    
    var mainStatePath = '0_userdata.0.Wetterwarnung.';
    
    
    
    /* ************************************************************************ */
    /*            Datenpfad konfigurieren ENDE                                  */
    /* ************************************************************************ */
    /* ************************************************************************ */
    /* NICHT EDITIEREN */
    /* ************************************************************************ */
    /* ************************************************************************ */
    var konstanten = [
        {'name':'telegram','value':1,count:0, delay:200, maxChar: 4000 },
        {"name":'pushover',"value":2, count:0, delay:1000, maxChar: 1000},
        {"name":'email',"value":4},
        {"name":'sayit',"value":8, count:0, delay:0, maxChar: 940},
        {"name":'home24',"value":16, count:0, delay:0},
        {"name":'alexa',"value":32, count:0, delay:0, maxChar: 940},
        {"name":'state',"value":64},
        {"name":'iogo',"value":128, maxChar: 940, count: 0, delay: 300},
        {"name":'state_html',"value":256}
    ];
    const TELEGRAM = konstanten[0].value;
    const PUSHOVER = konstanten[1].value;
    const EMAIL = konstanten[2].value;
    const SAYIT = konstanten[3].value;
    const HOMETWO = konstanten[4].value;
    const ALEXA = konstanten[5].value;
    const STATE = konstanten[6].value;
    const IOGO = konstanten[7].value;
    const STATE_HTML = konstanten[8].value;
    var uPushdienst = 0;
    const DWD = 1;
    const UWZ = 2;
    const NINA = 4;
    const DWD2 = 8; // only for request
    const ZAMG = 16;
    const MODES = [{mode:DWD, text:'DWD'},{mode:UWZ, text:'UWZ'},{mode:NINA, text:'NINA'}, {mode: ZAMG, text:'ZAMG'}];
    if(mainStatePath[mainStatePath.length - 1] != '.') mainStatePath += '.';
    const aliveState = mainStatePath+'alive';
    if (extendedExists(aliveState)) {
        setState(aliveState, true, true);
    }
    
    /* ************************************************************************* */
    /* ************************************************************************* */
    /* ************************************************************************* */
    /*                       Konfiguration ab hier                               */
    /* ************************************************************************* */
    /* ************************************************************************* */
    /* ************************************************************************* */
    
    /* Konfiguration der zu nutzenden Ausgabe um //uPushdienst+= PUSHOVER; zu aktivieren, bitte die // enfernen, also uPushdienst+= PUSHOVER; */
    uPushdienst+= TELEGRAM;          // Auskommentieren zum aktivieren
    uPushdienst+= PUSHOVER;          // Auskommentieren zum aktivieren
    //uPushdienst+= EMAIL;             // Auskommentieren zum aktivieren. Einstellungen nicht vergessen
    //uPushdienst+= SAYIT;             // Auskommentieren zum aktivieren. Einstellungen nicht vergessen
    //uPushdienst+= HOMETWO;           // Auskommentieren zum aktivieren. Einstellungen nicht vergessen
    //uPushdienst+= ALEXA;             // Auskommentieren zum aktivieren. Einstellungen nicht vergessen
    //uPushdienst+= STATE;             // Auskommentieren zum aktivieren. State befindet sich unter mainStatePath.message
    //uPushdienst+= IOGO;              // Auskommentieren zum aktivieren. Einstellungen nicht vergessen
    //uPushdienst+= STATE_HTML;        // Auskommentieren zum aktivieren. State_html befindet sich unter mainStatePath.messageHtml als Tabelle
    
    /* ************************************************************************* */
    /*                 Beispiele zur weiteren Konfiguration                      */
    /* ************************************************************************* */
    /*
    /* kein oder einen Eintrag möglich:
    /* var senderEmailID = ["max@mustermann.de"];
    /*
    /* kein oder mehrfach nach gleichem Muster [1, 2, 3] bzw. ['1', '2', '3'] Einträge
    /* '' ist das selbe wie "", jedoch nicht mischen.
    /*
    /* var empfaengerEmailID = ["max@musterman.de","max2@musterman.de"];
    /* var telegramUser = []; // leer
    /* var telegramUser = ['']; // leer
    /* var telegramUser = ['Hans']; // User mit Namen Hans
    /* var telegramUser = ['Hans', 'Gretel']; // User mit Namen Hans und User mit Namen Gretel
    /* var idSayIt = ["sayit.0.tts.text"];
    /* var sayItVolumen = [60]; // Zahl ohne ''
    /* var idSayIt = ["sayit.0.tts.text","sayit.1.tts.text"];
    /* var sayItVolumen = [60, 30]; // mehrfach Zahl ohne ''
    /* var ioGoUser = ['max@musterman.de'];
    /* var idAlexaSerial =['G090RV32984110Y', 'G090RZ3345643XR'];
    /* var alexaVolumen = [40, 30]; // Lautstärke die gleiche Anzahl an Einträgen wie bei idAlexaSerial
    /*
    /* ************************************************************************* */
    /*                          weitere Konfiguration                            */
    /* ************************************************************************* */
    
    /* ************************************************************************* */
    /*                                Datenabruf intern                          */
    /* ************************************************************************* */
    
    /* für UWZ Regionnamen eingeben "Warnung der Unwetterzentrale für XXXX" */
    /* Durch das auffüllen wird der Datenabruf der UWZ aktiviert*/
    /* Textbeispiel anstatt Entenhausen: 'Stadt / Dorfname' 'Berlin' oder 'den Regionsbezeichnung' 'den Schwarzwald' ''*/
    /* UWZ - Für Deutschland: UWZDE + PLZ (UWZDE12345) */
    /* var regionName = ['UWZDE13245', 'Entenhausen'] */
    /* zum Deaktivieren [[]] oder [['','']]*/
    var regionName          = [['UWZDE16540','Hohen Neuendorf']];
    
    // Standalone Datenquelle
    // entnehme ZAHL aus CSV
    /* nur Gemeinde/Landkreis/Großstädte werden verwendet: v.csv?__blob=publicationFile&v=3https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_cs */
    var dwdWarncellId = '812065144'; // Deaktivieren mit '' einzel: '2334535354' mehrere: ['23423424','23423423']
    
    // Koordinaten [{laengen:13.05501,breiten:47.80949},{breiten:46.6247200, laengen:14.3052800},{breiten:48.332741,laengen:14.62274}];.
    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 gebt die Koordinaten für euren Ort ein.
    ninaCoordinates = [{breiten:5xxxxx, laengen:13.xx, text:'Hohen Neuendorf'}]; //   ninaCoordinates = [{breiten:51.2277, laengen:6.7735, text:'dadrüben'}, {breiten:53.0511000, laengen:8.6309100, text:'Delmenhorst'}];
    // ninaCoordinates = []; 
    /* ************************************************************************* */
    /*         Datenabruf über Adapter oder externes Skript                      */
    /* ************************************************************************* */
    
    // für Nina wird die Gemeinde und der Landkreis benötigt. Am besten von hier kopieren: https://warnung.bund.de/assets/json/suche_channel.json
    // ohne die kryptischen Zeichen. Das ersetzt nicht den NINA-Adapter
    var uGemeinde = 'Hohen Neuendorf'; // hier steht zum Beispiel, Hamburg, Unterdorf
    var uLandkreis = 'Oberhavel'; // hier Kreis Bitburg, Landkreis Fürth
    
    /* ************************************************************************* */
    /*                                Sonstige                                   */
    /* ************************************************************************* */
    
    /* Einstellungen zur Emailbenachrichtigung*/
    var senderEmailID       ="xy@gmail.com"]; // mit Sender Emailadresse füllen. email Adapter muß installiert sein. 1 Eintrag erlaubt [] oder ["email1"]
    var empfaengerEmailID   = ["xy@gmail.com"]; // mit Empfänger Emailadresse füllen. Mehrere Empfänger möglich. [] oder ["email1"] oder ["email1","email2"]
    
    /* Konfiguration Sprachausgabe über Home24 - Mediaplayer */
    //var idMediaplayer = ["192.168.178.x:Port"];
    var idMediaplayer       = [""]; // Eingabe IP-Adresse incl. Port für Home24-Mediaplayer mehrere Möglich - ungetestet
    
    /* Konfiguration Telegram */
    var telegramUser                = ['Martin']; // Einzelnutzer ['Hans']; Multinutzer ['Hans, Gretel']; Nutzer vom Adapter übernehmen [];
    var telegramChatId              = ['28873xy']; // Mehrfach Einträge möglich ['Gruppe1','Gruppe2']
    var uTelegramReplyMarkup        = null; // Falls ihr ein Telegrammmenü verwendet, könnt ihr hier einen Weg zurück definieren z.B.: {keyboard: [['Zurück']], resize_keyboard: true};
    var uTelegramAllowNotification  = true; // Erlaube Telegramnotification (Benachrichtigungston/Hinweise auf dem Empfangsgerät)
    var uTelegramUseStdUser         = false; // Verwende immer auch die im Adapter gespeicherten Benutzer.
    uTelegramReplyMarkupInline      = true   // Bei Nachrichten die nicht mit volle Länge angefragt wurde, gibt es eine Schalfläche in der man die Langversion anfordern kann.
    
    /* Konfiguration Pushover */
    var uPushoverDeviceName     = ''; // ein bestimmtes Gerät z.B: ['droid4'];
    var uPushoverSound          = 'pushover'; // Sounds siehe: https://pushover.net/api#sounds
    
    //Konfiguration von ioGo
    var ioGoUser = ['']; // // Einzelnutzer ['Hans']; Multinutzer ['Hans', 'Gretel']; Nutzer vom Adapter übernehmen [];
    var ioGoExpiry = 0;     // Nachricht wird nach Sekunden entfernt. 0: aus
    /* Konfiguration Sprachausgabe über SayIt */
    var idSayIt             = ["sayit.0.tts.text"]; // mehrfach Einträge möglich
    var sayItVolumen        = [30]; // gleiche Anzahl wie idSayIt
    
    /* Konfiguration Sprachausgabe über Alexa
    /* mehrere Einträge möglich, bei mir ging nur der Echo, 2 dots 2.Gen reagieren nicht auf announcement. */
    var idAlexaSerial       = ['']; // die reine Seriennummer des Echos z.B.: var idAlexaSerial =['G090xy', 'G09xy']
    var alexaVolumen        = [30]; // Lautstärke die gleiche Anzahl an Einträgen wie bei idAlexaSerial
    alexaMultiroomParentsOff = false; // pausiere alle mit den IDs verknüpfte Multiroomgruppen
    
    // Filtereinstellungen über Objekte einstellen
    var minlevel                      =    1 // Warnungen unterhalb dieses Levels nicht senden; (DWD und Nina level 1-4  / UWZ 0-5)
    var attentionWarningLevel         =    3 // Warnung gleich oder oberhalb dieses Levels mit zusätzlichen Hinweisen versehen
    var minhoehe                      =    0 // Warnung für eine Höhe unterhalb dieses Wertes nicht senden
    var maxhoehe                      =    5000 // Warnung für eine Höhe oberhalb dieses Wertes nicht senden
    
    // Sprachausgabe Zeiten
    // Für durchgehende Sprachausgabe die Einstellung der Zeiten auf '' setzen. z.B. var startTimeSpeak = '';
    var startTimeSpeak =        '6:45';// Zeiten mo - fr ab der Sprachausgaben ok sind. Nicht unter 6 Uhr gehen oder den Schedule ändern
    var startTimeSpeakWeekend = '9:00';// sa + so Bemerkung siehe oben
    var endTimeSpeak =          '21:30'; // ab diesem Zeitpunkt gibt es keine Sprachausgabe
    
    // Ein manuellen Auslösen von Sprachnachrichten, löscht alle noch nicht ausgegebenen Sprachnachrichten aus der Liste.
    var uManuellClickClearSpeakMessageList = true;
    //Auslösen der Pushnachricht über States ignoriert Sprachausgabezeiten
    var forcedSpeak             = true;
    // keine Ansage über m/s Knoten und Windstärke. Die Angabe mit Kilometer pro Stunde wird angesagt
    var windForceDetailsSpeak   = false;
    
    // Über Objekte einzustellen
    uLogLevel = 1 // 0:OFF, 1:INFO, 2:ADVANCE, 4:DEBUG
    /* ************************************************************************* */
    /*                       Nur Anpassen wenn nötig                             */
    /* ************************************************************************* */
    
    //Formatierungsstring für Datum / Zeit Alternative "TT.MM.YYYY SS:mm" KEINE Anpassung nötig
    const formatierungString =  "TT.MM.YY SS:mm";
    
    var scriptOverrides = false; // Die Einstellung im Skript überschreiben bei jedem Start die Einstellungen in den Objekten (punkte unter Basiskonfiguration außer warnzelle.
    
    
    // Die Geschwindigkeit gibt an wie lange das Skript wartet bevor es eine neue Nachricht an die Sprachausgabe sendet.
    konstanten[3].delay /*SayIt*/       = 86; // Vorlese Geschwindigkeit pro Zeichen in ms
    konstanten[4].delay /*Home24*/      = 90; // Vorlese Geschwindigkeit pro Zeichen in ms
    konstanten[5].delay /*Alexa*/       = 88; // Vorlese Geschwindigkeit pro Zeichen in ms
    
    // Mit diesen Optionen verringert man die Nachrichtenlänge in dem Beschreibung oder Handlungsanweisungen
    // nicht der Nachricht hinzugefügt werden.
    // über Objekte einzustellen
    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
    var uSpracheMitBeschreibung         = true; // gilt für alle Sprachnachrichten
    var uSpracheMitAnweisungen          = true; // uSpracheMitBeschreibung muß evenfalls true sein um Anweisungen zu erhalten
    var uSpracheMitOhneAlles            = true; // super kurz überschreibt die anderen Einstellungen
    uTextHtmlMitOhneAlles               = false // super kurz für Text und Html
    
    // Obergrenze an Zeichen die über Sprachausgabe ausgegeben werden, bei überschreitung wird nur die Schlagzeile ausgegebenen
    var uMaxCharToSpeak = 0; // 0 = aus - Zahl größer als 0 = maximal Zeichenanzahl (1000 sind rund 86 Sekunden bla bla)
    
    // Automodus Filter um Warnungen unterhalb attentionWarningLevel von DWD, UWZ oder NINA zu unterdrücken
    // Sprachausgabe bei auto und manuell unterdrückt.
    // Diese Warnungen sind vorhanden, sie werden nur in den benannten Fällen ausgeblendet.
    // Ist eine feste Vorgabe überschreibt alles andere
    var uFilterList               = 0;   // generelles Filter für den AutoModus ( = DWD + UWZ; oder = NINA; oder = 0;), außer Warnungslevel ist gleich/über attentionWarningLevel
    var uAutoNinaFilterList       = ['CAP@hochwasserzentralen.de']; //Nina only. Filter diesen Sender raus s.o. - mehrere ['abc','cde'];
    
    var uwzPath=            'javascript.0.UWZ';
    var dwdPath=            'dwd.0';
    var ninaPath=           'nina.0'
    
    var intervalMinutes = 5; // die Daten bei DWD werden alle 10 Minuten aktualisiert.
    
    // Instanzen im ioBroker
    var telegramInstanz=    'telegram.0';
    var pushoverInstanz=    'pushover.0';
    var ioGoInstanz=        'iogo.0';
    var alexaInstanz=       'alexa2.0';
    var emailInstanz=       'email.0';
    
    /* ************************************************************************* */
    /* ************************************************************************* */
    /* ************************************************************************* */
    /*                       Konfiguration Ende                                  */
    /* ************************************************************************* */
    /*        Keine Anpassungen ab hier, außer du weißt was du tuest             */
    /* ************************************************************************* */
    /* ************************************************************************* */
    /* ************************************************************************* */
    
    //Logausgabe
    var DEBUGSENDEMAIL = false;
    var DEBUG_VARS = false;
    //ab hier bei Update
    // 123456
    
    

    Wenn ich dir noch was schicken soll, schreib bitte einfach.

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

    @martybr
    Ich glaube nicht das ich da was machen kann. Der Fehler sagt das der Server die Verbindung zurück setzt. Hab ich auch, finde aber nix mit dem ich das weg bekomme. Und kommt auch nicht jedesmal.

    @Nashra
    sicher das du nicht den Ton auf stumm gestellt hast? Das Skript kommt auch mit Gruppen klar. Aber ich weiß aktuell nicht wie alles funktioniert, gib mir dafür nochmal etwas mehr Zeit.

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    M 1 Antwort Letzte Antwort
    0
    • T ticaki

      @martybr
      Ich glaube nicht das ich da was machen kann. Der Fehler sagt das der Server die Verbindung zurück setzt. Hab ich auch, finde aber nix mit dem ich das weg bekomme. Und kommt auch nicht jedesmal.

      @Nashra
      sicher das du nicht den Ton auf stumm gestellt hast? Das Skript kommt auch mit Gruppen klar. Aber ich weiß aktuell nicht wie alles funktioniert, gib mir dafür nochmal etwas mehr Zeit.

      M Offline
      M Offline
      MartyBr
      schrieb am zuletzt editiert von
      #1289

      @ticaki
      Danke für die Prüfung. Das war nur irritierend.

      Gruß
      Martin


      Intel NUCs mit Proxmox / Iobroker als VM unter Debian
      Raspeberry mit USB Leseköpfen für Smartmeter
      Homematic und Homematic IP

      1 Antwort Letzte Antwort
      0
      • NashraN Nashra

        @ticaki sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

        @nashra
        Wenn ich bei mir auf commands.alexa klicke kommt eine Sprachausgabe. Gerade eben iobroker und raspi auf den neusten Stand gebracht.

        Glaube den Fehler gefunden zu haben, ich hatte mal bei Alexa eine Grupp für alle angelegt.
        Diese jetzt gelöscht und commands angeklickt, der Ring ist kurz teilweise weiß aber da kommt nichts,
        vielleicht weil keine Nachrichten vorhanden sind?
        Warte mal bis eine Warnung vorliegt.

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

        @nashra

        Teste mal folgendes:

        Gib in diesem Datenpunkt einen Text ein, der sollte dann ausgegeben werden. Geht es, liegt es am Skript, wenn nicht an Alexa

        musst deine Serial eingeben.

        alexa2.0.Echo-Devices.---deine serial---.Commands.announcement
        

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        NashraN 1 Antwort Letzte Antwort
        0
        • T ticaki

          @nashra

          Teste mal folgendes:

          Gib in diesem Datenpunkt einen Text ein, der sollte dann ausgegeben werden. Geht es, liegt es am Skript, wenn nicht an Alexa

          musst deine Serial eingeben.

          alexa2.0.Echo-Devices.---deine serial---.Commands.announcement
          
          NashraN Offline
          NashraN Offline
          Nashra
          Most Active Forum Testing
          schrieb am zuletzt editiert von Nashra
          #1291

          @ticaki sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

          @nashra

          Teste mal folgendes:

          Gib in diesem Datenpunkt einen Text ein, der sollte dann ausgegeben werden. Geht es, liegt es am Skript, wenn nicht an Alexa

          musst deine Serial eingeben.

          alexa2.0.Echo-Devices.---deine serial---.Commands.announcement
          

          Hi @ticaki
          habs erst jetzt gesehen, sorry. Also in dem DP steht seit vorhin eine Warnung drin

          Amtliche WARNUNG vor FROST des DWD für Honolulu  gültig vom 3 Dezember  22:00 Uhr bis 4 Dezember  09:00 Uhr.  Insgesamt eine aktive Warnung.
          

          Im Log kommt folgendes

          Heute 14:17	info	javascript.0	[3 Einträge] info: Sendwarnings manuell uPushdienst: 32
          

          Aber Alexa bleibt stumm. Verstehe das nicht, es ist nie was am Skript oder sonst geändert worden.
          Achja, habe die Tage Alexa Adapter auf 3.23.1 angehoben, aber mit dem alten ging es ja auch nicht.

          Gruß Ralf
          Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          T 1 Antwort Letzte Antwort
          0
          • NashraN Nashra

            @ticaki sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

            @nashra

            Teste mal folgendes:

            Gib in diesem Datenpunkt einen Text ein, der sollte dann ausgegeben werden. Geht es, liegt es am Skript, wenn nicht an Alexa

            musst deine Serial eingeben.

            alexa2.0.Echo-Devices.---deine serial---.Commands.announcement
            

            Hi @ticaki
            habs erst jetzt gesehen, sorry. Also in dem DP steht seit vorhin eine Warnung drin

            Amtliche WARNUNG vor FROST des DWD für Honolulu  gültig vom 3 Dezember  22:00 Uhr bis 4 Dezember  09:00 Uhr.  Insgesamt eine aktive Warnung.
            

            Im Log kommt folgendes

            Heute 14:17	info	javascript.0	[3 Einträge] info: Sendwarnings manuell uPushdienst: 32
            

            Aber Alexa bleibt stumm. Verstehe das nicht, es ist nie was am Skript oder sonst geändert worden.
            Achja, habe die Tage Alexa Adapter auf 3.23.1 angehoben, aber mit dem alten ging es ja auch nicht.

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

            @nashra
            Dieser DP wird vom Script beschrieben. Da keine Ausgabe erfolgt stimmt was mit dem Alexa Adapter nicht. Oder Lautstärke ist auf 0

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            NashraN 1 Antwort Letzte Antwort
            0
            • T ticaki

              @nashra
              Dieser DP wird vom Script beschrieben. Da keine Ausgabe erfolgt stimmt was mit dem Alexa Adapter nicht. Oder Lautstärke ist auf 0

              NashraN Offline
              NashraN Offline
              Nashra
              Most Active Forum Testing
              schrieb am zuletzt editiert von
              #1293

              @ticaki sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

              @nashra
              Dieser DP wird vom Script beschrieben. Da keine Ausgabe erfolgt stimmt was mit dem Alexa Adapter nicht. Oder Lautstärke ist auf 0

              Hi @ticaki
              Lautstärke steht auf 50. Es mußte aber einiges am Alexa Adapter geändert worden da Amazon viele gesperrt hatte
              wegen zu vieler Anfragen. Momentan installiert ist die 3.23.2 von Alexa.

              Gruß Ralf
              Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              1 Antwort Letzte Antwort
              0
              • Andreas67 0A Offline
                Andreas67 0A Offline
                Andreas67 0
                schrieb am zuletzt editiert von
                #1294
                21:47:28.789	error	javascript.0 (1644) script.js.common.Unwetterwarnung: Error: Function "extendObject" is not allowed. Use adapter settings to allow it.
                21:47:28.791	error	javascript.0 (1644) at addWarncell (script.js.common.Unwetterwarnung:3247:15)
                21:47:28.791	error	javascript.0 (1644) at Object.init (script.js.common.Unwetterwarnung:976:17)
                
                Andreas67 0A 1 Antwort Letzte Antwort
                0
                • Andreas67 0A Andreas67 0
                  21:47:28.789	error	javascript.0 (1644) script.js.common.Unwetterwarnung: Error: Function "extendObject" is not allowed. Use adapter settings to allow it.
                  21:47:28.791	error	javascript.0 (1644) at addWarncell (script.js.common.Unwetterwarnung:3247:15)
                  21:47:28.791	error	javascript.0 (1644) at Object.init (script.js.common.Unwetterwarnung:976:17)
                  
                  Andreas67 0A Offline
                  Andreas67 0A Offline
                  Andreas67 0
                  schrieb am zuletzt editiert von
                  #1295

                  @andreas67-0 Bekomm beim starten de Scripts immer dies Fehler

                  T 1 Antwort Letzte Antwort
                  0
                  • Andreas67 0A Andreas67 0

                    @andreas67-0 Bekomm beim starten de Scripts immer dies Fehler

                    T Offline
                    T Offline
                    TT-Tom
                    schrieb am zuletzt editiert von
                    #1296

                    @andreas67-0

                    kann sein das in deinen Einstellungen der Instanz etwas fehlt. Ist "Exec" und "setObject" erlaubt?

                    Gruß Tom
                    https://github.com/tt-tom17
                    Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                    NSPanel Script Wiki
                    https://github.com/joBr99/nspanel-lovelace-ui/wiki

                    NSPanel Adapter Wiki
                    https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                    Andreas67 0A 1 Antwort Letzte Antwort
                    1
                    • T TT-Tom

                      @andreas67-0

                      kann sein das in deinen Einstellungen der Instanz etwas fehlt. Ist "Exec" und "setObject" erlaubt?

                      Andreas67 0A Offline
                      Andreas67 0A Offline
                      Andreas67 0
                      schrieb am zuletzt editiert von
                      #1297

                      @tt-tom Danke für die Info, ist zumindest ein Problem gelöst

                      1 Antwort Letzte Antwort
                      0
                      • Andreas67 0A Offline
                        Andreas67 0A Offline
                        Andreas67 0
                        schrieb am zuletzt editiert von Andreas67 0
                        #1298

                        aktuell scheitere an diesem Problem:
                        Script geht immer auf stop
                        Hat ja laut Script was mit dem Nachrichtigen versand zu tun

                        23:14:23.766	info	javascript.0 (2170) script.js.common.Unwetterwarnung: info: Fehler in CreateStates #5
                        23:14:23.767	info	javascript.0 (2170) script.js.common.Unwetterwarnung: info: TypeError: Cannot read properties of null (reading 'val')
                        23:14:23.921	info	javascript.0 (2170) Stop script script.js.common.Unwetterwarnung
                        23:14:23.923	info	javascript.0 (2170) script.js.common.Unwetterwarnung: info: Skripts gestoppt: ID:993.1927840622801
                        
                        T 1 Antwort Letzte Antwort
                        0
                        • Andreas67 0A Andreas67 0

                          aktuell scheitere an diesem Problem:
                          Script geht immer auf stop
                          Hat ja laut Script was mit dem Nachrichtigen versand zu tun

                          23:14:23.766	info	javascript.0 (2170) script.js.common.Unwetterwarnung: info: Fehler in CreateStates #5
                          23:14:23.767	info	javascript.0 (2170) script.js.common.Unwetterwarnung: info: TypeError: Cannot read properties of null (reading 'val')
                          23:14:23.921	info	javascript.0 (2170) Stop script script.js.common.Unwetterwarnung
                          23:14:23.923	info	javascript.0 (2170) script.js.common.Unwetterwarnung: info: Skripts gestoppt: ID:993.1927840622801
                          
                          T Offline
                          T Offline
                          TT-Tom
                          schrieb am zuletzt editiert von
                          #1299

                          @andreas67-0

                          ich kenne das Script nicht, aber es hat ein Problem in "CreateStates" und damit vermutlich als Folgefehler den TypeError. du musst mal die Funktion "CreateStates" suchen und auf Fehler prüfen.

                          Das wäre jetzt mein Ansatz.

                          Gruß Tom
                          https://github.com/tt-tom17
                          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                          NSPanel Script Wiki
                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                          NSPanel Adapter Wiki
                          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                          Andreas67 0A 1 Antwort Letzte Antwort
                          0
                          • T TT-Tom

                            @andreas67-0

                            ich kenne das Script nicht, aber es hat ein Problem in "CreateStates" und damit vermutlich als Folgefehler den TypeError. du musst mal die Funktion "CreateStates" suchen und auf Fehler prüfen.

                            Das wäre jetzt mein Ansatz.

                            Andreas67 0A Offline
                            Andreas67 0A Offline
                            Andreas67 0
                            schrieb am zuletzt editiert von
                            #1300

                            @tt-tom Glaube mein Problem ist das der DP mainStatePath config.manuell nicht erzeugt wird, weis leider nicht warum
                            Glaub das der Fehler irgendwo in diesem Bereich des Scripts liegt

                                try {
                                    // MODE änderung über Datenpunkte string
                                    await createStateCustomAsync(configModeState, '', { read: true, write: true, desc: "Modusauswahl DWD, UWZ, Nina oder Zamg", type: "string"});
                            
                                    on({ id: configModeState, change: 'ne', ack: false }, function(obj) {
                                        if (obj.state.val && typeof obj.state.val === 'string' &&
                                            (obj.state.val.toUpperCase().includes('DWD') || obj.state.val.toUpperCase().includes('UWZ') || obj.state.val.toUpperCase().includes('NINA') || obj.state.val.toUpperCase().includes('ZAMG'))) {
                                            //setState(configModeState, MODE, true)
                                            let mode = 0;
                                            if (firstRun) return;
                                            for (let a = 0; a < MODES.length; a++) mode |= obj.state.val.toUpperCase().includes(MODES[a].text) ? MODES[a].mode : 0;
                                            if (MODE != mode) {
                                                ticaLog(4, 'Modus wird geändert von: ' + mode + ' String:' + obj.state.val);
                                                changeMode(mode);
                                            } else {
                                                changeMode(MODE);
                                            }
                                        } else {
                                            changeMode(MODE);
                                        }
                                    });
                            
                                    // MODE änderung über Datenpunkte Boolean
                                    for (let a = 0; a < MODES.length; a++) {
                                        let tok = MODES[a].text.toLowerCase();
                                        let id = mainStatePath + 'config.' + tok;
                                        if (!await existsStateAsync(id)) {
                                            let mi = !!(MODE & MODES[a].mode);
                                            await createStateCustomAsync(id, mi, { read: true, write: true, desc: "Aktivere " + tok.toUpperCase() + '.', type: "boolean" });
                                        }
                                        on({ id: id, change: 'ne', ack: false }, function(obj) {
                                            let arr = obj.id.split('.');
                                            let tok = arr[arr.length - 1].toUpperCase();
                                            let mode = MODES[MODES.findIndex(function(j) { return j.text == tok })].mode;
                                            let oldMode = MODE;
                                            oldMode = switchFlags(oldMode, mode, obj.state.val);
                                            ticaLog(4, 'Modus wird geändert von: ' + MODE);
                                            changeMode(oldMode);
                                        });
                                        MODE = switchFlags(MODE, MODES[a].mode, getState(id).val);
                            
                                    }
                                    // Automodus ein und ausschalten
                                    let id = mainStatePath + 'config.auto.on';
                                    await createStateCustomAsync(id, true, { read: true, write: true, desc: "Aktivere automatischen Push bei eintreffen der Warnungen.", type: "boolean" });
                            
                                    autoSendWarnings = getState(id).val;
                                    await setStateAsync(id, !!(autoSendWarnings), true);
                            
                                    for (let a = 0; a < configObj.length; a++) {
                                        if (onStopped) return;
                                        let p = mainStatePath + 'config.' + configObj[a].id
                                        if (!await existsStateAsync(p)) {
                                            let n = configObj[a].name !== undefined ? configObj[a].name : configObj[a].id;
                                            let def = configObj[a].def;
                                            await createStateAsync(p, {read:true, write:true, def: def, type:configObj[a].typ, name:n});
                                        }
                                        if (scriptOverrides) {
                                            await configObj[a].setObj();
                                        } else {
                                            const v = await getStateAsync(p);
                                            configObj[a].on({id:p, state:{val:v.val}});
                                        }
                                        on(p, configObj[a].on);
                                    }
                                    // Nachrichtenversand per Click States/ config. und auto . erzeugen und subscript
                                    for (let a = 0; a < konstanten.length; a++) {
                                        if ((uPushdienst & konstanten[a].value) != 0) {
                                            if (!await existsStateAsync(mainStatePath + 'commands.' + konstanten[a].name)) {
                                                await createStateAsync(mainStatePath + 'commands.' + konstanten[a].name, { read: true, write: true, desc: "Gebe Warnungen auf dieser Schiene aus", type: "boolean", role: "button", def: false });
                                            }
                                            if (!await existsStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_short')) {
                                                await createStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_short', { read: true, write: true, desc: "Gebe Kurzwarnungen auf dieser Schiene aus", type: "boolean", role: "button", def: false });
                                            }
                                            if (!await existsStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_long')) {
                                                await createStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_long', { read: true, write: true, desc: "Gebe lange Warnungen auf dieser Schiene aus", type: "boolean", role: "button", def: false });
                                            }
                                            if (!await existsStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_veryshort')) {
                                                await createStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_veryshort', { read: true, write: true, desc: "Gebe sehr kurze Warnungen auf dieser Schiene aus", type: "boolean", role: "button", def: false });
                                            }
                                            for (let x = 0; x < MODES.length; x++) {
                                                let oid = mainStatePath + 'config.auto.' + MODES[x].text.toLowerCase() + '.' + konstanten[a].name;
                                                await createStateCustomAsync(oid, true, { read: true, write: true, desc: "Schalte Autopushmöglichkeiten ein / aus", type: "boolean" });
                                                setConfigKonstanten(oid, getState(oid).val, true);
                            
                                                oid = mainStatePath + 'config.manuell.' + MODES[x].text.toLowerCase() + '.' + konstanten[a].name;
                                                await createStateCustomAsync(oid, true, { read: true, write: true, desc: "Schalte Manuellepushmöglichkeiten ein / aus", type: "boolean" });
                                                setConfigKonstanten(oid, getState(oid).val, false);
                                                // letzer fund von Create Custom
                                            }
                                        }
                                    }
                                    ticaLog(0, 'Abonniere Konfigurationsdatenpunkte')
                                    subscribeStates();
                                    setWeekend();
                                    activateSchedule();
                                    ticaLog(0, 'Setzte Modus, Inialisiere Datenbank, starte Datenabruf(asynchron)')
                                    if (firstRun) changeMode(MODE)
                                    ticaLog(0, 'Initialisierung abgeschlossen')
                                } catch(error) {
                                    ticaLog(0,'Fehler in CreateStates #5');
                                    ticaLog(0,error);
                                    stopScript();
                                }
                            
                            Andreas67 0A 1 Antwort Letzte Antwort
                            0
                            • Andreas67 0A Andreas67 0

                              @tt-tom Glaube mein Problem ist das der DP mainStatePath config.manuell nicht erzeugt wird, weis leider nicht warum
                              Glaub das der Fehler irgendwo in diesem Bereich des Scripts liegt

                                  try {
                                      // MODE änderung über Datenpunkte string
                                      await createStateCustomAsync(configModeState, '', { read: true, write: true, desc: "Modusauswahl DWD, UWZ, Nina oder Zamg", type: "string"});
                              
                                      on({ id: configModeState, change: 'ne', ack: false }, function(obj) {
                                          if (obj.state.val && typeof obj.state.val === 'string' &&
                                              (obj.state.val.toUpperCase().includes('DWD') || obj.state.val.toUpperCase().includes('UWZ') || obj.state.val.toUpperCase().includes('NINA') || obj.state.val.toUpperCase().includes('ZAMG'))) {
                                              //setState(configModeState, MODE, true)
                                              let mode = 0;
                                              if (firstRun) return;
                                              for (let a = 0; a < MODES.length; a++) mode |= obj.state.val.toUpperCase().includes(MODES[a].text) ? MODES[a].mode : 0;
                                              if (MODE != mode) {
                                                  ticaLog(4, 'Modus wird geändert von: ' + mode + ' String:' + obj.state.val);
                                                  changeMode(mode);
                                              } else {
                                                  changeMode(MODE);
                                              }
                                          } else {
                                              changeMode(MODE);
                                          }
                                      });
                              
                                      // MODE änderung über Datenpunkte Boolean
                                      for (let a = 0; a < MODES.length; a++) {
                                          let tok = MODES[a].text.toLowerCase();
                                          let id = mainStatePath + 'config.' + tok;
                                          if (!await existsStateAsync(id)) {
                                              let mi = !!(MODE & MODES[a].mode);
                                              await createStateCustomAsync(id, mi, { read: true, write: true, desc: "Aktivere " + tok.toUpperCase() + '.', type: "boolean" });
                                          }
                                          on({ id: id, change: 'ne', ack: false }, function(obj) {
                                              let arr = obj.id.split('.');
                                              let tok = arr[arr.length - 1].toUpperCase();
                                              let mode = MODES[MODES.findIndex(function(j) { return j.text == tok })].mode;
                                              let oldMode = MODE;
                                              oldMode = switchFlags(oldMode, mode, obj.state.val);
                                              ticaLog(4, 'Modus wird geändert von: ' + MODE);
                                              changeMode(oldMode);
                                          });
                                          MODE = switchFlags(MODE, MODES[a].mode, getState(id).val);
                              
                                      }
                                      // Automodus ein und ausschalten
                                      let id = mainStatePath + 'config.auto.on';
                                      await createStateCustomAsync(id, true, { read: true, write: true, desc: "Aktivere automatischen Push bei eintreffen der Warnungen.", type: "boolean" });
                              
                                      autoSendWarnings = getState(id).val;
                                      await setStateAsync(id, !!(autoSendWarnings), true);
                              
                                      for (let a = 0; a < configObj.length; a++) {
                                          if (onStopped) return;
                                          let p = mainStatePath + 'config.' + configObj[a].id
                                          if (!await existsStateAsync(p)) {
                                              let n = configObj[a].name !== undefined ? configObj[a].name : configObj[a].id;
                                              let def = configObj[a].def;
                                              await createStateAsync(p, {read:true, write:true, def: def, type:configObj[a].typ, name:n});
                                          }
                                          if (scriptOverrides) {
                                              await configObj[a].setObj();
                                          } else {
                                              const v = await getStateAsync(p);
                                              configObj[a].on({id:p, state:{val:v.val}});
                                          }
                                          on(p, configObj[a].on);
                                      }
                                      // Nachrichtenversand per Click States/ config. und auto . erzeugen und subscript
                                      for (let a = 0; a < konstanten.length; a++) {
                                          if ((uPushdienst & konstanten[a].value) != 0) {
                                              if (!await existsStateAsync(mainStatePath + 'commands.' + konstanten[a].name)) {
                                                  await createStateAsync(mainStatePath + 'commands.' + konstanten[a].name, { read: true, write: true, desc: "Gebe Warnungen auf dieser Schiene aus", type: "boolean", role: "button", def: false });
                                              }
                                              if (!await existsStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_short')) {
                                                  await createStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_short', { read: true, write: true, desc: "Gebe Kurzwarnungen auf dieser Schiene aus", type: "boolean", role: "button", def: false });
                                              }
                                              if (!await existsStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_long')) {
                                                  await createStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_long', { read: true, write: true, desc: "Gebe lange Warnungen auf dieser Schiene aus", type: "boolean", role: "button", def: false });
                                              }
                                              if (!await existsStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_veryshort')) {
                                                  await createStateAsync(mainStatePath + 'commands.' + konstanten[a].name + '_veryshort', { read: true, write: true, desc: "Gebe sehr kurze Warnungen auf dieser Schiene aus", type: "boolean", role: "button", def: false });
                                              }
                                              for (let x = 0; x < MODES.length; x++) {
                                                  let oid = mainStatePath + 'config.auto.' + MODES[x].text.toLowerCase() + '.' + konstanten[a].name;
                                                  await createStateCustomAsync(oid, true, { read: true, write: true, desc: "Schalte Autopushmöglichkeiten ein / aus", type: "boolean" });
                                                  setConfigKonstanten(oid, getState(oid).val, true);
                              
                                                  oid = mainStatePath + 'config.manuell.' + MODES[x].text.toLowerCase() + '.' + konstanten[a].name;
                                                  await createStateCustomAsync(oid, true, { read: true, write: true, desc: "Schalte Manuellepushmöglichkeiten ein / aus", type: "boolean" });
                                                  setConfigKonstanten(oid, getState(oid).val, false);
                                                  // letzer fund von Create Custom
                                              }
                                          }
                                      }
                                      ticaLog(0, 'Abonniere Konfigurationsdatenpunkte')
                                      subscribeStates();
                                      setWeekend();
                                      activateSchedule();
                                      ticaLog(0, 'Setzte Modus, Inialisiere Datenbank, starte Datenabruf(asynchron)')
                                      if (firstRun) changeMode(MODE)
                                      ticaLog(0, 'Initialisierung abgeschlossen')
                                  } catch(error) {
                                      ticaLog(0,'Fehler in CreateStates #5');
                                      ticaLog(0,error);
                                      stopScript();
                                  }
                              
                              Andreas67 0A Offline
                              Andreas67 0A Offline
                              Andreas67 0
                              schrieb am zuletzt editiert von
                              #1301

                              UWZuZ.JPG

                              T 1 Antwort Letzte Antwort
                              0
                              • Andreas67 0A Andreas67 0

                                UWZuZ.JPG

                                T Offline
                                T Offline
                                TT-Tom
                                schrieb am zuletzt editiert von
                                #1302

                                @andreas67-0

                                hast du mal den Datenbaum komplett gelöscht und das Script neu gestartet?

                                ich muss jetzt die Augen zu machen, bis morgen :sleeping:

                                Gruß Tom
                                https://github.com/tt-tom17
                                Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                NSPanel Script Wiki
                                https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                NSPanel Adapter Wiki
                                https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                Andreas67 0A 1 Antwort Letzte Antwort
                                0
                                • T TT-Tom

                                  @andreas67-0

                                  hast du mal den Datenbaum komplett gelöscht und das Script neu gestartet?

                                  ich muss jetzt die Augen zu machen, bis morgen :sleeping:

                                  Andreas67 0A Offline
                                  Andreas67 0A Offline
                                  Andreas67 0
                                  schrieb am zuletzt editiert von
                                  #1303

                                  @tt-tom Ja hab ich schon 3 mal Probiert

                                  T 1 Antwort Letzte Antwort
                                  0
                                  • Andreas67 0A Andreas67 0

                                    @tt-tom Ja hab ich schon 3 mal Probiert

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

                                    @andreas67-0
                                    Hallo,

                                    wird basisconfiguration komplett erstellt?

                                    Hab das Skript mal mit anderem mainstatepath gestartet. Kein Fehler.

                                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                    Spenden

                                    Andreas67 0A 1 Antwort Letzte Antwort
                                    0
                                    • T ticaki

                                      @andreas67-0
                                      Hallo,

                                      wird basisconfiguration komplett erstellt?

                                      Hab das Skript mal mit anderem mainstatepath gestartet. Kein Fehler.

                                      Andreas67 0A Offline
                                      Andreas67 0A Offline
                                      Andreas67 0
                                      schrieb am zuletzt editiert von
                                      #1305

                                      @ticaki sieht bei mir so aus (hab Ort eingetragen wo aktuell eine Warnung ansteht)
                                      Basiskonfig.JPG

                                      T 1 Antwort Letzte Antwort
                                      0
                                      • Andreas67 0A Andreas67 0

                                        @ticaki sieht bei mir so aus (hab Ort eingetragen wo aktuell eine Warnung ansteht)
                                        Basiskonfig.JPG

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

                                        @andreas67-0

                                        soweit ich das sehe könnte der Fehler durch diese Zeile ausgelöst werden. kommentiere das mal aus, lass die initialisierung durchlaufen und aktiviere es wieder

                                                    configObj[a].on({id:p, state:{val:v.val}});
                                        

                                        EDIT ich sollte mehr lesen.

                                        Bin leider noch immer nicht wieder ganz in meinem Skript drin, kannst auch versuchen die Einstellung von

                                        scriptOverrides
                                        

                                        auf false/true zu verändern.

                                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                        Spenden

                                        Andreas67 0A 1 Antwort Letzte Antwort
                                        0
                                        • T ticaki

                                          @andreas67-0

                                          soweit ich das sehe könnte der Fehler durch diese Zeile ausgelöst werden. kommentiere das mal aus, lass die initialisierung durchlaufen und aktiviere es wieder

                                                      configObj[a].on({id:p, state:{val:v.val}});
                                          

                                          EDIT ich sollte mehr lesen.

                                          Bin leider noch immer nicht wieder ganz in meinem Skript drin, kannst auch versuchen die Einstellung von

                                          scriptOverrides
                                          

                                          auf false/true zu verändern.

                                          Andreas67 0A Offline
                                          Andreas67 0A Offline
                                          Andreas67 0
                                          schrieb am zuletzt editiert von
                                          #1307

                                          @ticaki Hab es jz nach 2 Stunden geschafft hab den var mainStatePath = '0_userdata.0.wetterwarnung.'; auf var mainStatePath = '0_userdata.0.wetterwarnung_Test.'; geändert jz funktioniert es endlich lag wohl echt daran dass dann nicht alle DP erstellt werden, keine Ahnung warum. Aber danke für eure Hilfe

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          760

                                          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