Hallo Zusammen,
habe nun viel bei mir Daheim gemacht und funktioniert auch alles tadellos.
Nun eine kleine Frage.
Ich habe in meinem Bad einen Lautsprecher installiert, welcher an ZONE 2 meines Denons hängt.
Nun stehe ich jeden Tag um 05.30 auf und FHEM spielt ein Szenario zum Aufwachen ab.
Er startet die Musik auch in der Mainzone (Schlafzimmer) automatisch. Nun möchte ich (Türüberwachung BAD ist vorhanden), dass sobald die Türe im Bad ihren Status wechselt. Egal ob von auf auf zu oder von zu auf auf. Die Musik in Zone 2 angeht. (FHEM weiß ich bin jetzt im BAD)
Wichtig: Dies soll nur in der Früh klappen (auch wenn ich den Wecker mal auf 08.00 stelle statt 05.30). Nicht am Nachmittag etc.
Danke für eure Hilfe!
Grüße
Nico
Das ist mit einem DOIF sehr einfach lösbar, triggern tust du auf eine gewünschten Zeitraum (Bsp.: 05:00-10:00) und zusätzlich auf die Bewegung der Tür.
Das könnte dann so aus sehen:
define Aufwachen_Bad DOIF ([Tür_Bewegung] eq "on" and [05:00-10:00]) (set Denon Zone 2)
Das DOIF ist ungetestet, sollte aber so gehen. Sonst guck einfach mal in die Commandref, da gibt es viele Beispiele.
Gruß FIxel
PS: du musst das DOIF natürlich auf deine Geräte übertragen, je nachdem welche readings dein Sensor für die Tür im Bad hat. Und welchen set Befehl der Denon.
Danke dir den habe ich soweit gemacht. Problem jedoch.. Ich mach nicht immer am Vortag die Badtüre zu. Somit muss dies unabhängig sein ob die Türe offen oder geschlossen ist. (Zum Duschen jedoch wird die Türe immer geschlossen)
Desweiteren mag ich dies ja nur einmal haben. Dieser DOIF löst ja immer das event aus zwischen 05:00-10:00 sobald die Türe den Zustand "on" aufweißt.
Ich will das es aber am Tag nur einmal ausgelöst wird.
Gibt es dafür eine Lösung?
Danke dir!
Hallo Nico,
bei mir geht früh im Bad die Musik einmalig so an:
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and [LichtBWaSw_02] eq "on") (set Sonos_Bad GroupMute 0) DOELSEIF ([11:01])
Und im Flur wird tagsüber "immer mal" die Außentemperatur angesagt:
defmod di_TemperaturAnsage DOIF ([?06:00 - 20:00] and [PIR1:"motion: on"]) ( set MyTTS volume 30, set MyTTS tts Es sind [SensorAussen:tempText] Grad)
attr di_TemperaturAnsage cmdpause 1800
attr di_TemperaturAnsage do always
Beides als Anregung wie man sowas bauen kann. Sicher nicht perfekt aber funktioniert. DOIF wird ständig entwickelt, eventuell geht das mittlerweile auch noch besser.
Gruß Otto
Zitat von: accloginsell am 01 Februar 2017, 09:03:35
Danke dir den habe ich soweit gemacht. Problem jedoch.. Ich mach nicht immer am Vortag die Badtüre zu. Somit muss dies unabhängig sein ob die Türe offen oder geschlossen ist. (Zum Duschen jedoch wird die Türe immer geschlossen)
Desweiteren mag ich dies ja nur einmal haben. Dieser DOIF löst ja immer das event aus zwischen 05:00-10:00 sobald die Türe den Zustand "on" aufweißt.
Ich will das es aber am Tag nur einmal ausgelöst wird.
Gibt es dafür eine Lösung?
Danke dir!
wenn du nur auf
(["Tuer_Bewegung"])
ohne Vergleich 'eq "on"' triggerst, dann geht das DOIF immer wenn Bewegung_Tuer ein Event erzeugt.
und wenn du das dann in Ottos Vorschlag einbaust:
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and [LichtBWaSw_02] eq "on") (set Sonos_Bad GroupMute 0) DOELSEIF ([11:01])
dann geht das ganze nur ein mal - wichtig ist, dass du
nicht das attr <DOIF> do always setzt
Danke für eure Antworten.
Habe es nun so gemacht und es funktioniert
Mein Wecker setzt musikbadfrueh auf On
define BADMUSIK DOIF ([Tur_BAD:Temperature] > 0 and [musikbadfrueh:state] eq "On")(set DenonnWZ_Zone_2 volume 30, set musikbadfrueh Off)
define musikbadfrueh dummy
Sobald die Türe dann geschlossen wird (ich bin im Bad) startet der die Musik und schaltet musikbadfrueh auf Off damit ist es für heute erledigt
Nicht die eleganteste Lösung aber funktioniert!
Danke für die Anregungen
Grüße
Nico
Hallo,
Sorry das ich mich hier einklinken. Ich hätte mal eine Verständnisfrage.
Warum löst das oben vorgeschlagene doif denn nur einmal aus? Ich sehe da nicht warum. Es könnte doch in dem angegebenen Zeitraum öfter schalten?
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and [LichtBWaSw_02] eq "on") (set Sonos_Bad GroupMute 0) DOELSEIF ([11:01])
Gruß
Tobi
Zitat von: DerTobi am 01 Februar 2017, 10:25:20
Hallo,
Sorry das ich mich hier einklinken. Ich hätte mal eine Verständnisfrage.
Warum löst das oben vorgeschlagene doif denn nur einmal aus? Ich sehe da nicht warum. Es könnte doch in dem angegebenen Zeitraum öfter schalten?
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and [LichtBWaSw_02] eq "on") (set Sonos_Bad GroupMute 0) DOELSEIF ([11:01])
Gruß
Tobi
Ohne das 'attr <DOIF> do always' wechselt das DOIF nur einmal in cmd_1, danach muss erst ein Zustandswechsel her.
Deswegen '[11:01]' dann geht das DOIF in cmd_2.
Danach kann es dann wieder zu cmd_1 wechseln, aber erst am nächsten Tag zwischen '[05:45-11:00]'
DOIF arbeitet mit Zuständen. So lange keine andere Bedingung zutrifft verbleibt der vorherige Zustand. In deinem Fall, so lange es nicht 11:01 ist bleibt immer cmd_1
Super. Vielen Dank für die Antworten!
Da muss ich etwas gerade stellen.
Bei:
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and [LichtBWaSw_02] eq "on") (set Sonos_Bad GroupMute 0) DOELSEIF ([11:01])
ist DOELSEIF ([11:01]) überflüssig. Wenn kein do always angegeben wird, dann gibt es automatisch einen DOELSE-Fall, wenn die Bedingung nicht wahr ist. Um 11:00 wird das Modul getriggert, das Zeitintervall ist dann nicht wahr und das Modul geht in den cmd_2-Zustand.
Zitat von: Damian am 01 Februar 2017, 18:40:21
Da muss ich etwas gerade stellen.
Bei:
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and [LichtBWaSw_02] eq "on") (set Sonos_Bad GroupMute 0) DOELSEIF ([11:01])
ist DOELSEIF ([11:01]) überflüssig. Wenn kein do always angegeben wird, dann gibt es automatisch einen DOELSE-Fall, wenn die Bedingung nicht wahr ist. Um 11:00 wird das Modul getriggert, das Zeitintervall ist dann nicht wahr und das Modul geht in den cmd_2-Zustand.
8) 8) Das DOIF sollte in dem Zeitraum aber nur maximal einmal schalten. Wenn [LichtBWaSw_02] nicht mehr on ist, sind die Bedingungen unwahr und das DOIF wechselt nach cmd_2 und kann anschließend auch wieder in cmd_1 wechseln. Wenn ich das mit DOELSEIF mache, dann kommt das DOIF erst um 11:01 aus dem cmd_1 heraus auch wenn die Bedingungen für cmd_1 unwahr werden...
Oder liege ich falsch?
Zitat von: automatisierer am 01 Februar 2017, 18:50:42
8) 8) Das DOIF sollte in dem Zeitraum aber nur maximal einmal schalten. Wenn [LichtBWaSw_02] nicht mehr on ist, sind die Bedingungen unwahr und das DOIF wechselt nach cmd_2 und kann anschließend auch wieder in cmd_1 wechseln. Wenn ich das mit DOELSEIF mache, dann kommt das DOIF erst um 11:01 aus dem cmd_1 heraus auch wenn die Bedingungen für cmd_1 unwahr werden...
Oder liege ich falsch?
Da hast du wohl Recht :)
Zitat von: Damian am 01 Februar 2017, 18:40:21
Da muss ich etwas gerade stellen.
Bei:
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and [LichtBWaSw_02] eq "on") (set Sonos_Bad GroupMute 0) DOELSEIF ([11:01])
ist DOELSEIF ([11:01]) überflüssig. Wenn kein do always angegeben wird, dann gibt es automatisch einen DOELSE-Fall, wenn die Bedingung nicht wahr ist. Um 11:00 wird das Modul getriggert, das Zeitintervall ist dann nicht wahr und das Modul geht in den cmd_2-Zustand.
Hallo Damian,
ich glaube das mit dem DOELSEIF (um den Abschluss definiert zu setzen) habe ich vor einiger Zeit von Dir gelernt :)
Gruß Otto
Hier mal eine Alternative:
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and ["LichtBWaSw_02:on"]) (set Sonos_Bad GroupMute 0)
Mit der Ereignisabfrage kann LichtBWaSw_02 nicht den DOELSE-Fall provozieren, damit kann nur einmal cmd_1 kommen und um 11:00 Uhr cmd 2.
Zitat von: Damian am 01 Februar 2017, 19:55:38
Hier mal eine Alternative:
defmod di_GutenMorgen2 DOIF ([05:45-11:00] and ["LichtBWaSw_02:on"]) (set Sonos_Bad GroupMute 0)
Mit der Ereignisabfrage kann LichtBWaSw_02 nicht den DOELSE-Fall provozieren, damit kann nur einmal cmd_1 kommen und um 11:00 Uhr cmd 2.
Der Ursprung dieses DOIF war mein allererstes DOIF in FHEM überhaupt. Damals habe ich, glaube ich, gar nicht begriffen, was ich da "mache" und was ihr mir so vorschlagt ;D
Das Forum vergisst es nicht ;) -> https://forum.fhem.de/index.php/topic,33937.15.html
Danke, ich habe es eingebaut und wird morgen früh getestet.
Gruß Otto
Zitat von: Otto123 am 01 Februar 2017, 20:20:39
Der Ursprung dieses DOIF war mein allererstes DOIF in FHEM überhaupt. Damals habe ich, glaube ich, gar nicht begriffen, was ich da "mache" und was ihr mir so vorschlagt ;D
Das Forum vergisst es nicht ;) -> https://forum.fhem.de/index.php/topic,33937.15.html
Danke, ich habe es eingebaut und wird morgen früh getestet.
Gruß Otto
Seit dem hat sich ja auch einiges am Modul geändert.
Beispiel:
Ereignisabfrage auf ein bestimmtes Device:
DOIF [LichtBWaSw_02:"on"] (set bla on)
führt cmd_1 aus, wenn Device LichtBWaSw_02 mit Ereignis "on" triggert, führt zu cmd_2 wenn dieses Device ein anderes Event als "on" liefert.
dagegen triggert eine allgemeine Ereignisabfrage (hier ist das Device nur ein Teil der regex-Angabe)
DOIF ["LichtBWaSw_02:on"] (set bla on)
nur wenn LichtBWaSw_02 "on" liefert, wenn LichtBWaSw_02 ein anderes Ereignis als "on" liefert, dann wird die Bedingung gar nicht erst getriggert, daher kann hier kein cmd_2 Fall kommen und sie wäre ohne do always nicht sinnvoll.
Naja, je mehr Features das Modul mitbringt, desto vielfältiger und damit auch undurchschaubarer ergeben sich die Finessen der Anwendung, daher habe ich immer großen Wert auf eine ausführliche Dokumentation gelegt, die aber auch immer länger wird.