Unwetterwarnung aus DWD_OPENDATA auswerten

Begonnen von micomat, 10 Juni 2024, 21:10:48

Vorheriges Thema - Nächstes Thema

micomat

Hallo Gemeinde,

mein Versuch ein DOIF zu schreiben, in dem im perl-Modus ausgewertet wird, ob eine Unwetterwarnung des Typs gewitter, sturm oder orkan vorliegt, klappt nicht so recht... Vielleicht hat ja jemanden die zündende Idee.

Ich prüfe ob DWD:a_count > 0 ist, also ob es überhaupt Warnungen gibt.
Wenn das erfüllt ist soll die perl for schleife abfragen wie viele Alerts es gibt (a_count) und diese Anzahl dann im Parameter a_N_evenDesc weiter nutzen. Dort steht der Warnungstext. Ist dieser zutreffend, soll, wenn einer der Markisen nicht vollständig (<100) hochgefahren ist, diese hochgefahren, und eine entsprechende Pushnachricht verschickt werden.

Der Fehler ist immer, dass die rechte Klammer fehlen würde, ich finde den Fehler aber nicht.

define dwdAlert DOIF ([DWD:a_count] > 0 and \
  { my $count = ReadingsVal("DWD", "a_count", 0);
    my $alert = 0;
    for (my $i = 1; $i <= $count; $i++) {
      if (ReadingsVal("DWD", "a_${i}_eventDesc", "") =~ /\bsturm\b|\borkan\b|\bgewitter\b/i) {
        $alert = 1;
        last;
      }
    }
    return $alert && (ReadingsVal("Markise_Lang", "pct", 0) < 100 || ReadingsVal("Markise_Kurz", "pct", 0) < 100);
  })
  (set Markise_Lang up; set Markise_Kurz up; set PushoverDevice msg 'HausInfo' 'Markisen wegen Unwetterwarnung hochgefahren' '' 0 '')

VG
Markus

Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200