FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Tutti_Bomovski am 10 März 2019, 11:28:38

Titel: Wetterwarnung für DWD
Beitrag von: Tutti_Bomovski am 10 März 2019, 11:28:38
Hallo Zusammen,
ich habe mein Modul UWZ (wird ja wohl leider nicht mehr aktualisiert) auf DWD_OpenData umgestellt.
Soweit so gut... Die Warnungen und die Vorhersage kommt auch ganz normal.
Jetzt möchte ich aber eine Meldung per Telegram erhalten wenn sich eine Wetterwarnung einstellt.
Aktuell fange ich per DOIF den a_count ab und sende dann eine Nachricht. Klappt auch ganz gut...
Allerdings habe ich zwei Probleme:
1. Wenn es 2 Warnungen gibt, dann bekomme ich nur die Meldung für die 2. Warnung weil ich a_count eq = "2" abfange. Die Nachricht für die 1. Warnung erhalte ich dann gar nicht.
2. Wenn die Warnung 1, 2 oder 3 aktualisiert wird, dann bekomme ich gar keine Nachricht.

Ich bin aktuell etwas ratlos, wie ich dies Nachricht bzw. das DOIF, wenn es das richtige Modul dafür ist, abfangen soll.

Hat hier jemand eine Idee?

Im UWZ hat dies auch gut geklappt mit der Telegram Nachricht.

Danke und Gruß
Tutti
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Dia81 am 10 März 2019, 12:00:15
Zitat von: Tutti_Bomovski am 10 März 2019, 11:28:38
Hallo Zusammen,
ich habe mein Modul UWZ (wird ja wohl leider nicht mehr aktualisiert) auf DWD_OpenData umgestellt.
Soweit so gut... Die Warnungen und die Vorhersage kommt auch ganz normal.
Jetzt möchte ich aber eine Meldung per Telegram erhalten wenn sich eine Wetterwarnung einstellt.
Aktuell fange ich per DOIF den a_count ab und sende dann eine Nachricht. Klappt auch ganz gut...
Allerdings habe ich zwei Probleme:
1. Wenn es 2 Warnungen gibt, dann bekomme ich nur die Meldung für die 2. Warnung weil ich a_count eq = "2" abfange. Die Nachricht für die 1. Warnung erhalte ich dann gar nicht.
2. Wenn die Warnung 1, 2 oder 3 aktualisiert wird, dann bekomme ich gar keine Nachricht.

Ich bin aktuell etwas ratlos, wie ich dies Nachricht bzw. das DOIF, wenn es das richtige Modul dafür ist, abfangen soll.

Hat hier jemand eine Idee?

Im UWZ hat dies auch gut geklappt mit der Telegram Nachricht.

Danke und Gruß
Tutti

Witzig, genau das Problem habe ich auch. Bisher helfe ich mir nur mit dem Umweg jeden Count abzufragen. Dann bekomme ich immer eine Meldung wenn sich am "Count" was ändert nicht jedoch wenn der "Count" gleich bleibt aber die stärke sich ändert. Habe dazu einfach ein DOIF was bei count 1 die Meldung 1 rausschickt, ein DOIF was bei count 2 die Melsung 1+2 rausschickt, etc...
Würde mich auch freuen wenn hier jmd eine Idee hat. Da dies ein allgemeines "Problem" ist hab ich es auch mal bei Anfängerfragen reingestellt
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Tutti_Bomovski am 10 März 2019, 12:03:31
Zitat von: Dia81 am 10 März 2019, 12:00:15
Witzig, genau das Problem habe ich auch. Bisher helfe ich mir nur mit dem Umweg jeden Count abzufragen. Dann bekomme ich immer eine Meldung wenn sich am "Count" was ändert nicht jedoch wenn der "Count" gleich bleibt aber die stärke sich ändert. Habe dazu einfach ein DOIF was bei count 1 die Meldung 1 rausschickt, ein DOIF was bei count 2 die Melsung 1+2 rausschickt, etc...
Würde mich auch freuen wenn hier jmd eine Idee hat. Da dies ein allgemeines "Problem" ist hab ich es auch mal bei Anfängerfragen reingestellt

Den a_count fange ich im DOIF auch ab. Wenn es beispielsweise 2 Warnungen gibt bekomme ich aber nur Warnung 2. Wenn sich an den Warnungen was ändert, dann erhalte ich keine Mitteilung.

Vielleicht können wir ja hier mal unsere Daten abgleichen? Gerne auch per PN. Schickst du mir mal deinen Code für das DOIF?
Vielleicht finden wir ja dann einen Weg die Lösung zu finden?
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Dia81 am 10 März 2019, 12:17:51
Zitat von: Tutti_Bomovski am 10 März 2019, 12:03:31
Den a_count fange ich im DOIF auch ab. Wenn es beispielsweise 2 Warnungen gibt bekomme ich aber nur Warnung 2. Wenn sich an den Warnungen was ändert, dann erhalte ich keine Mitteilung.

Vielleicht können wir ja hier mal unsere Daten abgleichen? Gerne auch per PN. Schickst du mir mal deinen Code für das DOIF?
Vielleicht finden wir ja dann einen Weg die Lösung zu finden?

Hab ich die per PN geschickt :) Wenn wir ein Schritt weiter sind im anderen Thread können wir ja die hier für "alle" festhalten
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Tutti_Bomovski am 10 März 2019, 12:19:04
Zitat von: Dia81 am 10 März 2019, 12:17:51
Hab ich die per PN geschickt :) Wenn wir ein Schritt weiter sind im anderen Thread können wir ja die hier für "alle" festhalten

Danke, so machen wir das!!!
Titel: Antw:Wetterwarnung für DWD
Beitrag von: jensb am 10 März 2019, 14:32:53
Die Wetterwarnungen des DWD beruhen auf dem CAP Protokoll (https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_dwd_profile_de_pdf.pdf). Das bietet alle Informationen, die man braucht, um differenzierte Meldungen zu generieren, z.B. nur bei Änderungen erneut zu melden, usw.

Diese Informationen werden jedoch aktuell verworfen, wenn das DWD_OpenData-Modul die Dekodierung hinter sich hat und die Readings generiert, weil sie (bisher) nicht benötigt werden.

Was ich damit sagen will: Wenn man eine optimale Lösung sucht, sollte man im DWD_OpenData-Modul mit der Nachrichtengenerierung ansetzen. Ob eine Erweiterung des Moduls den Aufwand lohnt, kann ich (noch) nicht beurteilen. Es wäre aber z.B. einfach möglich, auch für die die DWD-Alert-ID ein Reading zu generieren, damit man Warnungen eindeutig unterscheiden kann.

Das Reading a_count zu beobachten, ist aktuell die einfachste Lösung, die man von außerhalb des Moduls zur Verfügung hat.

Grüße,
Jens
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Dia81 am 10 März 2019, 16:39:30
Zitat von: jensb am 10 März 2019, 14:32:53
Die Wetterwarnungen des DWD beruhen auf dem CAP Protokoll (https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_dwd_profile_de_pdf.pdf). Das bietet alle Informationen, die man braucht, um differenzierte Meldungen zu generieren, z.B. nur bei Änderungen erneut zu melden, usw.

Diese Informationen werden jedoch aktuell verworfen, wenn das DWD_OpenData-Modul die Dekodierung hinter sich hat und die Readings generiert, weil sie (bisher) nicht benötigt werden.

Was ich damit sagen will: Wenn man eine optimale Lösung sucht, sollte man im DWD_OpenData-Modul mit der Nachrichtengenerierung ansetzen. Ob eine Erweiterung des Moduls den Aufwand lohnt, kann ich (noch) nicht beurteilen. Es wäre aber z.B. einfach möglich, auch für die die DWD-Alert-ID ein Reading zu generieren, damit man Warnungen eindeutig unterscheiden kann.

Das Reading a_count zu beobachten, ist aktuell die einfachste Lösung, die man von außerhalb des Moduls zur Verfügung hat.

Grüße,
Jens
Hallo Jens,

verstehe ich vom Gundsatz her. Aber glaube das "Problem" ist ja gar nicht unbedingt auf das Wettermodul gemünzt. Denke das Hauptproblem ist einfach nur ein "geändertes" Reading auszulesen, wie es ja auch bei jedem anderen Device geschieht. Sprich wenn Reading1 auf 1 und eine Änderung in Reading2 welcher Art auch immer stattfindet, dann sende die nachricht. Würde das nicht irgendwie mit event-on-change-reading gehen? Aber genau das krieg ich nicht hingesbastelt mit. Vielleicht verstehe ich aber auch nur was falsch :(
Titel: Antw:Wetterwarnung für DWD
Beitrag von: jensb am 10 März 2019, 17:55:05
Alle a_* Readings außer a_count, a_state, a_time werden bei der Aktualierung alle 15 Minuten gelöscht und neu angelegt - sie ändern sich also nie. Hintergrund ist die für die Readings erforderliche Indizierung der Wettermeldungen ab 0. Bei jedem Update vom DWD können sich aber Anzahl und Reihenfolge ändern. Deshalb habe ich die DWD-Alert-ID erwähnt - die würde sich nicht ändern (man könnte sie durch suchen wiederfinden). Außerdem kommt es noch darauf an, was am DWD_OpenData-Modul für readingFn-Attribute eingestellt wurden. Im Zweifel mit dem FHEM-Ereignismonitor überprüfen.

Grüße,
Jens
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Tutti_Bomovski am 15 März 2019, 11:30:50
hmmm, irgendwie klappt es nicht so richtig.

Wie bereits erwähnt, habe ich mehrere DOIFs.

([DWD:a_count] eq "1") (set TeleBot send @#"Empfänger"

\n<b>{(ReadingsVal("DWD","a_0_eventDesc",0))}</b>\n
\n{(ReadingsVal("DWD","a_0_description",0))}\n
\n{(ReadingsVal("DWD","a_0_instruction",0))}\n
\nvon: {(ReadingsVal("DWD","a_0_onset",0))}
\nbis: {(ReadingsVal("DWD","a_0_expires",0))})


Wenn sich nun a_count ändert, also aus 0, 1, 2, 3 oder 4 ist, dann gibt es jeweils ein DOIF dafür damit ich Meldungen 0-4 gebündelt erhalte.

Jetzt bekomme ich aber kein Update meiner Wetterwarnung.
DWD_OpenData aktualisiert ja selbständig alle 15 Minuten die Daten.
Wie stelle ich denn mein DOIF ein, dass bei einer Änderung der entsprechenden Readings dann auch eine neue Telegram Nachricht erfolgt?

Im DOIF habe ich schon DO_Always und event-on-update-reading auf a_count eingestellt.
Im DWD Modul steht event-on-update-reading auf state,fc_state,a_state,a_count.

Danke für eure Hilfe.
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Tutti_Bomovski am 15 März 2019, 11:49:43
so und jetzt bekomme ich aus irgendeinem Grund alle 15 Minuten das Update aus FHEM.
Obwohl sich nichts an den Readings geändert hat.

Ich hoffe, dass es eine Erklärung und Lösung für mein Problem gibt. ;)
Titel: Antw:Wetterwarnung für DWD
Beitrag von: sinus61 am 15 März 2019, 17:51:30
Mit event-on-update gibt es ja auch alle 15 Minuten ein Event, da solltest du event-on-change nehmen. Wenn es aber relativ viele Meldungen am Tag gibt, wie z.b. hier im Moment mit den Sturmwarnungen ist das aber alles nicht mehr so zuverlässig nur nach a_count zu gehen.
Titel: Antw:Wetterwarnung für DWD
Beitrag von: sinus61 am 16 März 2019, 18:00:19
Mal so als Beispiel:

event-on-change-reading a_count

Ein notify

DWD_Wetter.a_count:.[0-9] {
if($EVTPART1 >= 1) {
DWD_Alert("DWD_Wetter");
}
}


und in der 99_myUtils.pm


sub DWD_Alert($)
{
my ($name) = @_;
my $count = ReadingsVal( $name, "a_count", 0 );
my $onset = ""; my $expires = ""; my $description = ""; my $eventDesc = ""; my $txt = "";
for (my $i=0;$i<$count;$i++){
$onset = ReadingsVal( $name, "a_".$i."_onset", 0 );
$expires = ReadingsVal( $name, "a_".$i."_expires", 0 );
$description = ReadingsVal( $name, "a_".$i."_description", 0 );
$eventDesc = ReadingsVal( $name, "a_".$i."_eventDesc", 0 );
$txt .= "⚠️ <b>$eventDesc</b>\n$onset\n$expires\n$description\n";
}
fhem ("set Telegrambot message $txt");
}
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Tutti_Bomovski am 17 März 2019, 09:33:59
Zitat von: sinus61 am 16 März 2019, 18:00:19
Mal so als Beispiel:

event-on-change-reading a_count

Ein notify

DWD_Wetter.a_count:.[0-9] {
if($EVTPART1 >= 1) {
DWD_Alert("DWD_Wetter");
}
}


und in der 99_myUtils.pm


sub DWD_Alert($)
{
my ($name) = @_;
my $count = ReadingsVal( $name, "a_count", 0 );
my $onset = ""; my $expires = ""; my $description = ""; my $eventDesc = ""; my $txt = "";
for (my $i=0;$i<$count;$i++){
$onset = ReadingsVal( $name, "a_".$i."_onset", 0 );
$expires = ReadingsVal( $name, "a_".$i."_expires", 0 );
$description = ReadingsVal( $name, "a_".$i."_description", 0 );
$eventDesc = ReadingsVal( $name, "a_".$i."_eventDesc", 0 );
$txt .= "[emoji3544] <b>$eventDesc</b>\n$onset\n$expires\n$description\n";
}
fhem ("set Telegrambot message $txt");
}

Hallo Sinus61,
Danke für den Code...
Damit habe ich noch gar nicht gearbeitet.
Kannst du etwas näher erklären was passiert?
Kommen dann auch alle Meldungen wenn es mehr als 1 gibt?

Danke und Gruß
Tutti...

Gesendet von meinem SM-T810 mit Tapatalk

Titel: Antw:Wetterwarnung für DWD
Beitrag von: Tutti_Bomovski am 17 März 2019, 11:22:34
@Sinus61
Ich habe deine Codes bei mir mal eingebaut und "musste" feststellen, dass sich leider nichts tut.
Titel: Antw:Wetterwarnung für DWD
Beitrag von: sinus61 am 17 März 2019, 13:36:52
Im notify müsstest du DWD_Wetter gegen den Namen deines DWD Devices tauschen. Ausserdem in der  99_myUtils.pm den Namen deines Telegram Bots.

Immer wenn sich a_count ändert wird dann die Routine in der 99_myUtils.pm aufgerufen und alle Warnungen als eine Meldung gesendet.

Zum probieren kannst du in der FHEM Befehlszeile mal {DWD_Alert("DWD_Wetter")} eingeben, ggfs. den Namen deines Devices anpassen.
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Tutti_Bomovski am 17 März 2019, 17:51:00
Zitat von: sinus61 am 17 März 2019, 13:36:52
Im notify müsstest du DWD_Wetter gegen den Namen deines DWD Devices tauschen. Ausserdem in der  99_myUtils.pm den Namen deines Telegram Bots.

Immer wenn sich a_count ändert wird dann die Routine in der 99_myUtils.pm aufgerufen und alle Warnungen als eine Meldung gesendet.

Zum probieren kannst du in der FHEM Befehlszeile mal {DWD_Alert("DWD_Wetter")} eingeben, ggfs. den Namen deines Devices anpassen.

Jepp, habe ich angepasst und es läuft. Nachricht wird verschickt.
Danke bis hierher!
Titel: Antw:Wetterwarnung für DWD
Beitrag von: masl am 28 November 2019, 19:44:23
Hat jemand zufällig noch einen Vorschlag wie man eine Benachrichtigung per Telegram erzeugt.
Bei dem Notify welcher hier als letztes steht kommt bei der Eingabe ein Fehler.
Ich habe versucht ein DOIF zu erstellen. Aber dieses will einfach nicht.
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Raha66 am 24 Januar 2023, 13:05:46

Leider scheint dieser Teil nicht zu funktionieren, und bisher konnte ich nicht herausfinden warum. gibt es eine alternative Lösung für das?


Zitat von: sinus61 am 16 März 2019, 18:00:19

DWD_Wetter.a_count:.[0-9] {
if($EVTPART1 >= 1) {
DWD_Alert("DWD_Wetter");
}
}

Titel: Antw:Wetterwarnung für DWD
Beitrag von: sinus61 am 24 Januar 2023, 20:04:49
Das funktioniert bei mir seit Jahren, du musst nur DWD_Wetter an beiden Stellen durch den Namen deines DWD Devices ersetzen.
Titel: Antw:Wetterwarnung für DWD
Beitrag von: betateilchen am 24 Januar 2023, 20:24:11
(offtopic)
Der Vergleich auf ">=1" ist m.E. entbehrlich, weil es gleichbedeutend ist mit ">0"
Und wenn $EVTPART1 > 0 ist, ist das automatisch TRUE.

DWD_Wetter.a_count:.[0-9] { DWD_Alert("DWD_Wetter") if $EVTPART1 }

sollte also das gleiche bewirken.
Titel: Antw:Wetterwarnung für DWD
Beitrag von: Raha66 am 25 Januar 2023, 08:31:47
Vielen Dank für Ihre Antwort, ich habe es getan und auch beide Lösungen ausprobiert, scheint nicht zu funktionieren. dies funktioniert


{{DWD_Alert("DWD")}}

aber wenn ich notify im Terminal versuche, bekomme ich folgende Fehlermeldung

Unknown command DWD.a_count:.[0-9], try help.

Titel: Antw:Wetterwarnung für DWD
Beitrag von: betateilchen am 25 Januar 2023, 09:05:28
Zitat von: Raha66 am 25 Januar 2023, 08:31:47
aber wenn ich notify im Terminal versuche, bekomme ich folgende Fehlermeldung

Natürlich gibt es keinen Befehl "DWD.a_count:.[0-9]"

Wie versuchst Du denn, das "notify im Terminal"?
Das ist kein Befehl, den Du einfach irgendwo eintippen könntest.

Es gibt zwei einfache Möglichkeiten, ein notify zu "testen"


Beide Befehle sollten das notify triggern.
Solange Dein notify nicht sicher funktioniert, solltest Du übrigens auf sämtliche event-on-irgendwas Attribute in dem device verzichten.
Titel: Aw: Wetterwarnung für DWD
Beitrag von: Ulm32b am 29 Januar 2025, 20:24:48
Bei mir wird in DWD_OpenData das Reading a_count (=Anzahl Warnungen) nicht mehr geliefert. Weiß da jemand mehr?

Viele Grüße
Ulm32b
Titel: Aw: Wetterwarnung für DWD
Beitrag von: Dlay am 22 Februar 2025, 15:08:01
Zitat von: Ulm32b am 29 Januar 2025, 20:24:48Bei mir wird in DWD_OpenData das Reading a_count (=Anzahl Warnungen) nicht mehr geliefert. Weiß da jemand mehr?

Viele Grüße
Ulm32b

Hab bei mir das gleiche Problem.. vielleicht hat sich an der API etwas gändert.. bin leider kein Entwickler.
Titel: Aw: Wetterwarnung für DWD
Beitrag von: yersinia am 22 Februar 2025, 15:30:46
Kann ich nicht bestätigen, läuft hier:
   READINGS:
     2025-02-22 15:15:05   a_count         0
     2025-02-22 15:15:05   a_state         updated
     2025-02-22 15:15:05   a_time          2025-02-22 15:15:05

Version:
55_DWD_OpenData.pm         28557 2024-02-25 22:00:54Z jensb
99_DWD_OpenData_Weblink.pm 201602 2002-10-09 11:06:00Z jensb
Titel: Aw: Wetterwarnung für DWD
Beitrag von: Dlay am 23 Februar 2025, 23:05:12
Zitat von: yersinia am 22 Februar 2025, 15:30:46Kann ich nicht bestätigen, läuft hier:
  READINGS:
    2025-02-22 15:15:05  a_count        0
    2025-02-22 15:15:05  a_state        updated
    2025-02-22 15:15:05  a_time          2025-02-22 15:15:05

Version:
55_DWD_OpenData.pm        28557 2024-02-25 22:00:54Z jensb
99_DWD_OpenData_Weblink.pm 201602 2002-10-09 11:06:00Z jensb


Spannend, meine Dateien sind:
66833  5. Mai 2021  99_DWD_OpenData_Weblink.pm
119278 26. Feb 2024  55_DWD_OpenData.pm

Hast du alle Updates drauf @yersinia?
Titel: Aw: Wetterwarnung für DWD
Beitrag von: MDietrich am 24 Februar 2025, 05:30:44
Bei mir gibt es auch keine Probleme, letztes Update gestern:
a_count 0 2025-02-24 05:00:10
a_state updated 2025-02-24 05:00:10
a_time 2025-02-24 05:00:07 2025-02-24 05:00:10

UPD 2024-02-26_07:45:03 119278 FHEM/55_DWD_OpenData.pm
Das Modul "99_DWD_OpenData_Weblink.pm" nutze ich nicht.

Gruß,
Matthias
Titel: Aw: Wetterwarnung für DWD
Beitrag von: yersinia am 24 Februar 2025, 13:53:13
Zitat von: Dlay am 23 Februar 2025, 23:05:12
Zitat von: yersinia am 22 Februar 2025, 15:30:46Version:
55_DWD_OpenData.pm        28557 2024-02-25 22:00:54Z jensb
99_DWD_OpenData_Weblink.pm 201602 2002-10-09 11:06:00Z jensb

Spannend, meine Dateien sind:
66833  5. Mai 2021  99_DWD_OpenData_Weblink.pm
119278 26. Feb 2024  55_DWD_OpenData.pm

Hast du alle Updates drauf @yersinia?
Aber ja, die aktuelle Revision der Moduldatei 55_DWD_OpenData.pm ist 28557 (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/55_DWD_OpenData.pm).
Den DWD Weblink (https://wiki.fhem.de/wiki/DWD_OpenData#Beispiel_f%C3%BCr_die_Einrichtung_eines_Weblinks) nutz' ich nicht und hat daher auch nicht aktuelle Version vom 2024-01-10 (https://raw.githubusercontent.com/jnsbyr/fhem/master/FHEM/98_DWD_OpenData_Weblink.pm) - dieser ist sowieso nicht für die Funktion der Warnungen notwendig.
Titel: Aw: Wetterwarnung für DWD
Beitrag von: Ulm32b am 26 Februar 2025, 00:21:14
In der Tabelle der Alert Areas ist mein Ort zweimal aufgeführt, die Nummer einmal beginnend mit 1, einmal mit 8. Die Nummer 8*** funktionierte sofort, a_count wurde geliefert. Da muss man erstmal drauf kommen, vielen Dank für den entscheidenden Hinweis.

Die Ursache des Problems bleibt vorläufig im Dunkeln. Ich hoffe, dass der o.g. Workaround bei allen Betroffenen funktioniert.  8)