NEWS
[Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten
-
@ticaki
Ich hab leider die DWD-Adapterdaten nicht mit geschnitten.
in dwd.0.warning.headline muss "Amtliche WARNUNG vor STARKEM GEWITTER" gestanden haben (zieht mein Skript da raus).Aktuell ist aber aber auch eine UWZ-Warnung drin:
Auch die wird nicht angezeigt.
2021-07-24 12:13:26.031 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID + JSON:javascript.0.UWZ.UWZDE89278.warning.0.object - "{\"center\":\"UWZ\",\"areaID\":\"UWZDE87675\",\"dtgEnd\":1627185600,\"areaType\":\"UWZCODE\",\"dtgStart\":1627138800,\"payload\":{\"translationsLongText\":{\"DE\":\"Mit einer Konvergenzlinie von Tief DIRK wird die Atmosphäre zunehmennd instabil und somit steigt Samstagnachmittag und -abend das Risiko für kräftige Gewitter mit Starkregen, Hagel und Sturmböen deutlich an. Es besteht die Gefahr von Starkregen, Hagel und Sturmböen. Sonntagmorgen lassen die Gewitter nach.\"},\"id\":\"16270656115316.1\",\"creation\":1627066920000,\"uwzLevel\":8,\"translationsShortText\":{\"DE\":\"Ab Samstagabend kräftige Gewitter mit Starkregen Hagel und Sturmböen möglich.\"},\"fileName\":\"meteogroup_warn_16270656115316_20210723190202_1627185600_1627066995.xml\",\"levelName\":\"alert_forewarn_red\",\"shortText\":\"\",\"longText\":\"From Saturday afternoon and evening the risk of thunderstorms with heavy rain, hail and violent gusts rises significantly. The risk of heavy rain, hail and violent gusts arises, thereby. Sunday morning thunderstorms decrease.\",\"altMin\":-10,\"altMax\":9000},\"severity\":8,\"type\":7}" 2021-07-24 12:13:26.032 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID + JSON:javascript.0.UWZ.UWZDE89278.warning.1.object - "{\"center\":\"UWZ\",\"areaID\":\"UWZDE48455\",\"dtgEnd\":1627164000,\"areaType\":\"UWZCODE\",\"dtgStart\":1627128000,\"payload\":{\"translationsLongText\":{\"DE\":\"Ab Samstagnachmittag ist das Risiko für Gewitter mit Starkregen erhöht, dabei ziehen von Südwest her die Gewitter auf. Samstagnacht lässt die Schauer- und Gewitterneigung wieder nach.\"},\"id\":\"16270344986489.4\",\"creation\":1627034655000,\"uwzLevel\":7,\"translationsShortText\":{\"DE\":\"Ab Samstagnachmittag erhöhtes Risiko für Gewitter mit Starkregen von Südwesten her.\"},\"fileName\":\"meteogroup_warn_16270344986489_20210723100336_1627164000_1627034655.xml\",\"levelName\":\"alert_forewarn_orange\",\"shortText\":\"\",\"longText\":\"From Saturday afternoon the risk of thunderstorms with heavy rain rises significantly. A thunderstorm from southwest approaches. Saturday night the risk of thunderstorms decreases.\",\"altMin\":-10,\"altMax\":9000},\"severity\":7,\"type\":7}" 2021-07-24 12:13:26.032 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID:javascript.0.UWZ.UWZDE89278.warning.2.object - nope 2021-07-24 12:13:26.032 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID:javascript.0.UWZ.UWZDE89278.warning.3.object - nope 2021-07-24 12:13:26.032 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID:javascript.0.UWZ.UWZDE89278.warning.4.object - nope 2021-07-24 12:13:26.032 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID:javascript.0.UWZ.UWZDE89278.warning.5.object - nope 2021-07-24 12:13:26.032 - info: javascript.0 (662) script.js.common.Warnung.Warn_DWD_UWZ_NINA: addDatabaseData() ID:javascript.0.UWZ.UWZDE89278.warning.6.object - nope
EDIT:
UWZ hab ich jetzt verstanden... Das UWZ-Skript hat 2 Meldungen rausgesucht, die gar nicht für "UWZDE89278" sind.... -
@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 }
-
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
-
Zeig mir mal das Skript das die Daten setzt.
-
@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); } });
-
@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);
-
@ticaki
Achso, hab es einfach direkt im Iobroker gesetzt2021-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
-
@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}
-
@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.
-
@ticaki
jo, aber der DWD-Adapter schreibt auch kein Object, sondern einen String. siehe Screenshot!
Der hier ist nach Setzen mit deinem Skript! -
@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. -
@ticaki
So setzt der DWD-Adapter: -> "NOPE"
So setzt dein Skript:
Also das Test-Skript von dir... -
@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.
-
@ticaki
ne, geht mit echten nicht -
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...
-
Ich wohn einfach am falschen Ort
-
@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.
-
@ticaki
Nein, nur stable!
Das war's!
Vielen Dank! -
//Version 0.97.19.2
- Kompatibilität zur Stableversion
Sind nur die Änderungen die oben schon als Code gepostet wurden.
-
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?