fbmail zeitversetzt ausführen

Begonnen von Terabyte, 18 Mai 2013, 08:48:14

Vorheriges Thema - Nächstes Thema

Terabyte

Hallo

Funktioniert leider immer noch nicht :(

Es bleibt bei folgender Meldung stecken: 2013.05.19 14:05:15 3: Alarmmeldung wird geprüft...

Folgendes habe ich dabei aber rausgelöscht:
 fhem("set ALARM on");;\           ALARM ist bei mir ein Dummy Schalter den ich im WebIF on off schalten kann
 fhem("set presence false");;\     Für die Überwachung benutze ich folgendes "define Handy PRESENCE fritzbox Nexus"


Wenn ich das ganze folgendermaßen mache, dann funktioniert die deaktivierung innerhalb der Latenzzeit nicht:


define Alarmmeldung1 notify MAX:on.* {\
 Log 3, 'Alarmmeldung wird geprüft...';;\
 if (Value("ALARM") ne "on") {Log 3, "kein Alarm eingeschaltet!";;\
 }else {\
 if (Value("Handy") eq "absent"){\
    my $Mail = 'xxxx@@gmail.com';;\
    fhem("define Latenz at +00:00:30 {fb_mail('$Mail','ALARM','Eingangstuer offen')}");;\
    Log 3, "Latenzzeit wurde als at angelegt...";;\
    }\
 }\
}


MAX ist hier ein weiterer Dummy Schalter damit ich nicht immer zur Tür rennen muss und die auf und zu machen :)

MisterEltako

Bei Alarm ist "on"  und Handy "present" ist das so ok.

ALARM +   Handy = Logmeldung
on          +  present = Alarmmeldung wird geprüft
on          +  absent  = Email
off          +  present = kein Alarm eingeschaltet
off          +  absent  = kein Alarm eingeschaltet

MfG, MisterEltako

HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Terabyte

Hallo

Ok. Wenn ich das mache bleibt er aber wieder bei folgender Meldung hängen..

2013.05.19 18:39:46 3: Alarmmeldung wird geprüft...

MisterEltako

Also müssen deine Device andere state's haben als in den Vergleichen geprüft wird.

Bitte im bisherigen Code die Zeile:

Log 3, 'Alarmmeldung wird geprüft...';;\

bitte ergänzen bzw. erweitern um:

my $Alarm= Value("ALARM");;\
my $Handy=Value("Handy");;\
my $Max=Value("MAX");;\
Log 3, "Alarmmeldung wird geprüft:.....ALARM: $Alarm, HANDY: $Handy, MAX: $Max";;\

und Logmeldungen  für die verschiedenen Kombinationen posten.

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Terabyte

Hier das Log

2013.05.19 19:08:20 3: Alarmmeldung wird geprüft:.....ALARM: on, HANDY: absent, MAX: on

Terabyte

2013.05.19 21:04:47 3: Alarmmeldung wird geprüft:.....ALARM: off, HANDY: present, MAX: on
2013.05.19 21:04:47 3: kein Alarm eingeschaltet!

Scheint so als würde alles richtig erkannt werden.

Nur ausgelöst wird nicht richtig hmmmm

MisterEltako

define MAX dummy
 define ALARM dummy
 define Handy dummy

 define Alarmmeldung1 notify MAX:on.* {\
 fhem("set ALARM on");;\
 fhem("set Handy absent");;\
 Log 3, 'Alarmmeldung wird geprüft...';;\
 if (Value("ALARM") ne "on") {\
   Log 3, "kein Alarm eingeschaltet!";;\
 }else {\
   if (Value("Handy") eq "absent"){\
     my $Mail = 'xxxx[email]@@gmail.com'[/email];;\
     fhem("define Latenz at +00:00:30 {\
         fb_mail('$Mail','ALARM','Eingangstuer offen')}");;\
     Log 3, "Latenzzeit wurde als at angelegt...";;\
   }else {Log 3, "Kein Alarm - Person anwesend!"}\
   }\
 }


auslösbar mit: "trigger MAX on"

funktioniert!!!! Extra Logeintrag für dich zugefügt ;-)

MfG,MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Terabyte

Ich versteh das nicht warum das bei dir funktioniert und ich wieder mal eine Fehlermeldung im Log bekomme obwohl ich alles 1 zu 1 kopiert habe :(


2013.05.19 22:08:33 3: Alarmmeldung1 return value: Search pattern not terminated at (eval 43037) line 1.

Auf jeden Fall Danke ich dir schon mal für deine Mühe und Geduld :)

Terabyte

Ok.

Wenn ich das  entferne ist die Fehlermeldung weg.Problem ist aber leider noch immer, dass sich das Mail senden nicht deaktivieren lässt sobald die Latenzzeit läuft.Einmal aktiviert wird das Mail geschickt, egal ob jemand anwesend ist oder nicht...2013.05.19 22:26:21 1: dummy set MAX on2013.05.19 22:26:21 3: Alarmmeldung wird geprüft...2013.05.19 22:26:21 3: Latenzzeit wurde als at angelegt...2013.05.19 22:26:32 1: dummy set Handy on  (Anwesenheit simuliert)2013.05.19 22:26:51 3: Subroutine erhält folgende Parameter: [email=xxxx@gmail.com]xxxx@gmail.com, ALARM, Eingangstuer offen ...)
2013.05.19 22:26:53 3: Mail sent to xxxx@gmail.com (xxxx@gmail.com)

MisterEltako

OK, das ist doch schon fast geschafft. Nun noch nachfolgende Eintrage, die das Löschen des "AT" veranlassen, wenn es schon da ist oder wenn es nicht mehr gültig ist.

Weiterhin muss auch ein notify-Event kommen, wenn du das Fenster schliesst:

....notify MAX:(on.|off.*)....!

Das mit den   ( ) kann man leider nicht beeinflussen, das macht das Forum automatisch!!!

define MAX dummy
define ALARM dummy
define Handy dummy

define Alarmmeldung1 notify MAX:(on.|off.*) {\
 fhem("set ALARM on");;\
 fhem("set Handy present");;\
 Log 3, 'Alarmmeldung wird geprüft...';;\
  if (Value("ALARM") ne "on") {Log 3, "kein Alarm eingeschaltet!";;\
   if (defined($defs{Latenz})){fhem('delete Latenz')};;\
  }else {\
   if (Value("Handy") eq "absent"){\
    my $Mail = 'xxxx@@gmail.com';;\
    if (defined($defs{Latenz})){fhem('delete Latenz')};;\
    fhem("define Latenz at +00:00:30 {fb_mail('$Mail','ALARM','Eingangstuer offen')}");;\
    Log 3, "Latenzzeit wurde als at angelegt...";;\
   }else {\
    Log 3, "Kein Alarm - Person anwesend!";;\
    if (defined($defs{Latenz})){fhem('delete Latenz')};;\
   }\
 }\
}


MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Terabyte

Leider wird auch damit nach Ablauf der Latenzzeit das Mail gesendet. Unabhängig davon ob in der Zwischenzeit jemand anwesend ist oder nicht....


Ich hab mir gerade überlegt ob man das nicht vielleicht mit 2 zusätzlichen Dummy's lösen könnte


MisterEltako

Ok, jetzt habe ich verstanden, was du wolltest.

So müsste das jetzt gehen. Man kann einen zusätzlichen Dummy verwenden (s.u.) oder in die Readings z.B. von ALARM schreiben. Schreibe einfach was die lieber wäre.

define MAX dummy
define ALARM dummy
define Handy dummy
define Email dummy

define Alarmmeldung1 notify Max:(on.*|off.*){\
 fhem("set ALARM on");;\
 fhem("set Handy present");;\
 Log 3, 'Alarmmeldung wird geprüft...';;\
 if (Value("ALARM") ne "on") {\
   Log 3, "kein Alarm eingeschaltet!";;\
   fhem("set Email 0");;\
   if (defined($defs{Latenz})){fhem('delete Latenz')};;\
 }else {\
   if (Value(("Handy") eq "absent") && (Value("Email")){\
      my $Mail = 'xxxx@@gmail.com';;\
      if (defined($defs{Latenz})){fhem('delete Latenz')};;\
      fhem("define Latenz at +00:00:30 {fb_mail('$Mail','ALARM','Eingangstuer offen')}");;\
      fhem("set Email 1");;\
      Log 3, "Latenzzeit wurde als at angelegt...";;\
   }else {Log 3, "Kein Alarm - Person anwesend!";;\
      if (defined($defs{Latenz})){fhem('delete Latenz')};;\
      fhem("set Email 0");;\
   }\
 }\
}


Wenn das o.g. funktioniert, solltest du es noch als eigene Funktion in die 99_Utils.pm auslagern und per Aufruf aus der FHEM.cfg starten, da es inzwischen doch etwas mehr Codezeielen geworden sind...

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Terabyte

Leider wird auch damit wieder das Mail nach Ablauf der Latenzzeit gesendet. :(

Vielleicht funktioniert das gar nicht was ich möchte....

Ich probiere es aber trotzdem noch einmal erklären.

Den Alarm Schalte ich mit einem Dummy Schalter on off

Funktioniert
Wenn der Alarm on ist und die Tür geöffnet wird soll der Countdown zu laufen beginnen.
Meldet sich innerhalb dieser Countdown Zeit niemand mit dem Handy an, dann soll per Mail die Alarmmeldung gesendet werden.

Funktioniert leider nicht
Wird aber innerhalb dieser Zeit ein Handy als present erkannt dann soll der Countdown stoppen und KEIN Mail gesendet werden.


Ich war gar nicht ob das so überhaupt möglich ist mit FHEM....

MisterEltako



define MAX dummy
define ALARM dummy
define Handy dummy
define Email dummy
#fhem("set ALARM on");;\
# fhem("set Handy absent");;\


define Alarmmeldung1 notify MAX {\
 Log 3, 'Alarmmeldung wird geprüft...';;\
 if (defined($defs{WarteaufHandy})){fhem('delete WarteaufHandy')};;\
 if (defined($defs{Latenz})){fhem('delete Latenz')};;\
 if (Value("ALARM") ne "on") {\
   Log 3, "kein Alarm eingeschaltet!";;\
   fhem("set Email 0");;\
   if (defined($defs{Latenz})){fhem('delete Latenz')};;\
 }else {\
   if ((Value("Handy") eq "absent") && (Value("Email"))){\
      my $Mail = 'xxxx@@gmail.com';;\
      if (defined($defs{Latenz})){fhem('delete Latenz')};;\
      fhem("define Latenz at +00:05:00 {fb_mail('$Mail','ALARM','Eingangstuer offen')}");;\
      fhem("define WarteaufHandy notify Handy:present.* trigger MAX on");;\
      fhem("set Email 1");;\
      Log 3, "Latenzzeit wurde als at angelegt...";;\
   }else {Log 3, "Kein Alarm - Person anwesend!";;\
      if (defined($defs{Latenz})){fhem('delete Latenz')};;\
      fhem("set Email 0");;\
   }\
 }\
}


MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Terabyte

Jetzt bekomme ich nur noch folgendes im Log

2013.05.20 14:01:21 3: Alarmmeldung wird geprüft...
2013.05.20 14:01:21 3: Kein Alarm - Person anwesend!
2013.05.20 14:01:36 1: dummy set MAX off
2013.05.20 14:01:36 3: Alarmmeldung wird geprüft...
2013.05.20 14:01:36 3: Kein Alarm - Person anwesend!
2013.05.20 14:01:52 1: dummy set MAX on
2013.05.20 14:01:52 3: Alarmmeldung wird geprüft...
2013.05.20 14:01:52 3: Kein Alarm - Person anwesend!
2013.05.20 14:02:12 1: dummy set Handy on
2013.05.20 14:02:15 1: dummy set MAX off
2013.05.20 14:02:15 3: Alarmmeldung wird geprüft...
2013.05.20 14:02:15 3: Kein Alarm - Person anwesend!
2013.05.20 14:02:27 1: dummy set MAX on
2013.05.20 14:02:27 3: Alarmmeldung wird geprüft...
2013.05.20 14:02:27 3: Kein Alarm - Person anwesend!