Hallo FHEM Freunde,
ich bräuchte mal Eure Hilfe bei einer Automatisierungsangelegenheit und Prüfungen auf Stati.
Ich möchte gerne im Anhängigkeit des Anwesenheitsstatus der Bewohner und der Uhrzeit meine Bewegungserkennung der IP Cams, bzw. des SSCAm Moduls steuern, habe da aber irgendwo ein Prüfungsfehler.
Zielsetzung:
1)
Wenn Presence sagt, dass niemand Zuhause ist, dann schalte alle Motiondetections auf SVS
>>> Das funktioniert schon, no Task
2)
Wenn es 22 Uhr wird, dann aktiviere die Motiondetection für alle Cameras.
>>> Das funktioniert auch schon, auch wenn ich noch nicht ganz glücklich bin. >> no Task
So umgesetzt:
AT
define at_set.cams.SVS.on.22Uhr AT *22:00:00 set GA.Cam1 motdetsc SVS; set GA.Cam2 motdetsc SVS; set GA.Cam3 motdetsc SVS; set WZ.Cam4 motdetsc SVS; { fhem ("set FhemServer0510Bot message Es ist 22 Uhr und ALLE SecurityCams wurden nun aktiviert!")}
Und jetzt kommt der Teil wo ich irgendwo einen Fehler drin habe.
3)
Wenn jemand Zuhause ist UND die Terrassentür geöffnet wird soll die Bewegungserkennung deaktiviert werden.
So umgesetzt:
define doif_CAMs.OFF.someone.present.WZ.Tuer.open DOIF
([H_Anwesenheit] eq "present" or [M_Anwesenheit] eq "present" and [WZ.Tuer.Kontakt:state] eq "open")
(
set GA.Cam1 motdetsc disable,
set GA.Cam2 motdetsc disable,
set GA.Cam3 motdetsc disable,
set WZ.Cam4 motdetsc disable,
{ fhem ("set TelegramBot message H oder M ist Zuhause, WZ.Tuer ist offen, deswegen wurden SecurityCams deaktiviert!") }
)
(Ich hatte bisher noch nichts mit DOIF gemacht und wollte das mal ausprobieren. Aber auch mit einem Notify bekomme ich es nicht hin.)
(Cool wäre auch wenn ich wüsste wie man in der TelegramBot Message mitgeben kann (variable) WER jetzt Zuhause ist H oder M oder beide)
Problem:
Wenn jemand nachhause kommt, dann wird die Bewegungserkennung schon deaktiviert. Wie es scheint wird die AND Bedingung nicht berücksichtigt.
Weiter ist es so, dass am nächsten Morgen trotz dass jemand anwesend ist, und wenn die Terrasentür geöffnet wurde, die Bewegungserkennung weiterhin aktiv ist. Diese wurde ja durch den AT am Vorabend um 22 Uhr gesetzt.
Es wird also auch hier keine erneute Prüfung auf den Status von Presence in Verbindung mit dem Türkontakt gemacht.
Was ich gerne hätte ist eben, dass ein erneuter Status geprüft wird.
"Oh, Terrassentür wurde geöffnet, ist jemand zuhause? Wie es scheint es ist jemand Zuhause, und die Terrassentür wurde geöffnet, ok, dann schalte ich die Bewegungserkennung aus."
Involvierte Module
PRESENCE Modul via lan-ping > funktioniert für sich ohne Probleme. Status ändert sich wie er soll
SSCAM MODUL > funktioniert wie es soll > wichtige Funktion hier > cmd>set Cam1 motdetsc disable > funktioniert.
HM Fensterkontakt > funktioniert auch wie er soll.
DOIF oder NOTIFY und AT zur eventbasierten Steuerungsaufgabe
Kann mir jemand dabei helfen das zu realisieren?
Bitte mit Syntaxbeispielen. Ich bin da echt richtig schlecht in sowas. Ich schaffe bis jetzt immer nur "eine-Bedingung-notifys"
Danke und Gruß
Holger
and wird vor or ausgewertet
Du musst nur eine Klammer um die beiden presence Abfragen machen.
Du kannst auch alles mit einem DOIF erschlagen
define Cam_motdetsc_DOIF DOIF
([22:00] or
([H_Anwesenheit] eq "absent" and
[M_Anwesenheit] eq "absent"
)
)(
(set GA.Cam1,GA.Cam2,GA.Cam3,GA.Cam4 motdetsc SVS),
set FhemServer0510Bot message ALLE SecurityCams wurden aktiviert!
)
DOELSEIF
([WZ.Tuer.Kontakt:state:"(open)"] and
([H_Anwesenheit] eq "present" or
[M_Anwesenheit] eq "present"
)
)(
(set GA.Cam1,GA.Cam2,GA.Cam3,GA.Cam4 motdetsc disable),
{my $msg = "Die WZ.Tuer wurde geöffnet und es sind folgende Personen zuhause:";;
$msg.= "\nH" if("[H_Anwesenheit]" eq "present");;
$msg.= "\nM" if("[M_Anwesenheit]" eq "present");;
$msg .="\nALLE SecurityCams wurden deaktiviert!";;
fhem("set FhemServer0510Bot message $msg");;
}
)
Grüße
igami
VIIIIIEEEEELEN DANK igami
Das ist genial und funktionierte fast auf anhieb.
Ich musste nur die set GA.Cam Befehle wieder auseinander ziehen und einzeln absetzen, denn das sind wohl zu schnelle Calls für die SVS API und so wurde immer nur eine Cam vom Status umgestellt.
Darauf kann ich nun aufbauen und daraus lernen.
Nochmals Danke!
Gruß
Holger