Fenster offen bei Abwesenheit = Mail

Begonnen von ChrisW, 15 Januar 2013, 12:09:28

Vorheriges Thema - Nächstes Thema

ChrisW

Hallo,
ich möchte gerne von Fhem mir eine Mail schicken lassen wenn der Status von Chris / Tanja OFF ist. und eins der Fenster geöffnet ist.
Mail Versand für Windows ist wie im Wiki beschrieben eingerichtet und funktioniert auch.

Habe 4 Fenster Sensoren ( Max ) im Raum "Fenster":

Bad_Fenster closed
Kueche_Fenster closed
KZ_Fenster closed
SZ_Fenster closed


In der Mail solle jetzt etwas stehen das man weis was gemeint ist :
z.b: Abwesend: ***_Fenster Open


define Fenster_Anwesend notify Anwesenheit.*:.* {\
if ((Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on")) {\
  if ([b]( HIER INHALT OB EINS DER FENSTE RIM RAUM FENSTER OFFEN IST )[/b]) {\
    (HIER MUSS NICHTS PASSIEREN)    
  }\
}\
if ((Value("Anwesenheit_Chris") eq "off") && (Value("Anwesenheit_Tanja") eq "off")) {\
    fhem ( system("wmail @:%") );;\ <<< Mail Funktion muss so angepasst werden das man auch weiss was mit der Mail gemeint ist
  }\
}


Kann mir jemand helfen den Code zu vervollständigen ?
Raspberry PI3 mit allem möglichen.

Puschel74

Hallo,

hier

if (Value("Batterie_Leer") eq "OK") {
fb_mail('xxxxx.yyyyyyy@@provider.de','FHEM Batteriewarnung','@ %');


kommt als Mail

OG_Badezimmer_Heizung battery: low

@ ist der Sensor welcher ausgelöst hat und
% warum er ausgelöst hat.

evtl. hilft dir das schonmal weiter.

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.

ChrisW

hi, genau das mit dem @:% hab ich auch schon raus gefunden. Muss ich mal gucken ob ich da einfach noch was zuschreiben kann wie ABWESEND.

Weil wenn Frau ne Mail bekommt mit Bad_Fenster open ... sollte da schon noch stehen Abwesend: :P

Da für Später auch ne Prüfung gibt ob Fenster länger als 30 Minuten auf ist :P Aber das folgt nach der Abwesend Erkennung hehe
Raspberry PI3 mit allem möglichen.

Puschel74

Wieso?
Lass doch die Mail nur verschicken wenn ihr abwesend seid.
Zuhause kansnt du ja nach 30 Minuten ein Licht einschalten wenn das Fenster immer noch offen ist.

Ich hab bei uns jetzt sowas wie ne Akku-Erhaltungsladung "gecoded".

Hintergrund:
2 Ladestation (vorerst) mit FS20ST ausgerüstet.
Ladestation_Bar und
Ladestation_GZ

Jeden Samstag ab 21:15:00 werden die beiden Ladestationen auf
set Ladestation_Bar Laden und
set Ladestation_GZ Laden gesetzt.

Das notify triggert natürlich auf Laden und sieht so aus:

Ladestation.*:Laden.* {
  Log (3,"Aufruf durch @");
  fhem("define @_Aus at +06:00:00 set @ off") if (Value("@_Aus") eq "");
}


Weiters kann man die Ladestationen auch über FHEM laden lassen - logischerweise.
Dafür habe ich ein
attr webcmd Laden
verteilt.

Egal welche Ladestation ich nun ins Laden schicke wird automatisch das zugehörige *_Aus definiert und die auslösende
Ladestation nach 6 Stunden wieder abgeschaltet.
Der Teil mit dem Log kommt wieder raus ;-)

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.

ChrisW

hmm klar will ich auch nur eine Mail wenn ich Abwesend bin.
Aber weiss nicht wie mir dein Code bei mir weiterhilft ?
Ich muss ja erstmal eine Möglichkeit finden meine Fenster zusammen zu legen.
Könnte ein Dummy machen aber da weiss ich dann nicht WELCHES Fenster gemeint ist.

Oder Ich müsste für jedes Fenster einzeln ein Code bauen was wohl der einfachere weg ist.
Somit fehlt mir also nur der Code wenn beide Anwesendheit OFF sind UND Zusätzlich das Fenster open ist dann Mail.
Raspberry PI3 mit allem möglichen.

ChrisW

Oder geht es so einfach:


if ((Value("Anwesenheit_Chris") eq "off") && (Value("Anwesenheit_Tanja") eq "off") &&  (Value("Bad_Fenster") eq "open" ){\
Raspberry PI3 mit allem möglichen.

ChrisW

Hmm hab mal den Status Closed genommen für den Test erstmal aber bekomme fehler:


define Fenster_ABWESEND notify Anwesenheit.*:.* { \
if ((Value("Anwesenheit_Chris") eq "off") && (Value("Anwesenheit_Tanja") eq "off") && (Value("Bad_Fenster") eq "closed" )){\
} \
Log (3,"FENSTER AUF EMAIL GESCHCIKT");;\
else { \
Log (3,"FENSTER ZU ALLES OK KEINE MAIL");;\
}\
}


2013.01.15 12:52:42 3: Fenster_ABWESEND return value: syntax error at (eval 28) line 1, near "; else"
syntax error at (eval 28) line 1, near "} }"
Raspberry PI3 mit allem möglichen.

Puschel74

Kannst du machen, aber dann musst du für jedes Fenster die Abfrage programmieren.
Da deine Fenster aber
Bad_Fenster
Kueche_Fenster
KZ_Fenster
SZ_Fenster
heissen brauchst du ja nur nach
*_Fenster suchen bzw. triggern lassen.

Ich würd das so lösen:

Wenn Fenster auf nach x Minuten die Prüfung ob alle weg und dann die Mail raus.

define Fester_pruef notify *_Fenster:.* {
  if (% eq "open") {
  fhem ("define Alarm_@ at +00:30:00 trigger Anwesenheit @");
  }
  if (% eq "closed" {
  fhem ("delete Alarm_@)" if (Value("Alarm_@") ne "");
  }
}

ungestestet ;-)

Sollte aber den Vorteil haben das mit @ auf genau das Fenster geprüft werden kann.
Wenn 2 Fenster offen sind sollten 2 Alarm_@ angelegt werden die beim schliessen genauso auch wieder
gelöscht werden (sollten).
Mit etwas Glück kannst du das @ dann in Anwesenheit weiter auswerten und dann die Mail so stricken das im Text auch das
@ steht und du somit die Mail bekommen solltest welches Fenster noch offen ist.

Ist sicher noch ausbaufähig ;-)

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.

Puschel74

Du musst vor else noch eine } setzen.
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.

Puschel74


define Fenster_ABWESEND notify Anwesenheit.*:.* { \
if ((Value("Anwesenheit_Chris") eq "off") && (Value("Anwesenheit_Tanja") eq "off") && (Value("Bad_Fenster") eq "closed" )){\
Log (3,"FENSTER AUF EMAIL GESCHCIKT");;\
}\
else { \
Log (3,"FENSTER ZU ALLES OK KEINE MAIL");;\
}\
}


So müsste es gehen.
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.

ChrisW


system("wmail ABWESEND:@:%")


Bekomme nun ne Mail aber da steht nicht das Fenster drin:

ABWESEND:Anwesenheit_Tanja:off
Raspberry PI3 mit allem möglichen.

ChrisW

Derzeitige Lösung Ich Schreib nen manuellen Text einfach rein :P Mache ja eh jedes Fenster einzeln *G*

Also Problem Gelöst.

Nun wäre das selbe 1:1 nur ohne Abwesenheit sondern mit nem Timer
Also Fenster XX Minuten Auf = mail dafür mach ich zur Übersicht mal etwas neues auf ;)
Raspberry PI3 mit allem möglichen.

Puschel74

Logisch,

dann hast du Anwesenheit ausgelöst indem die Ping-Prüfung der Meinung war das Handy Tanja off ist ;-)

In diesem Fall wird die Prüfung ja nur angesprungen wenn einer von euch beiden off ist und das hast du dann in
@ und % stehen.
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.

Puschel74

Und wenn du das notify von mir mal versucht ;-)
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.

ChrisW

Stimmt das werd ich zur Optimierung danach mal versuchen ;D

Hier der fertige Code falls es jemand auch gebrauchen kann:

define Fenster_ABWESEND notify Anwesenheit.*:.* { \
if ((Value("Anwesenheit_Chris") eq "off") && (Value("Anwesenheit_Tanja") eq "off") && (Value("Bad_Fenster") eq "opened" )){\
Log (3,"Abwesend Badezimmer AUF EMAIL GESCHCIKT");;\
fhem (system("wmail ABWESEND_aber_BADEZIMMER_FENSTER_noch_OFFEN"));;\
}\
else { \
}\
}



Wegen E-mail Betreff und Leerzeichen muss ich noch schauen.
Raspberry PI3 mit allem möglichen.