Hallo
Ich würde gerne, wenn ein Türkontakt auslöst, dass zeitversetzt von fbmail eine Alarmmeldung gesendet wird, aber nur wenn innerhalb dieses "Countdowns" keine Person als anwesend registriert wird.(presence)
Diesen Befehl benutze ich zur Zeit.
define Alarmmeldung1 notify MAX_060f08:opened.* {if ( Value("ALARM") eq "on"){fb_mail ('xxxx@@gmail.com' (@@gmail.com'),'ALARM','Eingangstuer offen')}}
Das Problem hierbei ist, dass oft das Handy nicht schnell genug als "presence" erkannt wird und dann immer ein "falscher" Alarm ausgelöst wird.
Deshalb möchte ich, dass nachdem der Türkontakt geöffnet wurde, 1 Minute gewartet wird und wenn sich innerhalb von dieser Zeit niemand mit dem Smartphone auf presence meldet, das Mail geschickt wird.
Ist das möglich?
Danke
define Alarmmeldung1 notify MAX_060f08:opened.* {\
if ( Value("ALARM") eq "on"){\
fhem("define Latenz at +00:05:00 {\
if (Value('presence') eq 'true') {\
fb_mail ('xxxx@@gmail.com','ALARM','Eingangstuer offen');;\
}\
}");;\
}\
}
MfG, MisterEltako
Hallo
Danke.
Aber leider bekomme ich da folgende Fehlermeldung im Log.
Alarmmeldung1 return value: Global symbol "@gmail" requires explicit package name at (eval 364392) line 1.
define Alarmmeldung1 notify MAX_060f08:opened.* {\
Log 3, 'Test läuft...';;\
if (Value("ALARM") ne "on") {Log 3, "kein Alarm eingeschaltet!";;\
}else (Value("presence") eq "true") {\
fhem("define Latenz at +00:02:00 {fb_mail('xxxx@gmail.com','ALARM','Eingangstuer offen')}");;\
Log 3, "Latenzzeit wurde als at angelegt...";;\
}\
}
MfG, MisterEltako
Funktioniert leider auch nicht...
Alarmmeldung1 return value: syntax error at (eval 372753) line 1, near "else ("
syntax error at (eval 372753) line 1, near "} }"
Der "Befehl" Latenz ist für die Verzögerung zuständig?
Was bedeutet das Log3?
Jetzt aber!!!
define Alarmmeldung1 notify MAX.* {\
Log 3, 'Test läuft...';;\
if (Value("ALARM") ne "on") {Log 3, "kein Alarm eingeschaltet!";;\
}else {if (Value("presence") eq "true"){\
fhem("define Latenz at +00:02:00 {fb_mail('xxxx@gmail.com' ('xxxx@gmail.com'),'ALARM','Eingangstuer offen')}");;\
Log 3, "Latenzzeit wurde als at angelegt...";;\
}\
}\
}
MfG, MisterEltako
Jein :)
Zeit scheint korrekt zu laufen usw..
Er möchte auch eine Mail senden, bekomme aber folgende Fehlermeldung
2013.05.18 18:05:46 3: Test läuft...
2013.05.18 18:05:46 3: Latenzzeit wurde als at angelegt...
2013.05.18 18:05:56 3: Subroutine erhält folgende Parameter: xxxxMAXgmail.com, ALARM, Eingangstuer offen ...)
2013.05.18 18:05:59 3: Mail sent to xxxxMAXgmail.com
Es wird anscheinend aus dem "@" ein MAX gemacht...
Schreibe ich im Script bei der Mailadresse xxxx@@gmail.com (@@gmail.com) (also mit 2 @), dann gibt es folgende Fehlermeldung
Alarmmeldung1 return value: Global symbol "@gmail" requires explicit package name at (eval 2539) line 1.
Probiere mai FB_mail statt fb_mail
Hilft leider auch nix.
Es wird immer noch aus dem @ ein MAX gemacht.
Wie wäre es damit? ;o)
define Alarmmeldung1 notify MAX_060f08:opened.* {\
fhem("set ALARM on");;\
fhem("set presence true");;\
Log 3, 'Test läuft...';;\
if (Value("ALARM") ne "on") {Log 3, "kein Alarm eingeschaltet!";;\
}else {if (Value("presence") eq "true"){\
my $Mail = 'xxxx@@gmail.com' (@@gmail.com');;\
fhem("define Latenz at +00:02:00 {fb_mail('$Mail','ALARM','Eingangstuer offen')}");;\
Log 3, "Latenzzeit wurde als at angelegt...";;\
}\
}\
}
MfG, MisterEltako
Vielen Dank :)
Damit wird zumindest schonmal das Mail zeitversetzt gesendet
my $Mail = 'xxxx@@gmail.com' (@@gmail.com');;\
Was ich jetzt noch testen muss, ob kein Alarm ausgelöst wird wenn innerhalb der Latenz Zeit jemand present ist.
Ich habe aber noch Fragen.
Was bedeutet dieses: Log 3, 'Test läuft...';;\
Hat das eine Funktion außer Textausgabe im Log?
Hallo,
nein, es dient einzig nur damit um zu prüfen ob das notify überhaupt angesprungen wird.
Das sind recht feine Kniffe um zu sehen ob etwas überhaupt auslöst ;-)
Grüße
P.S.: Sorry MisterEltako das ich dir zumindest bei dieser Antwort vorgreife - für den Rest bist du besser drauf ;-)
@Puschel
Das ist doch kein Wettbewerb wer zu erst antwortet, sondern eine prima Zusammenarbeit, die meistens zur Lösung des Problems führt. Man kann immer etwas dazu lernen ;o)
@Terabyte
Du musst für diesen Fall noch Nachfolgendes einfügen zum simulieren:
define Alarmmeldung1 notify MAX.* {\
fhem("set ALARM off");;\
fhem("set presence true");;\
Log 3, 'Test läuft...';;\
if (Value("ALARM") ne "on") {Log 3, "kein Alarm eingeschaltet!";;\
}else {if (Value("presence") eq "true"){\
my $Mail = 'xxxx@@gmail.com (@@gmail.com)';;\
fhem("define Latenz at +00:00:02 {fbmail('$Mail','ALARM','Eingangstuer offen')}");;\
Log 3, "Latenzzeit wurde als at angelegt...";;\
}\
}\
}
Das müsste zunächst funktionieren. Falls die Log's dich nerven kannst du sie ohne Funktionsverlust löschen. Ich finde es gut eine Kontrolle zu haben, was so abläuft im Hintergrund.
MFG, MisterEltako.
Hallo
Da bekomme ich leider folgdene Fehlermeldung
Alarmmeldung1 return value: Unknown command {\
fhem("set, try help
Unknown command fhem("set, try help
Unknown command Log, try help
Unknown command if, try help
Unknown command }else, try help
Unknown command fhem("define, try help
Unknown command Log, try help
Unknown command }\
, try help
Mit dem anderen Script funktioniert das Zeitversetzte senden vom Mail problemlos. Was aber leider nicht funktioniert. Das Mail wird auch gesendet wenn sich in der eingestellten Zeit jemand auf PRESENCE befindet.
Da soll eigentlich nichts geschickt werden
define Alarmmeldung1 notify MAX_060f08:opened.* {\
fhem("set ALARM on");;\
fhem("set presence false");;\
Log 3, 'Alarmmeldung wird geprüft...';;\
if (Value("ALARM") ne "on") {Log 3, "kein Alarm eingeschaltet!";;\
}else {\
if (Value("presence") eq "true"){\
my $Mail = 'xxxx@@gmail.com';;\
fhem("define Latenz at +00:02:00 {fbmail('$Mail','ALARM','Eingangstuer offen')}");;\
Log 3, "Latenzzeit wurde als at angelegt...";;\
}\
}\
}
Das
fhem("set ALARM on");;\
fhem("set presence false");;\
dient nur zur Simulation der einzelnen Fensterkontakt und Presencezustände. Das musst du bei dir nach dem Testen natürlich löschen. Bei mir hat das in verschiedenen Kombinationen richtig funktioniert.
MfG, MisterEltako
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 :)
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
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...
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
Hier das Log
2013.05.19 19:08:20 3: Alarmmeldung wird geprüft:.....ALARM: on, HANDY: absent, MAX: on
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
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
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 :)
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)
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.
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
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
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....
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
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!
statt:
fhem("define WarteaufHandy notify Handy:present.* trigger MAX on");;\
bitte:
fhem("define WarteaufHandy notify Handy:present.* {\
if (defined($defs{WarteaufHandy})){fhem('delete WarteaufHandy;;;;delete Latenz')};;\
}\
und:
Log 3, 'Alarmmeldung wird geprüft...';;\
if (defined($defs{WarteaufHandy})){fhem('delete WarteaufHandy')};;\
zu:
Log 3, 'Alarmmeldung wird geprüft...';;\
MfG, MisterEltako.
Das ganze sieht nun so aus
define Alarmmeldung1 notify MAX {\
Log 3, 'Alarmmeldung wird geprüft...';;\
if (defined($defs{Latenz})){fhem('delete Latenz')};;\
if (Value("ALARM1") ne "on") {\
Log 3, "kein Alarm eingeschaltet!";;\
fhem("set Email off");;\
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.* {\
if (defined($defs{WarteaufHandy})){fhem('delete WarteaufHandy;;;;delete Latenz')};;\
}\
fhem("set Email on");;\
Log 3, "Latenzzeit wurde als at angelegt...";;\
}else {Log 3, "Kein Alarm - Person anwesend!";;\
if (defined($defs{Latenz})){fhem('delete Latenz')};;\
fhem("set Email off");;\
}\
}\
}
Gibt aber leider folgende Meldung
2013.05.20 18:05:47 3: Alarmmeldung1 return value: Can't find string terminator '"' anywhere before EOF at (eval 74081) line 1.
fhem("define WarteaufHandy notify Handy:present.* {\
if (defined($defs{WarteaufHandy})){fhem('delete WarteaufHandy;;;;delete Latenz')}}");;\
MfG, MisterEltako.
Hallo
Danke schonmal.
Kann es aber erst am WE Testen.
Ich mal wieder:
define Alarmmeldung1 notify MAX_060f08:opened.* {if ( Value("ALARM") eq "on"){set ALARM defined}
define ALARM watchdog {Value("presence") eq "true"} 00:02 {Value("presence") eq "false"} {fb_mail('xxxx@gmail.com','ALARM','Eingangstuer offen')}
willst du das mal ausprobieren?
ein bisschen weniger Code, aber ich bin noch nicht so erfahren, um beurteilen zu können, ob das funktioniert... ;-)
lg
stephan
Bist du schon zum Testen gekommen?
MfG, MisterEltako
Hallo
Werde ich heute im Laufe des Tages machen und dann berichten.
Zitat von: MisterEltako schrieb am Mo, 20 Mai 2013 18:20fhem("define WarteaufHandy notify Handy:present.* {\
if (defined($defs{WarteaufHandy})){fhem('delete WarteaufHandy;;;;delete Latenz')}}");;\
MfG, MisterEltako.
Hallo
Auch hiermit gibt es leider eine Fehlermeldung im Log
2013.05.25 13:16:40 3: Alarmmeldung1 return value: syntax error at (eval 230049) line 1, near "}else"
syntax error at (eval 230049) line 1, near "} }"
Unmatched right curly bracket at (eval 230049) line 1, at end of line
Zitat von: abc2006 schrieb am Do, 23 Mai 2013 13:43Ich mal wieder:
define Alarmmeldung1 notify MAX_060f08:opened.* {if ( Value("ALARM") eq "on"){set ALARM defined}
define ALARM watchdog {Value("presence") eq "true"} 00:02 {Value("presence") eq "false"} {fb_mail('xxxx@gmail.com','ALARM','Eingangstuer offen')}
willst du das mal ausprobieren?
ein bisschen weniger Code, aber ich bin noch nicht so erfahren, um beurteilen zu können, ob das funktioniert... ;-)
lg
stephan
Damit bekomm ich immer
Wrong timespec, must be HH:MM[:SS]
Auch wenn ich 00:02:00 mache, gibt es die selbe Fehlermeldung
Ok, dasmit watchdog habe ich bisher selbst nicht eingebaut, macht hier aber Sinn. Das müsste dann aber entsprechend deinen Vorgaben so lauten:
#Watchdog der darauf wartet, dass das Handy 5 Minuten durchgängig nicht im WLAN ist. Dann eine Mail sendet wenn Tuer noch offen und
#Alarm-Dummy eingeschaltet und den Watchdog für die Rückkehr scharf schaltet
define wdog_weg watchdog Handy:absent 00:05 Handy:present {\
if ((Value("Max") eq "open") && (Value("ALARM") eq "on")) {\
use FritzBoxUtils;;fb_mail('mail@domain.de' ('mail@domain.de'),'ALARM','Eingangstuer ist offen');;\
fhem("setstate wdog_da defined")}}
#Watchdog der darauf wartet, dass das Handy 1 Minute durchgängig am Netz ist. Dann eine Mail sendet und den Watchdog für das
#Verlassen scharf schaltet
define wdog_da watchdog Handy:present 00:01 Handy:absent {\
use FritzBoxUtils;fb_mail('mail@domain.de' ('mail@domain.de'),'ALARM','Handy ist wieder in Reichweite');;\
fhem("setstate wdog_weg defined")}
MfG, MisterEltako
Klingt alles sehr gut .... bitte wenn es läuft in die Wiki stellen.
Sonst frage ich euch in X Monaten diesbezüglich das Gleiche noch mal ;-P
Danke
Gruss
Holger
Hallo
Es scheint so als würde dieses Script funktionieren wie gewollt. Werde es aber noch im Praxiseinsatz testen :)
define wdog_weg watchdog MAX:on 00:00:30 Handy:on {\
if ((Value("Handy") eq "off") && (Value("ALARM1") eq "on")) {\
fb_mail('xxxx@gmail.com' ('xxxx@gmail.com'),'ALARM','Eingangstuer ist offen');;\
fhem("setstate wdog_weg defined")}}
Danke MisterEltako für deine Mühe und Hilfe
So. Eine Kleinigkeit funktioniert leider noch nicht.
Und zwar wenn der Watchdog "unterbrochen" wird, also sich ein Handy anmeldet und dementsprechend kein Mail gesendet wird, dann bleibt der Watchdog auf triggered und funktioniert demnach nicht mehr.
Es fehlt also noch irgendwie das Kommando, dass er sich bei keinem Mail Versand auch wieder auf defined stellt
Du hast ja auch den Teil des Codes zur Reaktivierung weggelassen
define wdog_weg watchdog MAX:on 00:00:30 Max:off {\
if ((Value("Handy") eq "off") && (Value("ALARM1") eq "on")) {\
fb_mail('xxxx@gmail.com' ('xxxx@gmail.com'),'ALARM','Eingangstuer ist offen');;\
fhem("setstate wdog_da defined")}}
#wartet bis Handy mindestens 1min in Reichweite ist....
define wdog_da watchdog Handy:on 00:01 Handy:off {\
fb_mail('xxxx@gmail.com' ('xxxx@gmail.com'),'ALARM','Handy-Besitzer ist wieder in Reichweite...');;\
fhem("setstate wdog_weg defined")}
MfG, MisterEltako
Achsoo..
Lässt sich das zum Reaktivieren nicht irgendwie hier integrieren?
define ALARM_OFF at +*00:01:00 {if (( Value("Handy1") eq "present" || Value("Handy2") eq "present") && Value("ALARM") eq "on") { fhem("set ALARM off")}}
Ich hab auch schon folgendes versucht. Funktioniert aber leider nicht.
define ALARM_OFF at +*00:01:00 {if (( Value("Handy1") eq "present" || Value("Handy2") eq "present") && Value("ALARM") eq "on") { fhem("set ALARM off ;; setstate wdog_da defined")}}
Ist es prinzipiell nicht möglich mittels "at" den watchdog auf defined zu setzen?
Fehlermeldung hab ich aber keine im Log
define wdog_weg watchdog MAX:on 00:00:30 Max:off {\
if ((Value("Handy") eq "off") && (Value("ALARM1") eq "on")) {\
fb_mail('xxxx@gmail.com','ALARM','Eingangstuer ist offen');;\
}}
define ALARM_OFF at +*00:01:00 {\
if ((( Value("Handy1") eq "present") || (Value("Handy2") eq "present")) && (Value("ALARM") eq "on")) {\
fhem("set ALARM off ;; setstate wdog_weg defined");;\
}\
}
funktioniert bei mir im Test....
MfG, MisterEltako.
Danke
Werde ich testen :)
Hallo
Hab ich nun getestet. Eine Kleinigkeit funktioniert leider noch nicht.
Und zwar bleibt bei der Alarmmeldung anscheinend der Status des "ALARM" Dummy Schalter unberücksichtigt.
define Alarmmeldung1 watchdog MAX_060f08:opened 00:01:30 Handy1&Handy2:present {\
if ((Value("Handy1") eq "absent" && Value("Handy2") eq "absent") && (Value("ALARM") eq "on")) {\
fb_mail('xxxx@gmail.com','ALARM','Eingangstuer ist offen');;\
fhem("setstate Alarmmeldung1 defined")}}
Wenn Handy1 oder 2 als anwesend registriert werden dann funktioniert alles wie gewollt. Weiters wird mit dieser Anwesenheit der ALARM Dummy auf off gestellt.
Ist nun aber bereits eines der beiden Handy´s anwesend und der Alarm bereits off und das 2. Handy "kommt", dann wird die Alarmmeldung1 erneut komplett durchlaufen.
Negativ dabei: Dieser Alarmmeldung1 watchdog bleibt dann auf triggered, weil ja durch das ALARM_OFF vom 1. Handy, der Alarmmeldung1 watchdog auf defined gesetzt wurde, wird er beim 2. dann nicht mehr gesetzt weil ja der ALARM Dummy bereits off ist.
Als Workaround könnte ich jetzt beim ALARM_OFF die Abfrage rausnehmen ob der ALARM Dummy auf "on" steht. Dies müsste ja bewirken, dass das ALARM_OFF dann immer ausgeführt wird und die Alarmmeldung1 auf defined setzt.
Aber rein aus Interesse, würde mich interessieren warum der ALARM Dummy Status nicht berücksichtigt wird bei der Alarmmeldung
Hallo,
nur weil ich selbst schon drüber gestolpert bin ...
Steht den on und off im STATE (also nicht im state)
Value fragt nämlich STATE ab.
Grüße
Hallo
Meinst du das hier auf dem Bild?
Wenn ja, das wäre doch STATE?
Hallo,
ja genau das meinte ich.
Das wird durch Value abgefragt - ok ist bei dir on und off.
Dann zieh ich mich mal wieder unwissend zurück und lese weiterhin nur mit.
Sorry das ich nicht mehr helfen konnte.
Grüße
Hallo
Klar hast du mir geholfen. Zwar leider nicht zur Lösung aber zumindest eine Fehlerquelle ausgeschlossen :)
Also auch Danke hierfür :)
Baue doch einfach eine Logabfrage ein
...
my $Test;;\
Log 3, "ALARM-Value: $Test;;\
...
Dann siehst du ja, was ausgewertet wird.
MfG, MisterEltako.
Du meinst so?
define Alarmmeldung1 watchdog MAX_060f08:opened 00:01:30 Handy1&Handy2:present {\
if ((Value("Handy1") eq "absent" && Value("Handy2") eq "absent") && (Value("ALARM") eq "on")) {\
fb_mail('xxxx@gmail.com','ALARM','Eingangstuer ist offen');;\
fhem("setstate Alarmmeldung1 defined")
my $Test;;\
Log 3, "ALARM-Value: $Test;;\}}
Bitte so versuchen:
define Alarmmeldung1 watchdog MAX_060f08:opened 00:01:30 Handy1&Handy2:present {\
my $Test = Value("ALARM");;\
Log 3, "ALARM-Value: $Test;;\
if ( (Value("Handy1") eq "absent") && (Value("Handy2") eq "absent") ) {\
if (Value("ALARM") eq "on") {\
fb_mail([email]'xxxx@gmail.com'[/email],'ALARM','Eingangstuer ist offen');;\
fhem("setstate Alarmmeldung1 defined");;\
} else { fhem("setstate Alarmmeldung1 triggered");;\
}
}
}
MfG, MisterEltako
Hallo
Das ist nun die Ausgabe:
2013.06.10 14:36:01 3: Watchdog Alarmmeldung1 triggered
Bareword found where operator expected at (eval 146821) line 1, near ""ALARM-Value: $Test; if ( (Value("Handy1"
(Missing operator before Handy1?)
String found where operator expected at (eval 146821) line 1, near "Handy1") eq ""
Bareword found where operator expected at (eval 146821) line 1, near "") eq "absent"
(Missing operator before absent?)
String found where operator expected at (eval 146821) line 1, near "absent") && (Value(""
Bareword found where operator expected at (eval 146821) line 1, near "") && (Value("Handy2"
(Missing operator before Handy2?)
String found where operator expected at (eval 146821) line 1, near "Handy2") eq ""
Bareword found where operator expected at (eval 146821) line 1, near "") eq "absent"
(Missing operator before absent?)
String found where operator expected at (eval 146821) line 1, near "absent") ) { if (Value(""
Bareword found where operator expected at (eval 146821) line 1, near "") ) { if (Value("ALARM"
(Missing operator before ALARM?)
String found where operator expected at (eval 146821) line 1, near "ALARM") eq ""
Bareword found where operator expected at (eval 146821) line 1, near "") eq "on"
(Missing operator before on?)
String found where operator expected at (eval 146821) line 1, near "on") { fb_mail('xxxx@gmail.com','ALARM','Eingangstuer ist offen'); fhem(""
Bareword found where operator expected at (eval 146821) line 1, near ""); } else { fhem("setstate"
(Missing operator before setstate?)
String found where operator expected at (eval 146821) line 1, at end of line
(Missing semicolon on previous line?)
2013.06.10 14:36:01 3: Can't find string terminator '"' anywhere before EOF at (eval 146821) line 1.
Hallo,
es fehlt ein ".
Grüße
Die Frage ist nur wo :D
Hallo,
mit den " verhält es sich so wie mit den ( und {.
Es gehören immer 2 zusammen.
In diesem Fall fehlt hier
ZitatLog 3, "ALARM-Value: $Test;;\
noch eines.
Da ich die Log-Zeile aber anders schreibe als MisterEltako hier mal meine Lösung
Log 3,("ALARM-Value: ".$Test);;\
Grüße
P.S.: Schön langsam wird es aber mal Zeit das Einsteiger.pdf durchzulesen und auch mal im Wiki zu stöbern.
Dort hat es jede Menge solcher Beispiele.
Ja das kleine " fehlt in der genannten Zeile und bringt natürlich den ganzen nachfolgenden Code durch einander, deswegen so viele Fehlermeldungen.
Geht es jetzt?
MfG, MisterEltako
Hallo
Ergibt nun folgendes
Scalar found where operator expected at (eval 217211) line 1, near ""ALARM-Value: "$Test"
(Missing operator before $Test?)
2013.06.16 05:48:44 3: syntax error at (eval 217211) line 1, near ""ALARM-Value: "$Test"
syntax error at (eval 217211) line 1, at EOF
Edit: Werde mal die Logzeile von Puschel74 testen
2013.06.16 15:39:43 3: Watchdog Alarmmeldung1 triggered
2013.06.16 15:39:43 3: syntax error at (eval 222336) line 1, at EOF
So gibt es bei mir keine Fehlermeldung:
define Alarmmeldung1 notify MAX_060f08 {\
Log 3, "ALARM ist ".Value("ALARM");;\
if ( (Value("Handy1") eq "absent") && (Value("Handy2") eq "absent") ) {\
if (Value("ALARM") eq "on") {\
my $adress = 'xxxx@gmail.com';;\
fb_mail('$adress','ALARM','Eingangstuer ist offen');;\
fhem("setstate Alarmmeldung1 defined");;\
} else { fhem("setstate Alarmmeldung1 triggered");;\
};;\
}\
}
MfG, MisterEltako
Hallo
Danke. So funktioniert es.
Ich werde mal beobachten was sich nun so im Log tut
Hallo
Anbei nun das Log
2013.06.18 14:45:07 1: dummy set ALARM off
2013.06.18 14:46:38 1: ShutterContact isopen 1, rferror 0, battery 0, unkbits 0
2013.06.18 14:46:41 1: ShutterContact isopen 0, rferror 0, battery 0, unkbits 0
2013.06.18 14:48:08 3: Watchdog Alarmmeldung1 triggered
2013.06.18 14:48:08 3: ALARM ist off
Man kann hier glaub ich erkennen, dass die Alarmmeldung trotz ALARM off "durchlaufen" wird und deshalb die Alarmmeldung1 auf triggered gesetzt wird.