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