Notify / Watchdog - Triggern mit Prüfung von 2 Statussen

Begonnen von siggi85, 01 Februar 2014, 21:57:32

Vorheriges Thema - Nächstes Thema

Simon74

#15
Ich brauche mehr Details :-)
Den notify "Mail_Bewegengunsmelder_Absent" habe ich mal gebaut, er funktioniert:
DEF:
t5.fl.bm1:motion { if (Value("Zuhause") eq "absent")
{my $DNAME = AttrVal($NAME,"alias",$NAME);DebianMail('mail@adr.net', 'Bewegung im Flur ohne anwesende Person !', $DNAME." ".$EVENT)}
}


Ich frage mich nun wenn ich das aktivieren des notify so einbauen würde:
DEF:
Zuhause:absent 00:10:00 Zuhause:undefined set group=Licht off,attr Mail_Bewegungsmelder_Absent disable 0; trigger Nicht_Zuhause .
..würde das bedeuten das erst 10 Minuten später die Aktivierung stattfinden würde.

Dieselbe Problematik habe ich auch beim deaktivieren:
Ich komme nach Hause, bis mein Smartphone per Bluetooth gefunden wird kann es etwas dauern darum sollte ich hier eine Minute Verzögerung haben.

Bin im Moment ja schon fast zufrieden wenn ich mit den PERL Klammern klar komme, wie ich aber das nun am besten Abbilde.. ?
Bitte um ein Zaunpfahlschwingen :-)

AK-868

#16
Über wann die Mail kommt habe ich mir auch Gedanken gemacht. Bin zu dem Entschluss gekommen die Mail einfach zu löschen wenn eine kommen sollte und meine Anwesenheit wie auch immer noch nicht verifiziert wurde.

Mir ist es wichtiger sofort eine Mail zu erhalten wenn der Ernstfall eintritt. So würdest du eine Minute lang deine Mailfunktion brach legen. Somit hätte man eine Minute Zeit sich frei zu bewegen ohne das es bemerkt wird. Vor allem müsste nach der Minute dann ein neues Event kommen das die Mail versendet. Die Mail einfach eine Minute später senden ergibt auch keinen Sinn.


Edit: meint es wäre nicht nur eine Minute sondern 10 ...

Wenn ich weg bin werden sofort Mails versendet. (Bei einem Event)
Wenn ich 10min abwesend bin ohne Rückkehr, wird alles Abgeschalten.

Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder


Simon74

Nach etwas grübeln denke ich einen Lösungsweg zu haben den ich beschreiben kann, jedoch dürfte mir die PERL-Syntax zu schaffen machen :-)

Die Logik: Wenn eine "Bewegung bei Abwesend" stattfindet sollte nicht sofort ein Mail versendet, sondern ein AT Job der in einer Minute nochmals prüft ob Status immer noch Absend, wenn ja Mail senden.
Damit für jede Bewegung ein Mail generiert wird sollte der Name des AT Jobs dynamisch sein (at_TIME)

define Bewegung_Abwesend notify t5.fl.bm:motion { if (Value("Zuhause") eq "absent")
my $at_TIME=%hh%mm%ss
(define Bewegung_Abwesend_Mail_$at_TIME at +01:00 {if if (Value("Zuhause") eq "absent")} {DebianMail('mail@adr.net', 'FHEM Alarm !', 'Bewegung ohne anwesende Person !')};)
}


Wie jetzt die Syntax richtig aussehen müsste, da werde ich noch länger sitzen :-)

Simon74

Die Klammerei, Escapen und das hüpfen zw. FHEM, PERL ... ist "schön" ausgetrückt eine kleine Katastrophe.  ::)

Ich habe nun soweit das die Mail 1 Minute verzögert gesendet wird:
t5.fl.bm:motion { if (Value("Zuhause") eq "absent")
{ fhem('define Bewegung_Abwesend_Mail_ at +00:01 { if (Value("Zuhause") eq "absent") {DebianMail(\'mail@@adr.net\', \'FHEM Alarm !\', \'Bewegung ohne anwesende Person !\')}}')}
}


Was mir jetzt noch fehlt ist ein Timestamp, so das mehrere Mails gesendet werden können und nicht mit "notify exist" nicht erstellt werden können
Wenn ich das in die 2. Zeile setze mag er das nicht:
my $attime=sprintf("%02d:%02d:%02d", $hour, $min, $sec);

Wenns funktionieren würde könnte ich:
{ fhem('define Bewegung_Abwesend_Mail_$attime...


Simon74

So, nach ersten Frustabbau eine 2. Variante mit Sleep. Leider lässt sich FHEM in dieser Zeit nicht bedienen.
t5.fl.bm:motion { if (Value("Zuhause") eq "absent")
  { fhem("sleep 60") };
  if (Value("Zuhause") eq "absent")
    { DebianMail('mail@@adr', 'FHEM Alarm !', 'Bewegung im Flur ohne anwesende Person !') }
}


Die at Variante wäre sichlerlich besser, es bleibt dort wie Frage wie der "define Name" mit einer Variable ausgestattet werden kann.

CoolTux

Hallo,

Ich habe da mal eine Idee oder besser Lösungsansatz. Warum wird hier nicht einfach mit Hilfe des Residents Modules gearbeitet. Notify wäre "Ist $RESIDENTS:residentsHome.0 dann tue das oder jenes". Oder denke ich da zu einfach???


Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net