FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Mundus am 25 August 2018, 01:54:03

Titel: Auslösen von und Frage zu Notify
Beitrag von: Mundus am 25 August 2018, 01:54:03
Hi,

ich nutze das nachfolgende Notify für ein UWZ-Device

defmod nt_uwzOrt notify uwzOrt.*Warnungen.* {\
my $anzWarn = ReadingsVal("uwzOrt","WarnCount","FEHLER");;\
my $warnText = ReadingsVal("uwzOrt","Warn_0_ShortText","FEHLER");;\
my $warnDBeginn = ReadingsVal("uwzOrt","Warn_0_Start_Date","FEHLER");;\
my $warnDEnde = ReadingsVal("uwzOrt","Warn_0_End_Date","FEHLER");;\
my $warnTBeginn = ReadingsVal("uwzOrt","Warn_0_Start_Time","FEHLER");;\
my $warnTEnde = ReadingsVal("uwzOrt","Warn_0_End_Time","FEHLER");;\
\
my $emailText = "Die UWZ meldet $anzWarn\
von $warnDBeginn, $warnTBeginn Uhr bis $warnDEnde, $warnTEnde Uhr $warnText";;\
EMailVersenden("meine\@email.de","UWZ-Warnung","$emailText");;\
}


Das Notify soll aber nur auslösen, wenn der uwzOrt.*Warnungen.* >= 1 ist. Sprich, wenn alle Warnmeldungen abgelaufen sind, ändert sich der Status auf 0, hierfür soll aber keine E-Mail geschickt werden. Nun kann ich natürlich das Suchmuster so lassen wie es ist und anschließend mittels Wenn-Dann if ($EVTPART1 >= 1) weiterarbeiten, aber ich würde es gerne im Suchmuster direkt abarbeiten. Geht das und wie müsste dieser Befehl aussehen?

Außerdem würde ich gerne alle bestehenden Warnung in der Variablen $emailText aufnehmen und dann versenden. Nun war meine Überlegung mittels eines Loops (For) alle Readings auszulesen. Leider gelingt mir das nicht....
my $i = 0;
for ($i;$i<$anzWarn;$i++){
my $warnText = ReadingsVal("uwzOrt","Warn_$i_ShortText","FEHLER");
my $warnDBeginn = ReadingsVal("uwzOrt","Warn_$i_Start_Date","FEHLER");
my $warnDEnde = ReadingsVal("uwzOrt","Warn_$i_End_Date","FEHLER");
my $warnTBeginn = ReadingsVal("uwzOrt","Warn_$i_Start_Time","FEHLER");
my $warnTEnde = ReadingsVal("uwzOrt","Warn_$i_End_Time","FEHLER");

my $emailText .=  "
von $warnDBeginn, $warnTBeginn Uhr bis $warnDEnde, $warnTEnde Uhr $warnText";
}

Dies funktioniert bei mir nicht. Habt ihr hierzu eine Idee?

Gruß und Danke

Mundus
Titel: Antw:Auslösen von und Frage zu Notify
Beitrag von: igami am 25 August 2018, 06:56:52
Zitat von: Mundus am 25 August 2018, 01:54:03
Habt ihr hierzu eine Idee?
Es gibt da ein passendes Attribut:
Zitat
ignoreRegexp regexp
It is hard to create a regexp which is _not_ matching something, this attribute helps in this case, as the event is ignored if matches the argument. The syntax is the same as for the original regexp.
Titel: Antw:Auslösen von und Frage zu Notify
Beitrag von: Otto123 am 25 August 2018, 09:57:02
Moin,

funktioniert das bei Perl so mit der Variablen im Namen ohne Leerzeichen im String?
Hast Du mal probiert was dabei rauskommt? Für die FHEM Kommandozeile:
{my $i=0;;ReadingsVal("uwzOrt","Warn_$i_ShortText","FEHLER")}
Ist das nicht ein Fall für concatenation?
{my $i=0;;ReadingsVal("uwzOrt","Warn_".$i."_ShortText","FEHLER")}
Hab es jetzt aber selbst nicht getestet!

Gruß Otto
Titel: Antw:Auslösen von und Frage zu Notify
Beitrag von: CoolTux am 25 August 2018, 10:59:43

notifyUnwetterwarnung Unwetterzentrale:WarnCount:.[0-9]


Als Denkbeispiel
Titel: Antw:Auslösen von und Frage zu Notify
Beitrag von: Wzut am 25 August 2018, 14:39:43
Zitat von: Mundus am 25 August 2018, 01:54:03
Dies funktioniert bei mir nicht. Habt ihr hierzu eine Idee?
my $emailText ausserhalb der for Schleife deklarieren und in der Schleife dann ohne my ---- > $emailText .= 
Bei my $anzWarn = ReadingsVal("uwzOrt","WarnCount","FEHLER") würd ich auch sicher stellen das es in jedem Fall immer nummerisch ist,
d.h. lieber my $anzWarn = ReadingsNuml("uwzOrt","WarnCount",-1) und ggf dann gleich return if ($anzWarn <0) da ja dann eh nichts sinnvolles mehr kommen kann.
Titel: Antw:Auslösen von und Frage zu Notify
Beitrag von: Mundus am 25 August 2018, 19:05:33
Zitat von: Otto123 am 25 August 2018, 09:57:02
Ist das nicht ein Fall für concatenation?
{my $i=0;;ReadingsVal("uwzOrt","Warn_".$i."_ShortText","FEHLER")}
Der Hinweis war super, es funktioniert wie gewünscht. Den Hinweis von Wzut habe ich auch berücksichtigt. Lediglich den Hinweis von CoolTux konnte ich nocht nicht ausprobieren, werde aber diese Varainte auf jeden Fall ausprobieren und mich wieder melden.

Gruß und vielen Dank für die super Ideen.