FHEM Forum

FHEM => Automatisierung => Thema gestartet von: crissiloop am 18 Dezember 2013, 18:40:30

Titel: [gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: crissiloop am 18 Dezember 2013, 18:40:30
Hallo,
nachdem ja die Platzhalter % und @ im Notify deprecated sind, wollte ich mein Batterynotify dementsprechend umbauen.

.*:[Bb]attery.* {if("$EVENT" !~ /ok/) {
FB_mail('eckartsberg@gmx.de', 'FHEM Batteriewarnung', '$NAME $EVENT');
Log 3, "$NAME: $EVENT";
}
}


Im Log funktioniert dies auch und es kommt der auslösende Aktor und das entsprechende Ereignis. Aber in der Mail kommt dann nur $NAME $EVENT anstatt des Namens des Aktors und des Ereignisses.

Wie bekomme ich das hin?

Gruß
Christian
Titel: Antw:Notify mit $NAME und $EVENT und FB_mail
Beitrag von: justme1968 am 18 Dezember 2013, 18:58:54
in strings die einfache anführungszeichen eingeschlossen sind werden keine variablen expandiert. also entweder doppelte anführungszeichen verwenden oder gar keine und mit ." ". aneinander hängen.

gruss
  andre
Titel: Antw:Notify mit $NAME und $EVENT und FB_mail
Beitrag von: crissiloop am 18 Dezember 2013, 20:55:12
Besten Dank!
Das mit dein einfachen Anführungszeichen und dem Nichtexpandieren von Variablen war mir nicht bekannt.
So funktioniert es nun:
.*:[Bb]attery.* {if("$EVENT" !~ /ok/) {
FB_mail('eckartsberg@gmx.de', 'FHEM Batteriewarnung', $NAME." ".$EVENT);
Log 3, "$NAME: $EVENT";
}
}


Gruß Christian
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: Simon74 am 02 Juli 2014, 11:28:36
Kann in einer Mail anstatt $NAME eigentlich auch der Alias des Devices verwendet werden ?
Da ich die sprechenden Namen nur über Aliase definiere wäre das "schöner".
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: marvin78 am 02 Juli 2014, 11:30:41
AttrVal($NAME,"alias",$NAME)

Diese Funktion gibt den das alias zurück und falls dieser nicht gesetzt ist, den Namen.
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: Simon74 am 02 Juli 2014, 12:25:48
Vielen Dank für Antwort.
Ich habe es mal so versucht.. (keine PERL Kenntnisse)  :o
define Mail_Bewegungsmelder_Flur notify t5.fl.bm1:motion {$DNAME = AttrVal($NAME,"alias",$NAME)}{DebianMail('mailadr@domain.net', 'Bewegung im Flur !', $DNAME." ".$EVENT))}
Geht natürlich nicht
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: marvin78 am 02 Juli 2014, 12:36:01
Zu viele und falsche Klammern. Code anschauen. Nutze am besten den DEF Bereich des Devices im Frontent zusammen mit dem JavascriptEditor.

t5.fl.bm1:motion {$DNAME = AttrVal($NAME,"alias",$NAME);DebianMail('mailadr@domain.net', 'Bewegung im Flur!', $DNAME." ".$EVENT)}


Dieser Code ist für den DEF Bereich im Frontend und nicht für das direkte Einfügen in die Config gedacht und ohne Kentnisse von deiner DebianMail Funktion.
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: Puschel74 am 02 Juli 2014, 12:57:18
Hallo,

bei einem
Zitatgeht matt nicht
könnte ab und zu mal ein Blick ins fhem-Logfile hilfreich sein.

Nur als Tipp für künftige geht natürlich nicht.

Grüße
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: Simon74 am 02 Juli 2014, 13:02:58
Danke, funktioniert schon wenn ich ein "my" vor die selbstdefinierte Variable stelle:
t5.fl.bm1:motion {my $DNAME = AttrVal($NAME,"alias",$NAME);DebianMail('mailadr@domain.net', 'Bewegung im Flur!', $DNAME." ".$EVENT)}

Logfile sehe ich natürlich an, sagte mir auch die Stelle ab wo die Abfrage nicht mehr passt, wobei wenn man schon vorher bei den Klammern Fehler macht...  ???

Jetzt sollte ich nur noch ein fertige define zum eintragen erstellen, jedoch auch dort haperts noch, aber ich denke mit suchen und lesen komme ich da weiter, Danke.
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: marvin78 am 02 Juli 2014, 13:04:48
Sorry. Das mit dem my war mein Fehler. Natürlich muss der Variablendefinition ein my voran stehen (in dem Fall).

Wofür brauchst du ein fertiges Define? Was soll da noch drin sein?
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: Simon74 am 02 Juli 2014, 13:09:21
Nichts mehr so wie in Post 8 passt es.
Jedoch beim eintragen kam ein Fehler, bis ich nun merkte da möchte er noch ein ";" extra:
Funktioniert nun alles wie gewünscht, Danke.

define Mail_Bewegungsmelder_Flur notify t5.fl.bm1:motion {my $DNAME = AttrVal($NAME,"alias",$NAME);;DebianMail('mailadr@domain.net', 'Bewegung im Flur!', $DNAME." ".$EVENT)}
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: marvin78 am 02 Juli 2014, 13:11:19
Wie gesagt, der Code war für den DEF Bereich im Frontend. Da brauchst du das zusätzliche ; nicht. Es ist nicht nötig die Config zu ändern. Es geht ALLES im Frontend. Und, wie du gerade festgestellt hast, ist es dort auch noch wesentlich komfortabler und leichter. Fasse die Config am besten nicht an. Es gibt keinen Grund dafür.
Titel: Antw:[gelöst] Notify mit $NAME und $EVENT und FB_mail
Beitrag von: Simon74 am 02 Juli 2014, 13:15:24
Steht in genug Beiträgen das dies nicht empfohlen ist, und "manchmal" folge ich Ratschlägen alter Hasen..  ;D
Bis jetzt alles im Frontend lösen können, mache nichts direkt in der fhem.cfg
Titel: Antw:Notify mit $NAME und $EVENT und FB_mail
Beitrag von: patator am 14 Juli 2018, 14:57:04
Hallo zusammen,

ich möchte das Beispiel mit den HUE Dimmer aufgreifen.
Diese liefern als Werte:
#my $EVTPART1='99';my $SELF='check_hue_battery';my $NAME='dimmer_Wohnzimmer';my $EVENT='battery: 99';my $TYPE='HUEDevice';my $EVTPART0='battery:'
Ich bekomms nicht auf die Reihe wie ich Dein Beispiel an die HUE Dimmer anpasse.
Diese enthalten im $EVENT einen String wie z.B. "battery: 99" die 99 ist die %uale Angabe des Batterylevels.
.*:[Bb]attery.* {if("$EVENT" !~ /ok/) }
Habt ihr mir ein Beispiel wie ich das umbauen kann, dass das notify auslöst, wenn der Level auf 20 fällt?
Tausend Dank schon mal im Voraus.

VG Pat

Zitat von: crissiloop am 18 Dezember 2013, 20:55:12
Besten Dank!
Das mit dein einfachen Anführungszeichen und dem Nichtexpandieren von Variablen war mir nicht bekannt.
So funktioniert es nun:
.*:[Bb]attery.* {if("$EVENT" !~ /ok/) {
FB_mail('eckartsberg@gmx.de', 'FHEM Batteriewarnung', $NAME." ".$EVENT);
Log 3, "$NAME: $EVENT";
}
}


Gruß Christian