Hallo zusammen,
ich habe meine erste Lampe mit einem HM Empfänger verbaut und möchte nun meinen ersten schwierigeren notify schreiben. ;)
Folgendes möchte ich erreichen: Die Lampe soll bei Abwesenheit Person1 und Person2 und nach eintreten des Sonnenuntergangs angehen. Ich habe dort folgenden notify mit meinem aktuellen wissen geschrieben. Zur Erklärung Person1 und person2 sind Watchdog's.
Würde das ganze so funktionieren? Gibt es Verbesserungsvorschläge?
Zitat
define FlurlampeAnBeiAbwesenheit notify (Person1|Person2|Sonnenuntergang) {
my $r1 = Value("Person1");;
my $r2 = Value("Person2");;
my $r3 = Value("Sonnenuntergang");;
my $hm = sprintf("%02d:%02d", $hour, $min);
if($hm gt $r3){
if ($r1 eq "off" && $r2 eq "off") {
fhem "set Flurlampe_EG on"
} else {
fhem "set Flurlampe_EG off"
}
}
}
Vielen Dank für eure Unterstützung. :-)
ZitatWürde das ganze so funktionieren?
sei mutig. einfach ausprobieren und fhem.log und eventmonitor beobachten.
zum debuggen kannst du logzeilen einfügen und eventuell verbose vom notify hochdrehen.
ich denke, dass der zeitvergleich problematisch ist.
Werde ich machen.
Allerdings habe ich noch eine andere Frage:
Wird der notify automatisch ausgeführt bzw, aufgerufen? Oder muss ich diesen irgendwo mit reinpacken, dass er ausgelöst wird?
Meine Idee wäre nun: Wenn Person1 oder Person2 das Haus verlässt, dann soll der notify auch mit ausgeführt werden?
Oder habe ich gerade einen Denkfehler? :-/
Bitte lese zum Verständnis der Funktionsweise von FHEM und Notify im besonderen das Einsteiger PDF. Dann sind solche Frage bereits von Dir selbst beantwortet.
Zitat
Zur Erklärung Person1 und person2 sind Watchdog's.
Da ich diese Aussage nicht korrekt interpretieren kann, würde ich sagen das der Ansatz falsch ist. Person1 und Person2 sollten entweder presence Devices sein oder Dummy Devices. In beiden Fällen sollten die Zustande der jeweiligen Devicetypen entsprechend geschalten werden. Entweder durch sich selbst da die Modulfunktion das her gibt (presence) oder durch ein watchdog,DOIF,notify (Dummy).
Es gibt einen sehr ausführlichen Wikiartikel zum Thema Anwesenheitserkennung.
Grüße
Läßt sich das nicht viel eleganter mit einem DOIF realisieren, in etwa:
define DI_FlurLichtPresence DOIF ([{sunset(0,"17:00","21:00")}-03:00] and [Person1:presence] eq "absent" or [Person2:presence] eq "absent")
set FlurLicht on
DOELSE
set FlurLicht off
Ciao, -MN
Zitat von: CoolTux am 10 Mai 2016, 13:36:59
Da ich diese Aussage nicht korrekt interpretieren kann, würde ich sagen das der Ansatz falsch ist. Person1 und Person2 sollten entweder presence Devices sein oder Dummy Devices.
Sind beides Dummy Devices. :-)
Danke, werde ich mal lesen.
Zitat von: Morgennebel am 10 Mai 2016, 13:43:24
define DI_FlurLichtPresence DOIF ([{sunset(0,"17:00","21:00")}-03:00] and [Person1:presence] eq "absent" or [Person2:presence] eq "absent")
set FlurLicht on
DOELSE
set FlurLicht off
So habe ich es mal umgesetzt und muss sagen, es ist wirklich einfacher.
Eine Frage habe ich noch die -03:00.. was bedeuten die? Diese habe ich mal rausgenommen. Werden drei Minuten von der Zeit heruntergenommen?
Danke!
Die Antwort findest Du in der Commandref zu DOIF unter Zeitsteuerung und Zeitberechnung
(http://uploads.tapatalk-cdn.com/20160510/d1047ca9c2c8fb6776fee01dde4a1af4.jpg)
Diese Fehlermeldung erhalte ich im log. Ist DOIF kein Type?
Danke. :)
Gesendet von iPhone mit Tapatalk
Zitat von: Ollek am 10 Mai 2016, 22:11:55
(http://uploads.tapatalk-cdn.com/20160510/d1047ca9c2c8fb6776fee01dde4a1af4.jpg)
Diese Fehlermeldung erhalte ich im log. Ist DOIF kein Type?
Danke. :)
Gesendet von iPhone mit Tapatalk
hast du die aktuelle Version?
$Id: 98_DOIF.pm 11314 2016-04-26 18:29:24Z damian-s $
Hatte ich nicht, habe ein update gemacht. Bisher kein Error Eintrag im Log. Dann werde ich heute Abend mal schauen, ob es funktioniert. Danke dir. Solche Kleinigkeiten sehe ich nicht direkt, aber davon lernt man. :-)
Habe heute Abend mal drauf geachtet und herumgespielt. Lampe ging nicht an.
Folgenden Log-Eintrag habe ich gefunden.
Zitat
2016.05.11 22:20:50 2: DI_FlurLichtPresence: set Flurlampe_EG on: Please define Flurlampe_EG first
Warum muss ich die Flurlampe definieren?
Kann ich den Empfänger nicht über den Alias ansprechen?
In der Definition des Moduls steht folgendes:
alias Flurlampe_EG
Die Fehlermeldung verwirrt mich etwas. oder besteht noch ein anderer Fehler?
Gruß
Was sagt denn die Commandref zu dem Thema alias?
Ciao, -MN