DOIF "Aggregierte Readings" / Windwarnung Proplanta per Mail

Begonnen von holle75, 30 Juni 2017, 13:36:11

Vorheriges Thema - Nächstes Thema

holle75

so gibt er mir nur das erste WindReading auf den die Schwelle zutrifft .... da ist bestimmt was mit den Klammern .... sags ja :D

Hab jetzt das Userreading mal WindWertMail genannt und das gibt er mir

WindWertMail       windig (fc0_wind00

mumpitzstuff

Ja, das ist genau das was das Dong macht. Es durchsucht alle deine Wind Readings und sobald eins gefunden wurde das über der Schwelle liegt, dann wird die Suche abgebrochen und der entsprechende Name des Readings ausgegeben. Das noch weiter zu verfeinern erfordert noch mehr Code und es wird komplizierter. Ich war der Meinung, das du genau das haben wolltest. Letztendlich ist es ja auch egal ob windig ausgegeben wird, weil nur einer es meldet oder weil 10 es melden.

holle75

So weißt du dann aber nicht, wann es windig wird:) .... nur wann es das nächste mal windig wird

Andererseits reicht das als Warnung ja auch schon aus.

Wo kommt die Klammer am Anfang her?

holle75

Habs jetzt so gelöst:

fhem.cfg:

attr WetterProplanta userReadings WindWertMail {for (my $i=0;;$i<=6;;$i++) {for (my $n=0;;$n<=21;;$n+=3) {if (ReadingsVal("WetterProplanta","fc".$i."_wind".sprintf("%02d",$n),0)>40) {return "Windwarnung > 40km/h in ".$i." Tagen um ".sprintf("%02d",$n)." Uhr";;;;} } };;;; return "normal";;;; }

define MAIL_Windwarnung_DOIF DOIF ([WetterProplanta:WindWertMail] ne "normal") ({DebianMail('xxx@xxx.com','FHEM Windwarnung','ReadingsVal("WetterProplanta", "WindWertMail", "0")', '')}) DOELSEIF ([WetterProplanta:WindWertMail] eq "normal")
attr MAIL_Windwarnung_DOIF group System


vielen Dank mumpitz!

Aber den Wert des Readings würde ich auch noch gerne in WindWertMail  packen. Glaube, ich habe jetzt 100 Versionen durch. Immer Syntax Error. Perl nervt.

Damian

#19
Ich werde zukünftig die Readingangabe um Regex erweitern, dann kann man solche Sachen eleganter lösen.

z. B.

[@"^my_device":"^my_readings":$_ > 10]

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75

Prima Damian.

Aber bis dahin, falls es jemanden interessiert hier noch das Dong (mumpitz) mit Windstärke im Reading für die Mail. Puh ... und nach dem Zinober freu ich mich auf Damians Erweiterung.

fhem.cfg

attr WetterProplanta userReadings WindWertMail \
{for (my $i=0;;$i<=6;;$i++) \
{for (my $n=0;;$n<=21;;$n+=3) \
{if (ReadingsVal("WetterProplanta","fc".$i."_wind".sprintf("%02d",$n),0)>40) \
{return "Windwarnung > 40km/h in ".$i." Tagen um ".sprintf("%02d",$n)." Uhr.\nWindstaerke: ".ReadingsVal("WetterProplanta","fc".$i."_wind".sprintf("%02d",$n),"");;;;} \
} \
};;;; return "normal";;;; \
}

define MAIL_Windwarnung_DOIF DOIF ([WetterProplanta:WindWertMail] ne "normal") ({DebianMail('xxx@xxx.com','FHEM Windwarnung',' '. ReadingsVal("WetterProplanta", "WindWertMail", "0").' ', '')}) DOELSEIF ([WetterProplanta:WindWertMail] eq "normal")
attr MAIL_Windwarnung_DOIF group System

mumpitzstuff

Ahhh i waren die Tage. Da hätte deine Spezifikation etwas genauer sein müssen.  ;D Aber du hast es ja jetzt selbst hinbekommen. Sehr schön.

holle75

... selbst hinbekommen ist eine freundliche Übertreibung für -> dein KnowHow genommen und solange rumprobiert, bis der Rest auch noch irgendwie funktioniert :D

Danke dir!