und wieder ich ...
ich versuche gerade eine Abhängigkeit mit Presence Modul zu verhunzen ....
Mein grobes Problem:
ich habe LED beleuchtung im Wohnzimmer die Über Fhem eingeschalten werden. Nun möchte ich das wenn ich den Fernseher ausschalte im zeitraum von 20 - 3 uhr 20 minuten später der beleuchtung begeschalten wird. wenn der TV in diesem Zeitraum nicht läuft soll das licht um 23:00 uhr ausschalten....
ich steh aufm schlauch:
allgemein funktioniert mein code schon nur eben nicht in abhängigkeit zur zeit:
define watchdog_Anwesenheit watchdog WZ_SamsungTV:absent 00:20 WZ_SamsungTV:present set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off
attr watchdog_Anwesenheit regexp1WontReactivate 1
Kann mir da wer weiterhelfen?
Danke schon mal im voraus ..
ZitatNun möchte ich das wenn ich den Fernseher ausschalte im zeitraum von 20 - 3 uhr 20 minuten später der beleuchtung begeschalten wird. wenn der TV in diesem Zeitraum nicht läuft soll das licht um 23:00 uhr ausschalten....
Will gerne versuchen dir zu helfen, aber habe 2 Fragen:
1. Was genau meint "begeschalten"? Ich kenne "ausgeschaltet wird" oder "eingeschaltet wird".
2. Was hat das mit dem Presencemodul zu tun?
wow .. schnelle antwort :-)
meinte natürlich ausschalten ....
das Presencemodul checkt über die Fritzbox ob der Fernseher noch online ist.
danke schon mal
und warum dazu noch ein Watchdog? Du beziehst dich doch in dem fall auf present und absent - oder?
Verschwindet der Fernseher wenn er an ist schonmal - wie es bei Bluetooth devices der fall ist?
nein das nicht da er permanent über Wlan online ist ...
es kann aber sein das wir mal nicht fernsehen (eher selten der Fall) daher eben auch die zeitabhängigkeit...
die Beleuchtung wird über den sunset befehl eingeschalten
Ich würde das mit Damians IF Modul lösen -
dann würde dir doch ein
define wohnen_aus notify WZ_SamsungTV IF (([WZ_SamsungTV:state] eq "absent") and (IF ($hour ~~ [20..3])) (define aus at +00:20:00 set licht off) ELSE (define aus at 23:00:00 set Licht off)
ausreichen - ungetestet...
Kein Watchdog - dafür aber das IF Modul...
Hoffentlich findet sich jemand anderes der Dir noch den Weg über Perl erläutert - würde mich nämlich auch interessieren..
Infos zum IF Modul findest du unter Automatisierung.
sei Dir aber im klaren darüber das wenn du mal nach 3 Uhr den Fernseher ausschaltest das Licht anbliest..
EDIT: absent muss natürlich die Bedingung sein...
das hört sich schon mal gut an ...
ich probiere das heut abend mal ... danke schon mal
Dazu musst du das IF Modul auch installiert haben.
Ansonsten würde ich das auch nicht über einen Watchdog machen, sondern ebenfalls mit If, aber den Perl weg.
Wenn Bedarf besteht schreib ich das hier rein.
Hallo zrrronggg! Ich bin für alle vorschläge offen.
Gesendet von meinem HTC Vision mit Tapatalk
Hat es mit dem IF Modul nicht funktioniert?
Hat er noch nicht probiert würde ich denken. Ihm ist nur nicht klar, das wir über sowas auch nachdenken müssen, und wenns auch nur 2-3 Minuten sind und daher fragt er mal alles ab. Oder ihm ist es klar, dass wir auch etwas Arbeit damit haben, meint die 120 Sekunden sind ja kein Problem, vergiss abert, dass hier noch viel mehr Leute sind die solche Sachen Fragen und 100 x 2-3 Minuten auf einmal doch ne Menge ist. ;)
Stüüümts?
Ich habs ehrlich gesagt noch nicht probiert. Ich verlange aber auch von keinem das er mir das script schreibt... ich finde es allerdings gut wie einem hier geholfen wird. Auch das man zum denken angeregt wird wenn man mal nicht um vier Ecken denkt
Gesendet von meinem HTC Vision mit Tapatalk
ich nagel dir was mit der althergebrachten Perlmethode zusammen, wenn du mit der-Lolos Vorschlag nicht weiterkommst. Die Perl Geschichte sähe sehr ähnlich aus. vermutlich würde ich aber 2 defines bauen:
eines das prüft ob es - wenn der Fernseher "verschwindet" prüft, ob die Uhrzeit stimmt und wenn ja in 20 Minuten auschaltet.
... { if($hour < 2 || $hour >= 20) { fhem ("define Licht_in20_aus at +00:20:00 set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off") ) } }
Und ein zweites, das stumpf um 23:00 Uhr den Kram abschaltet, wenn das TV nicht "anwesend" ist.
Geht nur um die Details wir man prüft ob der TV da ist oder nicht, und da fehlen mir noch 2-3 Infos, da du die Anwesenheit offenbar über den Log in ins WLAN testest. Da hab ich keine Ahnung von. Ich halte das Presence-Modul prinzipbedingt für wenig zuverlässig und verwende es nicht.
Okey.. ich finde gerade für fest installierte geräte das presence modul über die fritzbox dochzuverlässig ... anders sieht es natürlich bei handys aus....
Aber dazu mehr morgen ... für heute ist der kopf erstmal zu nach 10 stunden fhem cfg wiederherstellen
Gesendet von meinem HTC Vision mit Tapatalk
Zitatfür fest installierte geräte das presence modul über die fritzbox dochzuverlässig
Mag sein, hab den Bedarf nicht. Und ausserdem läuft Fhem bei mit auf einer Linkstation, da wäre dann zusatzlicher Aufwand nötig.
Aber egal: Ich wollte nur sagen; Ich benutze das Modul nicht und kenn mich daher damit nicht aus.
ZitatGesendet von meinem HTC Vision mit Tapatalk
Gebrauchsanweisung nicht gelesen oder sendest gerne Reklame? 8)
Nee nur tapatalk schnell installiert :)
Gesendet von meinem HTC Vision mit Tapatalk
also hab den Skript etwas umgeschrieben um es zu testen:
define wohnen_aus notify Mirko IF (([Mirko:state] eq "absent") and (IF ($hour ~~ [12..3])) (define aus at +00:00:30 set set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off) ELSE (define aus at 23:00:00 set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off)
bekomme aber folgenden Log:
2014.02.17 12:14:26 3: wohnen_aus return value: IF: no right bracket: (([Mirko:state] eq "absent") and (IF ($hour ~~ [12..3])) (define aus at +00:00:30 set set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off) ELSE (define aus at 23:00:00 set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off)
IF Modul ist installiert
Ich sehe ein set zuviel nach 00:30:00
Die klammern sollten aber so passen..
stümmt ...
hab mal geändert:
define wohnen_aus notify Mirko IF (([Mirko:state] eq "absent") and (IF ($hour ~~ [12..3]))) (define aus at +00:00:30 set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off) ELSE (define aus at 23:00:00 set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off)
log gibt jetzt aus:
2014.02.17 13:05:26 3: wohnen_aus return value: Undefined subroutine &main::IF called at (eval 571) line 1, <in> line 2485.
hmm
Hallo,
ZitatIF Modul ist installiert
Und auch geladen?
reload xx_IF
(das xx bitte gegen die Nummer tauschen)in die Befehlszeile eingeben und <Enter>
Grüsse
jop auch geladen ... hatte vorher nen restart gemacht ...
auch nach eingabe von reload 98_IF keine Besserung ...
Vielleicht ein rechte problem vom IF modul?
wie meinst du das?
Wie kann ich das prüfen?
Versuch mal ein update Check ins komandofeld - falls das IF Modul vorgeschlagen wird ein update,
Falls nicht würde ich ein update Force vorschlagen...
Force update erledigt ...
code nach rumspielen jetzt so:
define wohnen_aus notify Mirko IF (([Mirko:state] eq "absent") and ($hour ~~ [12..3])) (define aus at +00:00:30 (set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off)) ELSE (define aus at 23:00:00 (set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off))
Log Meldung:
2014.02.17 16:32:33 3: define aus at 23:00:00 (set WZ_LED_Stripe;Balkon_Licht;WZ_Licht;WZ_Spielekonsolen off) : aus already defined, delete it first
Unknown command Balkon_Licht, try help.
Unknown command WZ_Licht, try help.
Unknown command WZ_Spielekonsolen, try help.
2014.02.17 16:32:33 3: wohnen_aus return value: aus already defined, delete it first
Unknown command Balkon_Licht, try help.
Unknown command WZ_Licht, try help.
Unknown command WZ_Spielekonsolen, try help.
Und nochmals danke das du so viel Zeit investierst
Ich glaube im IF darf du nicht per Komma aufzählen musst also
(set Wz_licht on,set Wz_spielekonsolen on) ausschreiben...
Schau mal im Forum unter Automatisierung da dann unter if Modul - Damian hat einige gute Syntax Beispiele unter gebracht.
Define aus allready defined kannst du ignorieren oder eben während der Ausführung per delete aus wieder löschen.
Laut IF Modul nicht
ZitatFalls ein Komma im FHEM-Ausdruck vorkommt, muss dieser zusätzlich geklammert werden, damit das Komma nicht als Trennzeichen erkannt wird:
Code: [Auswählen]
define check at +00:10 IF ([outdoor:humidity] > 10) ((set switch1,switch2 off))
Müsstest du dann nicht alles in zwei Klammern fassen? Das define ist ja schließlich auch ein Befehl...
Hast du mal versucht was passiert wenn du es ausschreibst?
hab das ganze mal so probiert:
define wohnen_aus notify WZ_SamsungTV IF (([WZ_SamsungTV:state] eq "absent") and ($hour ~~ [20..3])) (define aus at +00:20:00 (set WZ_LED_Stripe off,set Balkon_Licht off,set WZ_Licht off,set WZ_Spielekonsolen off)) ELSE (define auser at 23:00:00 ((set WZ_LED_Stripe off,set Balkon_Licht off,set WZ_Licht off,set WZ_Spielekonsolen off)))
allerdings schaltet er sofort ab obwohl der TV an ist ...
Hm, Sorry dann hab ich jetzt auch keinen plan mehr - frag mal im IF Thread, Damian hilft sicher gerne. Wäre toll wenn du hinterher hier aber dann noch das Ergebnis präsentierst.
so es scheint zu funktionieren...
Dank Damian bin ich mit folgender lösung zufrieden:
define wohnen_aus notify WZ_SamsungTV IF (([WZ_SamsungTV:state] eq "absent") and ($hour ~~ [20..3])) ((define aus at +00:20:00 set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off)) ELSE ((define aus at 23:00:00 set WZ_LED_Stripe,Balkon_Licht,WZ_Licht,WZ_Spielekonsolen off))
allerdings würde mich die Perl Geschichte allein zur Information auch interessieren.
Zitat von: der-Lolo am 17 Februar 2014, 21:02:43
Müsstest du dann nicht alles in zwei Klammern fassen? Das define ist ja schließlich auch ein Befehl...
Hast du mal versucht was passiert wenn du es ausschreibst?
Dann lag ich doch richtig mit der define Aussage, oder?
Jop. Dann steht es aber falsch im if tread
Gesendet von meinem HTC One X mit Tapatalk