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@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki Developer @Boronsbruder last edited by

      @boronsbruder
      Nach dem ich deinen Text im Detail gelesen habe, natürlich hab ich vorher verzweifelt im Skript nach einer Begründung gesucht ist mir eine mögliche Fehlerquelle aufgefallen.

      Mein "dwd_warnings_skript" setzt eine Warnung -> DWD_UWZ_NINA triggert mit "nope"
      

      setzte folgende Warnung in:

      dwd.0.warning.object
      
      {
          "regionName": "Test",
          "start": 1584050400000,
          "end": 1984090000000,
          "type": 5,
          "state": "Rheinland-Pfalz",
          "level": 2,
          "stateShort": "RP",
          "description": "Es tritt oberhalb 100 m leichter Schüttelfrost um +1 °C auf.",
          "event": "FROST",
          "headline": "Amtliche nicht WARNUNG vor SCHÜTTELFROST",
          "instruction": "",
          "altitudeStart": 100,
          "altitudeEnd": null
      }
      
      Boronsbruder 1 Reply Last reply Reply Quote 0
      • Boronsbruder
        Boronsbruder @ticaki last edited by

        @ticaki

        2021-07-24 13:13:41.775 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: onchange DWD id:dwd.0.warning.object
        2021-07-24 13:13:41.776 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID:dwd.0.warning.object - nope
        

        und mein Skript gibt die Warnung aus:

        2021-07-24 13:13:41.774 - info: javascript.0 (662) script.js.common.dwd.dwd_warnings_overview: javascript.0.dwd.html.0 exists -> set to : Amtliche nicht WARNUNG vor SCHÜTTELFROST: 12.3.2020 - 23:00 Uhr bis 15.11.2032 - 1:06 Uhr
        
        T 1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer @Boronsbruder last edited by

          @boronsbruder

          Zeig mir mal das Skript das die Daten setzt.

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

            @ticaki
            Also falls du meinst, dass das Skript irgendwo reinpfuscht, wenn ich mein Skript deaktiviere passiert auch nichts nur "nope"

            Aber gerne:

            function addZero(i) {
            console.log('i_alt: ' + i);  
              
              if (i < 10) {
                i = "0" + i.toString();
              }
              console.log('i_neu: ' + i);
              return i;
            }
            
            $('state[state.id=dwd.0.*][role=weather.json]').on(function (obj) {
                console.log ('ID =' + obj.id);
                
                if (! obj.state.val) return;
                
                var data =JSON.parse(obj.state.val);
            
                if(data.headline)
                {
                    var html;
                    var Start = new Array();
            
                    Start[0] = new Date(parseInt(data.start));
                    console.log ('Monat: ' + Start[0].getMonth());
                    Start[1] = Start[0].getDate()+ '.' + (Start[0].getMonth()+1) + '.'+ Start[0].getFullYear();
                    Start[2] = Start[0].getHours() + ':' + addZero(Start[0].getMinutes()) + " Uhr";
                
                    var End = new Array();
                    End[0] = new Date(parseInt(data.end));
                    End[1] = End[0].getDate()+ '.' + (End[0].getMonth()+1) + '.'+ End[0].getFullYear();
                    End[2] = End[0].getHours() + ':' + addZero(End[0].getMinutes()) + " Uhr";
            
                    html = '<span class="dwd_warn_' + (data.level-1) + '">' + data.headline + ':</span> ' + Start[1] + ' - ' + Start[2] +  ' bis ' + End[1] + ' - ' + End[2];
                    console.log(html);
                }
             
               else html='';
            
                var MsgNumber = obj.id.substr(13,1);
            
                if (MsgNumber == ".") MsgNumber ="0";
            
                
                if(!$('javascript.0.dwd.html.'+MsgNumber).length){
               
                    createState('javascript.0.dwd.html.'+ MsgNumber, {name: 'Html Text Dwd Warnung', }, function () {
                        
                        setState('javascript.0.dwd.html.'+ MsgNumber, html)   ;
                        log('javascript.0.dwd.html.' + MsgNumber + ' created and set to : ' + html);
                        
                    });
                
                }
                
                else
                {
                    setState('javascript.0.dwd.html.'+ MsgNumber, html);
                    log('javascript.0.dwd.html.' + MsgNumber + ' exists -> set to : ' + html);
                }
            
                if (getState('javascript.0.dwd.merge_active').val == false) 
                {
                    setState('javascript.0.dwd.merge_active',true);
                }
            });
            
            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer @Boronsbruder last edited by

              @boronsbruder
              Das hab ich nicht gemeint, versuche mal folgendes Skript aus:

              var test = '{ "regionName": "Test", "start": 1584050400000, "end": 1984090000000,"type": 5,"state": "Rheinland-Pfalz", "level": 2,"stateShort": "RP", "description": "Es tritt oberhalb 100 m leichter Schüttelfrost um +1 °C auf.","event": "FROST","headline": "Amtliche nicht WARNUNG vor SCHÜTTELFROST","instruction": "","altitudeStart": 100,"altitudeEnd": null}';
              test = JSON.parse(test);
              setState('dwd.0.warning.object', test, true);
              
              Boronsbruder 1 Reply Last reply Reply Quote 0
              • Boronsbruder
                Boronsbruder @ticaki last edited by Boronsbruder

                @ticaki
                Achso, hab es einfach direkt im Iobroker gesetzt 🤦‍♂️

                2021-07-24 13:35:51.292 - info: javascript.0 (662) script.js.common.test_warnung: registered 0 subscriptions and 0 schedules
                2021-07-24 13:35:51.336 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: onchange DWD id:dwd.0.warning.object
                2021-07-24 13:35:51.336 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID + JSON:dwd.0.warning.object - {"regionName":"Test","start":1584050400000,"end":1984090000000,"type":5,"state":"Rheinland-Pfalz","level":2,"stateShort":"RP","description":"Es tritt oberhalb 100 m leichter Schüttelfrost um +1 °C auf.","event":"FROST","headline":"Amtliche nicht WARNUNG vor SCHÜTTELFROST","instruction":"","altitudeStart":100,"altitudeEnd":null}
                2021-07-24 13:35:51.337 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: result: {"mode":1,"description":"Es tritt oberhalb 100 m leichter Schüttelfrost um +1 °C auf.","headline":"Amtliche nicht WARNUNG vor SCHÜTTELFROST","start":1584050400000,"end":1984090000000,"instruction":"","type":5,"level":2,"areaID":"Test","web":"","webname":"","picture":"🌡","color":"#d7d700","id":"","pending":0,"hash":0,"repeatCounter":0}
                2021-07-24 13:35:51.337 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: Add DWD warning to database. headline: Amtliche nicht WARNUNG vor SCHÜTTELFROST
                2021-07-24 13:35:51.359 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: Datenbank wurde geändert - checkWarningsMain():true id:dwd.0.warning.object Mode:1
                2021-07-24 13:35:51.359 - info: javascript.0 (662) script.js.common.dwd.dwd_warnings_overview: ID =dwd.0.warning.object
                2021-07-24 13:35:51.360 - error: javascript.0 (662) Error in callback: SyntaxError: Unexpected token o in JSON at position 1
                2021-07-24 13:35:51.362 - error: javascript.0 (662) at JSON.parse ()
                2021-07-24 13:35:51.362 - error: javascript.0 (662) at Object. (script.js.common.dwd.dwd_warnings_overview:16:20)
                2021-07-24 13:35:51.362 - error: javascript.0 (662) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1075:38)
                2021-07-24 13:35:51.362 - error: javascript.0 (662) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:502:29)
                2021-07-24 13:35:51.362 - error: javascript.0 (662) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5555:41)
                2021-07-24 13:35:51.363 - error: javascript.0 (662) at processImmediate (internal/timers.js:461:21)
                

                Das funktioniert...

                Da bekomme ich auch die Pushnachricht

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

                  @ticaki
                  Also...
                  Ich hab jetzt mal im DWD-Adapter umgestellt auf "Tuttlingen", da da aktuelle Gewitterwarnungen sind.
                  Resultat
                  in dem DP "object" ist kein object gespeichert sondern nur der JSON

                  {"regionName":"Kreis Tuttlingen","end":1627128000000,"start":1627123800000,"type":0,"state":"Baden-Württemberg","level":3,"description":"Es treten Gewitter auf. Dabei gibt es Sturmböen mit Geschwindigkeiten bis 70 km/h (20m/s, 38kn, Bft 8) sowie Starkregen mit Niederschlagsmengen um 25 l/m² pro Stunde und Hagel.","event":"STARKES GEWITTER","headline":"Amtliche WARNUNG vor STARKEM GEWITTER","instruction":"ACHTUNG! Hinweis auf mögliche Gefahren: Örtlich kann es Blitzschlag geben. Bei Blitzschlag besteht Lebensgefahr! Vereinzelt können beispielsweise Bäume entwurzelt und Dächer beschädigt werden. Achten Sie besonders auf herabstürzende Äste, Dachziegel oder Gegenstände. Während des Platzregens sind kurzzeitig Verkehrsbehinderungen möglich.","stateShort":"BW","altitudeStart":null,"altitudeEnd":null}
                  

                  object.jpg

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

                    @boronsbruder
                    Und wenn du das Object abfragst ist es ein Json-Objekt. Wenn du hingegen als Experte einen String da rein schreibst, bleibt es ein String. 🙂

                    Wenn du auf Datenpunkt bearbeitet gehst, steht dort auch das es ein Objekt-Datenpunkt ist.

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

                      @ticaki
                      jo, aber der DWD-Adapter schreibt auch kein Object, sondern einen String. siehe Screenshot!
                      object2.jpg
                      Der hier ist nach Setzen mit deinem Skript!

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

                        @boronsbruder
                        ? Wie soll ein Objekt als Datenpunkt dargestellt werden. Ich würde ein Json für die Darstellung in einer Weboberfläche als String anzeigen.

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

                          @ticaki
                          So setzt der DWD-Adapter: -> "NOPE"
                          object.jpg
                          So setzt dein Skript:
                          object2.jpg
                          Also das Test-Skript von dir...

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

                            @boronsbruder
                            Wenn man das über die Adminoberfläche setzt mit JSON als Objekttyp wird es auch so angezeigt wie der DWD Adapter es setzt. Ist doch nicht wichtig. Es geht und wenn die fertig sind mir ihren ganzen Adapteranpassungen schaue ich mir das nochmal an.

                            Oder geht es noch immer nicht? Mit echten Warnungen.

                            Boronsbruder 2 Replies Last reply Reply Quote 0
                            • Boronsbruder
                              Boronsbruder @ticaki last edited by

                              @ticaki
                              ne, geht mit echten nicht

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

                                @ticaki

                                2021-07-24 15:18:22.787 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: onchange NINA nina.0.09775.warnung02.rawJson
                                2021-07-24 15:18:22.787 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID + JSON:nina.0.09775.warnung02.rawJson - "{\"identifier\":\"41e17e9ca1620dea9e3ba91ed2e7966ae5953439da2179d5ef0a55356b1ec7de\",\"sender\":\"opendata@dwd.de\",\"sent\":\"2021-07-24T15:15:05+02:00\",\"status\":\"Actual\",\"msgType\":\"Alert\",\"source\":\"PVW\",\"scope\":\"Public\",\"code\":[\"1.0\"],\"info\":[{\"language\":\"de-DE\",\"category\":[\"Met\"],\"event\":\"STARKES GEWITTER\",\"responseType\":[\"Prepare\"],\"urgency\":\"Immediate\",\"severity\":\"Moderate\",\"certainty\":\"Observed\",\"eventCode\":[{\"valueName\":\"PROFILE_VERSION\",\"value\":\"2.1\"},{\"valueName\":\"LICENSE\",\"value\":\"Geobasisdaten: Copyright Bundesamt für Kartographie und Geodäsie, Frankfurt am Main, 2017\"},{\"valueName\":\"II\",\"value\":\"36\"},{\"valueName\":\"GROUP\",\"value\":\"THUNDERSTORM\"},{\"valueName\":\"GROUP\",\"value\":\"WIND\"},{\"valueName\":\"GROUP\",\"value\":\"RAIN\"},{\"valueName\":\"AREA_COLOR\",\"value\":\"251 140 0\"}],\"effective\":\"2021-07-24T14:55:00+02:00\",\"onset\":\"2021-07-24T14:55:00+02:00\",\"expires\":\"2021-07-24T16:00:00+02:00\",\"senderName\":\"Deutscher Wetterdienst\",\"headline\":\"Amtliche WARNUNG vor STARKEM GEWITTER\",\"description\":\"Von Südwesten ziehen Gewitter auf. Dabei gibt es Sturmböen mit Geschwindigkeiten bis 70 km/h (20m/s, 38kn, Bft 8) sowie Starkregen mit Niederschlagsmengen bis 20 l/m² pro Stunde.\",\"instruction\":\"ACHTUNG! Hinweis auf mögliche Gefahren: Örtlich kann es Blitzschlag geben. Bei Blitzschlag besteht Lebensgefahr! Vereinzelt können beispielsweise Bäume entwurzelt und Dächer beschädigt werden. Achten Sie besonders auf herabstürzende Äste, Dachziegel oder Gegenstände. Während des Platzregens sind kurzzeitig Verkehrsbehinderungen möglich.\",\"web\":\"https://www.wettergefahren.de\",\"contact\":\"Deutscher Wetterdienst\",\"parameter\":[{\"valueName\":\"Böen\",\"value\":\"<70 [km/h]\"},{\"valueName\":\"Niederschlag\",\"value\":\"<20 [l/m² in 1h]\"},{\"valueName\":\"Gewitteraufzugsrichtung\",\"value\":\"south-west\"}],\"area\":[{\"areaDesc\":\"Kreis Dillingen a.d. Donau\",\"geocode\":[{\"valueName\":\"Dillingen a.d. Donau\",\"value\":\"097730000000\"}],\"altitude\":0,\"ceiling\":9842.5197},{\"areaDesc\":\"Kreis Neu-Ulm\",\"geocode\":[{\"valueName\":\"Neu-Ulm\",\"value\":\"097750000000\"}],\"altitude\":0,\"ceiling\":9842.5197},{\"areaDesc\":\"Kreis Günzburg\",\"geocode\":[{\"valueName\":\"Günzburg\",\"value\":\"097740000000\"}],\"altitude\":0,\"ceiling\":9842.5197}]}]}"
                                

                                Auch NINA macht nicht mit... (Meldung ist für Neu-Ulm und Kreis Neu-Ulm)

                                var uGemeinde = 'Neu-Ulm'; // hier steht zum Beispiel, Hamburg, Unterdorf
                                var uLandkreis = 'Kreis Neu-Ulm'; // hier Kreis Bitburg, Landkreis Fürth
                                

                                Ich hab jetzt schon

                                • das Skript gelöscht und von GitHub neureinkopiert und ohne Copy und Paste neu-konfiguriert...
                                • den DWD-Adapter neuinstalliert...
                                1 Reply Last reply Reply Quote 0
                                • Boronsbruder
                                  Boronsbruder last edited by

                                  Ich wohn einfach am falschen Ort 🤣

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

                                    @boronsbruder
                                    Benutzt du latest?

                                    Versuche mal folgendes:

                                    EDIT: Ich gehe hier davon aus das es daran liegt das die Daten als string und nicht als objekt ankommen.

                                    Füge nach Zeile 1610 und vor Zeile 1611 folgenden Code ein

                                        if ( value && typeof value === 'string' ) {
                                            value = JSON.parse(value);
                                        }
                                    
                                    

                                    nachher sollte es so aussehen:

                                        // letzter Teil ist unschön, ändern wenn verstanden
                                        if ( value && typeof value === 'string' ) {
                                            value = JSON.parse(value);
                                        }
                                        if (!value || value === undefined || value == {} || value.length <= 4 || (mode == DWD && value.description === undefined)) {
                                            myLog("addDatabaseData() ID:" + id + ' - ' + 'nope');
                                            return;
                                        }
                                    
                                    

                                    Edit:

                                    Schalte mal Debug auf true, wenn das oben nicht hilft. Bei mir geht es übrigens.

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

                                      @ticaki
                                      Nein, nur stable!
                                      Das war's!
                                      pushover.jpg
                                      Vielen Dank!

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

                                        //Version 0.97.19.2

                                        • Kompatibilität zur Stableversion

                                        Sind nur die Änderungen die oben schon als Code gepostet wurden.

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

                                          Ich leider nochmal.

                                          Nach meinem letzten Post habe ich auf das damals aktuelle Script gewechselt welches einige Zeit lief.

                                          Jetzt sehe ich heute diese Meldungen im Log:

                                          javascript.0
                                          	2021-07-29 16:00:23.237	error	at processTimers (internal/timers.js:500:7)
                                          javascript.0
                                          	2021-07-29 16:00:23.237	error	at listOnTimeout (internal/timers.js:557:17)
                                          javascript.0
                                          	2021-07-29 16:00:23.237	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2117:34)
                                          javascript.0
                                          	2021-07-29 16:00:23.237	error	at Object.checkWarningsMain (script.js.common.Ansagen.DWD_UWZ_NINA:1174:17)
                                          javascript.0
                                          	2021-07-29 16:00:23.237	error	at sendMessage (script.js.common.Ansagen.DWD_UWZ_NINA:1273:72)
                                          javascript.0
                                          	2021-07-29 16:00:23.237	error	Error in callback: ReferenceError: uTelegramUseStdUser is not defined
                                          javascript.0
                                          	2021-07-29 15:50:22.310	error	at processTimers (internal/timers.js:500:7)
                                          javascript.0
                                          	2021-07-29 15:50:22.310	error	at listOnTimeout (internal/timers.js:557:17)
                                          javascript.0
                                          	2021-07-29 15:50:22.310	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2117:34)
                                          javascript.0
                                          	2021-07-29 15:50:22.310	error	at Object.checkWarningsMain (script.js.common.Ansagen.DWD_UWZ_NINA:1174:17)
                                          javascript.0
                                          	2021-07-29 15:50:22.310	error	at sendMessage (script.js.common.Ansagen.DWD_UWZ_NINA:1273:72)
                                          javascript.0
                                          	2021-07-29 15:50:22.309	error	Error in callback: ReferenceError: uTelegramUseStdUser is not defined
                                          javascript.0
                                          	2021-07-29 15:40:22.532	error	at processTimers (internal/timers.js:500:7)
                                          javascript.0
                                          	2021-07-29 15:40:22.532	error	at listOnTimeout (internal/timers.js:557:17)
                                          javascript.0
                                          	2021-07-29 15:40:22.532	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2117:34)
                                          javascript.0
                                          	2021-07-29 15:40:22.532	error	at Object.checkWarningsMain (script.js.common.Ansagen.DWD_UWZ_NINA:1174:17)
                                          javascript.0
                                          	2021-07-29 15:40:22.531	error	at sendMessage (script.js.common.Ansagen.DWD_UWZ_NINA:1273:72)
                                          javascript.0
                                          	2021-07-29 15:40:22.531	error	Error in callback: ReferenceError: uTelegramUseStdUser is not defined
                                          

                                          Jemand ne Idee was da jetzt falsch läuft?

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

                                            @wendy2702
                                            Ja ich 🙂

                                            Da fehlt eine Konfigurationsvariable. In diesem Fall ist es(Zeile 199):

                                            var uTelegramUseStdUser         = false; // Verwende immer auch die im Adapter gespeicherten Benutzer.
                                            

                                            Einfach hinzufügen und wenn weitere Meldung mit XYZ is not defined kommen, fehlen noch weitere.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            531
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            53
                                            1521
                                            468051
                                            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