Abwesenheit und Mailversand

Begonnen von michael-sp, 05 April 2014, 00:24:42

Vorheriges Thema - Nächstes Thema

michael-sp

Hallo zusammen,
ich wollte eine Abwesenheit mit Fensterkontakten verknüpfen. Das heisst bin ich nicht zu hause schicke eine Mail wenn das Fenster geöffnet wird.

Mein Code sieht so aus:

define MAIL_Fenster notify WZ_Terrassentuer:open.* {\
if (Value("HandyMoni") eq "absent") { \
DebianMail('xxxxxxxxxx@@gmail.com','!!! ALARMIERUNG !!!','Terrassentür wurde geöffnet');;\
}\
}

Funktioniert auch super, jetzt wollte ich ein 2. Handy anmelden, sind beide Handys abwesend schicke die Mail,
Der Code sieht so aus:

define MAIL_Fenster notify WZ_Terrassentuer:open.* {\
if (Value("HandyMoni") eq "absent") && (Value("HandyMicha") eq "absent") { \
DebianMail('xxxxxxxxxx@@gmail.com','!!! ALARMIERUNG !!!','Terrassentür wurde geöffnet');;\
}\
}

Das funktioniert nicht,
wo liegt der Fehler ?

Gruss und Danke
michael-sp

marvin78

#1
Schöner wäre es, wenn du den Code in Codetags schreiben würdest. Dann könnte man ihn leichter lesen.

Auf den ersten Blick ist eine Klammer zu viel (vor dem zweiten "Value"):


define MAIL_Fenster notify WZ_Terrassentuer:open.* {\
if (Value("HandyMoni") eq "absent" && Value("HandyMicha") eq "absent") { \
DebianMail('xxxxxxxxxx@@gmail.com','!!! ALARMIERUNG !!!','Terrassentür wurde geöffnet');;\
}\
}


Und schreib es nicht in die Config sondern ändere es im Frontend. Dann sparst du dir die ";;" und "\" und kannst das ganze viel besser überblicken.

Puschel74

#2
Hallo,

ZitatAuf den ersten Blick ist eine Klammer zu viel (vor dem zweiten "Value"):
Entweder hab ich mich verzählt oder es ist jetzt eine ) zuviel  8)

Aber ok.

Fangen wir mal.
ZitatFunktioniert auch super,
Das ist schön.
ZitatDas funktioniert nicht,
Das ist etwas dürftig - "Glaskugelaufpolier"

Zitatwo liegt der Fehler ?
ich tippe auf irgendwo zwischen hier
define MAIL_Fenster notify WZ_Terrassentuer:open.* {\
und
}\
}


Erstmal würd ich sagen das der erste Code auch nicht funktioniert da du uns die Definition von HandyMoni schuldig bist - aber der Teil funktioniert ja angeblich super.
Dann würd ich mal tippen das der zweite Code nicht funktionieren kann da HandyMicha nicht existiert oder du uns die Definition HandyMicha einfach nicht zeigen willst - und wir hier raten müssen ob du es überhaupt definiert hast und ob du es auch richtig geschrieben hast.

FHEM kann nur auf Geräte bzw. deren Zustände prüfen - dazu muss das Device aber existieren.
FHEM ist case-sensitiv - HandyMicha und Handymicha sind 2 Handys.

Aber FHEM ist gesprächig - schau mal ins FHEM-Logfile.
Und dann noch, wie marvin schon erwähnt hat,
ZitatUnd schreib es nicht in die Config sondern ändere es im Frontend. Dann sparst du dir die ";;" und "\" und kannst das ganze viel besser überblicken.

Aber um das ganze etwas abzukürzen -
http://fhem.de/Heimautomatisierung-mit-fhem.pdf
Ist eine gute Lektüre
http://forum.fhem.de/index.php/topic,16311.0.html
Macht dir zwar erstmal mehr Arbeit - erspart uns aber das "Infos aus deiner Nase ziehen"
http://forum.fhem.de/index.php/topic,13092.0.html
Ist auch recht interessant.

Danke für deine Mithilfe.

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.

marvin78

#3
Du hast recht. Die eine zuviel habe ich tatsächlich übersehen. Hatte auch nicht weiter geschaut, weil die Infos ja nicht wirklich ausführlich sind. Code oben ist korrigiert.

Angenommen die Devices sind alle korrekt defininiert, sollte es aber funktionieren, wenn er die überflüssige Klammer weg lässt. Man kann hier ohnehin nur raten.

Puschel74

Hallo,

ich prüfe auch mit, vermutlich, zuvielen Klammern
if((Value("Laptop_Roland") eq "present") || (Value("Laptop_Charly") eq "present")) {
und das funktioniert (offensichtlich) einwandfrei mit unseren beiden Laptops.

Aber bezüglich der wenig ausreichenden Informationen gebe ich dir recht.

ZitatAngenommen die Devices sind alle korrekt defininiert, sollte es aber funktionieren,
Ja, solange auch bei einem Device eine Mail ankommt sollte es auch mit beiden funktionieren - wenn beide! absent sind.

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.

michael-sp

#5
Hallo zusammen,
ich gelobe Besserung, habe das gestern nach langem testen auf den Tablet geschrieben.

Ich versuche es nochmal:
Für das 1. Handy:

##### Anwesenheitsprüfung Handy #####
define HandyMicha PRESENCE lan-ping 192.168.1.11 120 10
attr HandyMicha icon it_smartphone
attr HandyMicha room Anwesenheiten
attr HandyMicha verbose 5


für das 2. Handy:

define HandyMoni PRESENCE lan-ping 192.168.1.80 120 10
attr HandyMoni icon it_smartphone
attr HandyMoni room Anwesenheiten
attr HandyMoni verbose 5


Für die Überwachung der Terrassentür habe ich folgenden Code verwendet

##### Terrassentür Status #####
define WZ_Terrassentuer CUL_HM 24FBC9
attr WZ_Terrassentuer .devInfo 810101
attr WZ_Terrassentuer .stc 80
attr WZ_Terrassentuer expert 2_full
attr WZ_Terrassentuer firmware 2.4
attr WZ_Terrassentuer icon fts_window_2w
attr WZ_Terrassentuer model HM-Sec-SC-2
attr WZ_Terrassentuer peerIDs
attr WZ_Terrassentuer room 1_Wohnzimmer
attr WZ_Terrassentuer serialNr KEQxxxxxxx
attr WZ_Terrassentuer subType threeStateSensor
define FileLog_WZ_Terrassentuer FileLog ./log/WZ_Terrassentuer-%Y-%m.log WZ_Terrassentuer
attr FileLog_WZ_Terrassentuer logtype text
attr FileLog_WZ_Terrassentuer room CUL_HM

##### Mail Fensterstatus #####
define MAIL_Fenster notify WZ_Terrassentuer:open.* {\
if (Value("HandyMicha") eq "absent") && (Value("HandyMoni") eq "absent") { \
DebianMail('xxxxxxx@@gmail.com','!!! ALARMIERUNG !!!','Terrassentür wurde geöffnet');;\
}\
}
attr MAIL_Fenster icon message_mail


So wird keine Mail erzeugt wenn beide Handy abwesend sind

Es funktioniert wenn ich entweder

##### Mail Fensterstatus #####
define MAIL_Fenster notify WZ_Terrassentuer:open.* {\
if (Value("HandyMicha") eq "absent") { \
DebianMail('xxxxxxx@@gmail.com','!!! ALARMIERUNG !!!','Terrassentür wurde geöffnet');;\
}\
}
attr MAIL_Fenster icon message_mail

[/code]

oder
##### Mail Fensterstatus #####
define MAIL_Fenster notify WZ_Terrassentuer:open.* {\
if (Value("HandyMoni") eq "absent") { \
DebianMail('xxxxxxx@@gmail.com','!!! ALARMIERUNG !!!','Terrassentür wurde geöffnet');;\
}\
}
attr MAIL_Fenster icon message_mail

[/code]

verwende, aber beide Handys zusammen gehen nicht.

Das weglassen der Klammer vor dem 2 Value hat auch nicht geholfen.

Das Logfile mit nur 1 Handy sieht so aus:

2014.04.05 11:45:23 5: PRESENCE_ProcessLocalScan: HandyMicha|0|absent
2014.04.05 11:45:39 2: HMLAN_Parse: HMLAN1 new condition ok
2014.04.05 11:46:22 1: sendEmail RCP: xxxxxxx@gmail.com
2014.04.05 11:46:22 1: sendEmail Subject: !!! ALARMIERUNG !!!
2014.04.05 11:46:22 1: sendEmail Text: Terrassentür wurde geöffnet
2014.04.05 11:46:25 1: sendEmail returned: Apr 05 11:46:25 raspberrypi sendEmail[2407]: Email was sent successfully!


Ich hoffe das es jetzt etwas aufschlussreicher ist.

Gruß michael-sp

Puschel74

#6
Hallo,

ZitatDas weglassen der Klammer vor dem 2 Value hat auch nicht geholfen.
Ich trau mich was wetten das im Logfile eine Fehlermeldung steht.

ZitatSo wird keine Mail erzeugt wenn beide Handy abwesend sind
if (Value("HandyMicha") eq "absent") && (Value("HandyMoni") eq "absent") {
Wenn ich gedanklich die Klammern auflöse bleibt && alleine beim if stehen -
was im Logfile auch eine Fehlermeldung erzeugen müsste.

Also schau mal ins Logfiel  ;)

Grüße

Edith:
Aber versuch mal
if ((Value("HandyMicha") eq "absent") && (Value("HandyMoni") eq "absent")) {
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.

michael-sp

#7
Danke, damit hat es funktioniert.


Gruß michael-sp