NEWS
DWD Warnung als Telegramm
-
Falls es doch nicht klappt…
Nur eine Vermutung...
kann es vielleicht an der asyncronen Abarbeitung liegen?
Das telegram wird geschickt, aber die Werte sind noch nicht gefüllt? `
Genau das ist es wohl.
Habe die Bedingung zum Auslösen händisch geändert.
Die Variablen sind durch eine momentan anstehende Warnung bereits gefüllt.
Dann kommt auch der ganze Text per Telegramm an.
Also müsste wohl eine Verzögerung in das Script ?
Kann mir (als Vollnoob) jemand zeigen an welcher Stelle diese am besten rein sollte und wie diese auszusehen hat ? `
Vielleicht so:var Severity = "dwd.0.warning.severity"/*Warning severity*/; on(Severity, function (obj){ if (obj.newState.val !==0) { var Begin = getState("dwd.0.warning.begin"/*Warning begin*/).val; var End = getState("dwd.0.warning.end"/*Warning end*/).val; var text = getState("dwd.0.warning.text"/*Warning text*/).val; var Headline = getState("dwd.0.warning.headline"/*Warning headline*/).val; var Description = getState("dwd.0.warning.description"/*Warning description*/).val; var DWD_telegramm = "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ": " + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); //sendTo('telegram.0', "Wetterwarnungen " + ': ' + text + " gültig vom " + Begin + " bis " + End + ': ' + Description); //setState (idSayIt2, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description); }, 1000); } if (obj.newState.val === 0) { sendTo ("telegram.0", "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; //sendTo('telegram.0', "de;80;Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; } //log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description); log ( "Wetterwarnungen " + text + " gültig vom " + Begin + " bis " + End + ': ' + Description); });
-
Also ich habe mittlerweile ne Lösung für das Problem! Ich stelle später mal das Script hier rein wenn es gewünscht ist!
Gruß Johnny
-
Hallo,
hier eine mögliche Lösung
~~![](</s><URL url=)<link_text text="http://uploads.tapatalk-cdn.com/2017010 ... 482b62.jpg">http://uploads.tapatalk-cdn.com/20170107/ee6a0a17c5f0b3e1500b4ce092482b62.jpg</link_text>" />
Gruß Sven
Gesendet von iPhone mit Tapatalk~~
-
Also ich habe mittlerweile ne Lösung für das Problem! Ich stelle später mal das Script hier rein wenn es gewünscht ist!
Gruß Johnny `
Natürlich. Immer her damit! -
Hallo,
hier eine mögliche Lösung
~~![](</s><URL url=)<link_text text="http://uploads.tapatalk-cdn.com/2017010 ... 482b62.jpg">http://uploads.tapatalk-cdn.com/20170107/ee6a0a17c5f0b3e1500b4ce092482b62.jpg</link_text>" />
Gruß Sven
Gesendet von iPhone mit Tapatalk~~ `
Danke. Wieder was für Blockly gelernt. -
So, hier mein Lösungsansatz.
!
/* Script zum Übertragen der DWD-Wetterwarnungen an Telegram */ ! var idWarnung = "dwd.0.warning.description"; var idWarnung1 = "dwd.0.warning1.description"; var idWarnung2 = "dwd.0.warning2.description"; ! function check(){ var Warnung = getState(idWarnung).val; if (Warnung !== "") { var Begin = getState("dwd.0.warning.begin").val; var End = getState("dwd.0.warning.end").val; var text = getState("dwd.0.warning.text").val; var Headline = getState("dwd.0.warning.headline").val; var Description = getState("dwd.0.warning.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! function check1(){ var Warnung1 = getState(idWarnung1).val; if (Warnung1 !== "") { var Begin = getState("dwd.0.warning1.begin").val; var End = getState("dwd.0.warning1.end").val; var text = getState("dwd.0.warning1.text").val; var Headline = getState("dwd.0.warning1.headline").val; var Description = getState("dwd.0.warning1.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Wetterwarnung No.2 des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! function check2(){ var Warnung2 = getState(idWarnung2).val; if (Warnung2 !== "") { var Begin = getState("dwd.0.warning2.begin").val; var End = getState("dwd.0.warning2.end").val; var text = getState("dwd.0.warning2.text").val; var Headline = getState("dwd.0.warning2.headline").val; var Description = getState("dwd.0.warning2.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Wetterwarnung No.3 des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! on(idWarnung, function (obj){ if (obj.newState.val !== obj.oldState.val) { check(); } }); ! on(idWarnung1, function (obj){ if (obj.newState.val !== obj.oldState.val) { check1(); } }); ! on(idWarnung2, function (obj){ if (obj.newState.val !== obj.oldState.val) { check2(); } }); !
Bei mir klappt es einwandfrei.
Bis jetzt fg
Gruß
Johnny
-
So, hier mein Lösungsansatz.
!
/* Script zum Übertragen der DWD-Wetterwarnungen an Telegram */ ! var idWarnung = "dwd.0.warning.description"; var idWarnung1 = "dwd.0.warning1.description"; var idWarnung2 = "dwd.0.warning2.description"; ! function check(){ var Warnung = getState(idWarnung).val; if (Warnung !== "") { var Begin = getState("dwd.0.warning.begin").val; var End = getState("dwd.0.warning.end").val; var text = getState("dwd.0.warning.text").val; var Headline = getState("dwd.0.warning.headline").val; var Description = getState("dwd.0.warning.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! function check1(){ var Warnung1 = getState(idWarnung1).val; if (Warnung1 !== "") { var Begin = getState("dwd.0.warning1.begin").val; var End = getState("dwd.0.warning1.end").val; var text = getState("dwd.0.warning1.text").val; var Headline = getState("dwd.0.warning1.headline").val; var Description = getState("dwd.0.warning1.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Wetterwarnung No.2 des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! function check2(){ var Warnung2 = getState(idWarnung2).val; if (Warnung2 !== "") { var Begin = getState("dwd.0.warning2.begin").val; var End = getState("dwd.0.warning2.end").val; var text = getState("dwd.0.warning2.text").val; var Headline = getState("dwd.0.warning2.headline").val; var Description = getState("dwd.0.warning2.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Wetterwarnung No.3 des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! on(idWarnung, function (obj){ if (obj.newState.val !== obj.oldState.val) { check(); } }); ! on(idWarnung1, function (obj){ if (obj.newState.val !== obj.oldState.val) { check1(); } }); ! on(idWarnung2, function (obj){ if (obj.newState.val !== obj.oldState.val) { check2(); } }); !
Bei mir klappt es einwandfrei.
Bis jetzt fg
Gruß
Johnny `
Sauber! Werde ich wohl übernehmen wegen der 3 Wetter-Warnungen.Ansonsten, mit dem Blockly hat es auch funktioniert:
1146_unbenannt.jpg -
Sauber! Werde ich wohl übernehmen wegen der 3 Wetter-Warnungen. `
[Spielverderber_on]Wir hatten heute morgen 4 Wetterwarnungen, von denen die ersten drei gelb, die vierte rot war
[Spielverderber_off]
Gruß
Rainer
-
Ich erweitere Blockly grade für die 3 Warnungsstufen.
Poste es wenn es fertig ist
Gruß Sven
Gesendet von iPhone mit Tapatalk
-
[offtopic]
Ich will in Österreich auch so einen tollen gratis Wetterwarndienst.
[/offtopic]
-
Meins kann man auch ohne probleme auf eine Wetterwarnung reduzieren oder auf 10 erhöhen. Wie man es am liebsten will.
Ist im Script glaube ich selbsterklärend.
Da muss mal also keinen Mädchenmodus (Spielverderber) anwenden… Lach
-
So nach etwas Pause bin ich auch wieder da und will mich erst mal bedanken.
Habe das Skript von PrinzEisenherz1 auf 4 Meldungen erweitert, läuft bisher ohne Probleme.
Gesendet von iPhone mit Tapatalk
-
Freut mich das es klappt bei dir.
Ist zwar noch nicht ganz perfekt das Script aber nach m Urlaub setz ich mich nochmal ran.
Hab da noch ein zwei Ideen.
-
UPS
Falscher Thread… [emoji6]
-
Was man auf jeden Fall im Text ergänzen sollte ist die Nummer der Wetterwarnung beim Auslösen.
(Wenn man mehr wie eine Meldung anzeigt)
Wenn die Meldung kommt das z. B. Ne. 3 aufgehoben wurde weiß man gar nicht mehr was das war
Gesendet von iPhone mit Tapatalk
-
Danke für die Info. Ist schon eine der Änderungen die ich nach m Urlaub noch machen wollte.
Gruß Johnny
-
So nach etwas Pause bin ich auch wieder da und will mich erst mal bedanken.
Habe das Skript von PrinzEisenherz1 auf 4 Meldungen erweitert, läuft bisher ohne Probleme.
Gesendet von iPhone mit Tapatalk `
Her damit
Danke
-
Was man auf jeden Fall im Text ergänzen sollte ist die Nummer der Wetterwarnung beim Auslösen.
(Wenn man mehr wie eine Meldung anzeigt)
Wenn die Meldung kommt das z. B. Ne. 3 aufgehoben wurde weiß man gar nicht mehr was das war
Gesendet von iPhone mit Tapatalk `
Noch besser als die Nr. auszugeben, wäre es die "Headline" auszugeben: z.B.:"Wetterwarnung WARNUNG vor STURMBÖEN des Deutschen Wetterdienstes wurde aufgehoben".
-
Danke für den Tipp, mal schauen wie ich das umsetze.
Gruß Johnny
-
[EDIT] Hab das Script nochmal etwas überarbeitet - 16.01.17 11:50
So hier mal kurz ne idee bezüglich der unterschiedlichen Aufhebungen der Wetterwarnungen
/* Script zum Übertragen der DWD-Wetterwarnungen an Telegram */ var idSeverity = "dwd.0.warning.description"; var idSeverity1 = "dwd.0.warning1.description"; var idSeverity2 = "dwd.0.warning2.description"; /* States und Variablen anlegen zur Sicherung der DWD-headlines */ createState("javascript.0.DWD.headline1"); createState("javascript.0.DWD.headline2"); createState("javascript.0.DWD.headline3"); var idBackHeadline1 = "javascript.0.DWD.headline1"; var idBackHeadline2 = "javascript.0.DWD.headline2"; var idBackHeadline3 = "javascript.0.DWD.headline3"; function check(){ var Severity = getState(idSeverity).val; if (Severity !== "") { var Begin = getState("dwd.0.warning.begin").val; var End = getState("dwd.0.warning.end").val; var text = getState("dwd.0.warning.text").val; var Headline = getState("dwd.0.warning.headline").val; var Description = getState("dwd.0.warning.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); /* headline für Warning sichern */ setState(idBackHeadline1,Headline); } } function check1(){ var Severity1 = getState(idSeverity1).val; if (Severity1 !== "") { var Begin = getState("dwd.0.warning1.begin").val; var End = getState("dwd.0.warning1.end").val; var text = getState("dwd.0.warning1.text").val; var Headline = getState("dwd.0.warning1.headline").val; var Description = getState("dwd.0.warning1.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); /* headline für Warning1 sichern */ setState(idBackHeadline2,Headline); } } function check2(){ var Severity2 = getState(idSeverity2).val; if (Severity2 !== "") { var Begin = getState("dwd.0.warning2.begin").val; var End = getState("dwd.0.warning2.end").val; var text = getState("dwd.0.warning2.text").val; var Headline = getState("dwd.0.warning2.headline").val; var Description = getState("dwd.0.warning2.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); /* headline für Warning2 sichern */ setState(idBackHeadline3,Headline); } } on(idSeverity, function (obj){ if (obj.newState.val !== obj.oldState.val) { if (obj.newState.val !== "") { check(); }else { sendTo ("telegram.0", "Alle Wetterwarnungen des DWD wurden aufgehoben") ; } } }); on(idSeverity1, function (obj){ if (obj.newState.val !== obj.oldState.val) { if (obj.newState.val !== "") { check1(); } else { var Headlineclear1 = getState(idBackHeadline2).val; sendTo ("telegram.0", "Die Wetterwarnung " +"'"+ Headlineclear1 + "'" + " des DWD wurde aufgehoben") ; } } }); on(idSeverity2, function (obj){ if (obj.newState.val !== obj.oldState.val) { if (obj.newState.val !== "") { check2(); } else { var Headlineclear2 = getState(idBackHeadline3).val; sendTo ("telegram.0", "Die Wetterwarnung " +"'"+ Headlineclear2 + "'" + " des DWD wurde aufgehoben") ; } } }); /* Auslösen bei Scriptstart - Wenn nicht benötigt einfach löschen oder auskommentieren */ check(); check1(); check2();
Jetzt wird bei mehr als einer Warnung immer zusätzlich beim aufheben der Warnung immer die headline der Warnung mit angegeben.
z.B.
Wetterwarnung 'Amtliche WARNUNG vor GLÄTTE' des Deutschen Wetterdienstes wurde aufgehoben
Gruß
Johnny
[EDIT] Aktuelle Version mit Sprachausgabe hier http://forum.iobroker.net/viewtopic.php … =40#p52017