Hallo fhem Gemeinde,
ich habe ein notfy zur Überwachung des Batteriestatus.
.*:[Bb]attery.* {
if("%" !~ m/ok/) {
if ( Value("MsgBattery") eq "nein" ) {
{ DebianMail('meinadresse@@gmx.de', 'FHEM - Batterie Warnung bei %NAME', 'Batteriewechsel erforderlich bei %NAME')}
fhem ("set MsgBattery ja") ;
fhem ("define alarm_Battery at +12:00:00 set MsgBattery nein") ;
}
}
}
Das klappt so weit auch gut.
Nur bekomme ich nicht das richtige Gerät genannt.
Wenn ich ein
trigger MAX_Wohnzimmer1 battery:low
ausführe bekomme ich trotzdem folgendes im Logfile (und dann natürlich auch in der Mail)
'FHEM - Batterie Warnung bei LaCrosse_08' -m 'Batteriewechsel erforderlich bei LaCrosse_08'
Warum wird %Name nicht durch das Gerät ersetzt welches das notify auslöst, sondern durch ein willkürliches?
Außerdem muss mir nochmal jemand erklären was der Unterschied zwischen %Name und $Name ist.
Beides taucht immer wieder auf. Einmal so im Forum, einmal anders im Commandref und im Wiki ist keines von beiden zu finden.
Vielen Dank im Voraus.
Gruß
Matze
Hallo,
nicht willkürlich aber %NAME sollte $DEVICE heissen.
Grüße
Probier doch mal folgendes: @ % - Liefert den Device-Name und das Event -> also in Deinem Beispiel genau "MAX_Wohnzimmer1 battery:low"
Bei mir sieht das ganze so aus, damit sparst Du Dir auch die IF Abfrage für den Zeitinterval:
.*:[Bb]attery.* { if(("%" !~ m/ok/) && (time > $main::NewMailtime)) {
fhem ("set Pushover msg 'FHEM-WARNUNG' '@ %'");
$main::NewMailtime = time + 14400;
}
}
Hallo,
@ sollte schon länger $DEVICE und
% sollte $EVENT heissen.
Lasst mal ab von den alten Platzhalter.
Grüße
Oh, Danke, habe ich gar nicht mit bekommen.
Allerdings geht es nicht:
2014.08.16 21:08:49 3: BatteriewarnungNotify return value: Global symbol "$DEVICE" requires explicit package name at (eval 57365) line 2
Laut Wiki müsste es aber doch $NAME heißen?
define n_batt_chk notify .*:[Bb]attery.* { if($EVENT !~ m/ok$/mi/) { \
{ FB_mail('recipient@internet.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
Log 3, "$NAME : Batteriewarnung $EVENT";; \
} \
}
Hallo,
ZitatLaut Wiki müsste es aber doch $NAME heißen?
Korrekt. Fehler von mir.
Siehe auch Rudis Post vom 24.03.2013:
http://forum.fhem.de/index.php/topic,11886.0.html (http://forum.fhem.de/index.php/topic,11886.0.html)
Grüße
Kann man eigentlich statt dem Namen auch den Alias schicken lassen?
$ALIAS geht nicht.
den alias musst du mit AttrVal selber abfragen.
my $alias = AttrVal($NAME,"alias",$NAME);
gruss
andre
würde dann das ergeben, richtig?
.*:[Bb]attery.* { if(($EVENT !~ m/ok/) && (time > $main::NewMailtime)) {
my $alias = AttrVal($NAME,"alias",$NAME);
fhem ("set Pushover msg 'FHEM-WARNUNG' '$alias $EVENT'");
$main::NewMailtime = time + 14400;
Log 3, "$NAME: Batteriewarnung $EVENT";
}
}
ja- genau.
edit: ohne die ganzen einfachen anführungszeichen im string.
Vielen Dank,
habe es jetzt mit $Name hin bekommen.
Hatte das vorher schon versucht, aber übersehen, dass das dann nicht innerhalb der ' ' stehen darf.
Wenn wir aber schon dabei sind und auch Andre hier schon mitschreibt :) , würde ich dazu gerne noch mein anderes Problem mit anhängen, das im anderen Thread irgendwie unter gegangen ist.
http://forum.fhem.de/index.php/topic,14786.msg189550.html#msg189550 (http://forum.fhem.de/index.php/topic,14786.msg189550.html#msg189550)
Ich bekomme trotz ignore, batterie notify Meldungen von meinem Nachbarn.
Danke für eure Hilfe.
Gruß
Matze
schick mit bitte eine pm mit ich es nicht vergesse.