Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • Andreas67 0
      Andreas67 0 @TT-Tom last edited by

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

      1 Reply Last reply Reply Quote 0
      • Andreas67 0
        Andreas67 0 last edited by 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 1 Reply Last reply Reply Quote 0
        • T
          TT-Tom @Andreas67 0 last edited by

          @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 0 1 Reply Last reply Reply Quote 0
          • Andreas67 0
            Andreas67 0 @TT-Tom last edited by

            @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 0 1 Reply Last reply Reply Quote 0
            • Andreas67 0
              Andreas67 0 @Andreas67 0 last edited by

              UWZuZ.JPG

              T 1 Reply Last reply Reply Quote 0
              • T
                TT-Tom @Andreas67 0 last edited by

                @andreas67-0

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

                ich muss jetzt die Augen zu machen, bis morgen 😴

                Andreas67 0 1 Reply Last reply Reply Quote 0
                • Andreas67 0
                  Andreas67 0 @TT-Tom last edited by

                  @tt-tom Ja hab ich schon 3 mal Probiert

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    ticaki Developer @Andreas67 0 last edited by ticaki

                    @andreas67-0
                    Hallo,

                    wird basisconfiguration komplett erstellt?

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

                    Andreas67 0 1 Reply Last reply Reply Quote 0
                    • Andreas67 0
                      Andreas67 0 @ticaki last edited by

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

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        ticaki Developer @Andreas67 0 last edited by 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 0 1 Reply Last reply Reply Quote 0
                        • Andreas67 0
                          Andreas67 0 @ticaki last edited by

                          @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 Reply Last reply Reply Quote 1
                          • T
                            TT-Tom @Andreas67 0 last edited by

                            @andreas67-0
                            Mal so als Info.

                            Wo du das jetzt schreibst, ich hatte mir auch mal ein Script geschrieben zum Anlegen von DP unter 0_userdata. wenn das Anlegen schief gelaufen ist, musste ich den Objektbaum löschen und ioBroker neu starten, sonst hat das sich immer wieder aufgehangen. Im Hintergrund waren Pfade noch vorhanden, vermutlich im Speicher, die im Objektbaum schon gelöscht wurden.

                            1 Reply Last reply Reply Quote 0
                            • wendy2702
                              wendy2702 last edited by

                              Hi,

                              ich habe vor einigen Tagen auf Version 1.0.11 upgedatet.

                              Jetzt bekommen ich alle 10 Minuten die gleiche Meldung:

                              cdef279e-cae5-4823-8417-cdd3bcc410f4-grafik.png

                              Ist das eine Einstellung vom Skript oder warum passiert das?

                              1 Reply Last reply Reply Quote 0
                              • L
                                lindi200000 last edited by

                                Hallo,
                                danke erstmal für das Script.
                                Ich habe nur ein Problem oder Verständniss Frage.
                                Aktuell kommt über DWD viel Frostwarnung rein. das wird auch über Alexa ausgegeben.
                                Ich habe folgendes deswegen eingerichtet:

                                var minlevel                      =    2
                                

                                Ich bekomme aber trotzdem noch die Warnungen.

                                🌡 Amtliche WARNUNG vor FROST des DWD für 
                                gültig vom 16.12.22 18:00 Uhr bis 17.12.22 11:00 Uhr
                                
                                Es tritt mäßiger Frost zwischen -5 °C und -9 °C auf. Vor allem bei Aufklaren über Schnee sinken die Temperaturen auf Werte bis -12 °C. Insgesamt 2 gültige Warnungen.
                                

                                Was mich wundert, das ist als Grün gekennzeichnet. Durch den Filter sollte aber doch das eigentlich nicht mehr kommen, zumindest währe es schön, wenn dies nicht ehr über Alexa kommt. Telegram ist da noch in Ordnung.

                                Ist das ein Bug oder habe ich ggf. iwo was falsch eingestellt?

                                VG

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  ticaki Developer @lindi200000 last edited by

                                  @lindi200000
                                  minlevel wird in dem Objektbaum eingstellt.

                                  0_userdata.0.wetterwarnung1.config.basiskonfiguration.filter.level_minimum
                                  
                                  L 1 Reply Last reply Reply Quote 0
                                  • L
                                    lindi200000 @ticaki last edited by

                                    @ticaki da steht es aber auch auf 2
                                    6d1d13f7-2651-45f2-9cb1-c676c7d6d875-image.png

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      ticaki Developer @lindi200000 last edited by

                                      @lindi200000
                                      Hallo, bitte teste mal ob es sich das Verhalten ändert wenn du die beiden Höhenmaße auf auf +/- 100 Meter auf deinen Ort einstellst.

                                      Ich bekomme keine grünen Meldungen, habe jedoch die Höhe eingestellt.

                                      Zwischen Weihnachten und Neujahr werde ich mich wohl ein paar Tage wieder ans Skript setzt. Dann kann ich mir das genauer ansehen.

                                      Rababersaft 1 Reply Last reply Reply Quote 0
                                      • Rababersaft
                                        Rababersaft @ticaki last edited by

                                        @ticaki
                                        Hallo und frohe Weihnachten gehabt zu haben wünsche ich. 😉

                                        Ich habe ein neues Problem, bin mir aber nicht sicher ob es hier rein gehört,
                                        jedoch das Script ist von hier.
                                        Mein Editor merkert mir jede menge rot an, jedoch scheint das Script zu laufen.
                                        sicherlich mache ich doch was verkehrt, oder?

                                        Cannot find modul ... ist die Meldung...

                                        javascript-debian.png

                                        Bin für jeden Tip Dankbar...

                                        T 1 Reply Last reply Reply Quote 0
                                        • T
                                          ticaki Developer @Rababersaft last edited by

                                          @rababersaft
                                          Das müssten um die 12 Stellen sein. Das sind keine "Fehler". Was der Skripteditor nicht kennt, darf einfach nicht sein und wird deshalb markiert.

                                          Gruß Tim

                                          Rababersaft 1 Reply Last reply Reply Quote 0
                                          • Rababersaft
                                            Rababersaft @ticaki last edited by

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

                                            @rababersaft
                                            Das müssten um die 12 Stellen sein. Das sind keine "Fehler". Was der Skripteditor nicht kennt, darf einfach nicht sein und wird deshalb markiert.

                                            Gruß Tim

                                            Sind bei mir im neuen Skript etwa 14 Stellen. Danke Dir für die Info 🙂

                                            Und echt gute Arbeit an alle Entwickler hier, mehr als nur ein Daumen hoch 😉
                                            👍

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            744
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            53
                                            1521
                                            430480
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo