[gelöst] Notify mit $NAME und $EVENT und FB_mail

Begonnen von crissiloop, 18 Dezember 2013, 18:40:30

Vorheriges Thema - Nächstes Thema

crissiloop

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
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

crissiloop

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
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

Simon74

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".

marvin78

AttrVal($NAME,"alias",$NAME)

Diese Funktion gibt den das alias zurück und falls dieser nicht gesetzt ist, den Namen.

Simon74

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

marvin78

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.

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Simon74

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.

marvin78

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?

Simon74

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)}

marvin78

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.

Simon74

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

patator

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