FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Larusso am 04 Dezember 2017, 08:08:19

Titel: [gelöst]Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 04 Dezember 2017, 08:08:19
Hallo zusammen,

ich habe mir mit Blub drei HUE Lampen eingebunden die immer nach 10min. ausgeschaltet werden sollen. Damit die Kinder das Flurlicht nicht ständig anlassen. Das funktioniert auch prima. Nun habe ich aber das Problem das das Licht in der Woche morgens im Zeitfenster von 6:00Uhr bis 8:00Uhr nicht automatisch nach 10 min. ausgeschaltet werden soll. Kann mir jemand meinen Code ändern? Ich komme da nicht wirklich weiter. Desweiteren bekomme ich im Log immer eine Fehlermeldung kommischerweise funktioniert aber das abschalten ohne Probleme:
2017.12.04 08:32:28 2: Blub:  eq "on": Unknown command eq, try help.
2017.12.04 08:32:28 2: Blub: off eq "on": Unknown command off, try help.


([HUEDevice1] eq "on") (set HUEDevice1 off)
([HUEDevice6] eq "on") (set HUEDevice5 off)
([HUEDevice4] eq "on") (set HUEDevice4 off)


vielen Dank schon mal.....

Titel: Antw:Device mit Blub im bestimmten Zeitfenster nicht schalten
Beitrag von: Amenophis86 am 04 Dezember 2017, 08:37:38
Eins nach dem anderen. Fangen wir mit der ersten Sache an. Poste doch mal ein list deines (ich schätze mal DOIF) und nicht nur Auszüge für das Flurlicht. Dann kann man dir auch wirklich helfen. Dann die Frage was hast du bereits selbst versucht um die zu zeigen warum es nicht geht und ein besseres Verständnis bei dir für das nächste Mal zu zeigen.
Titel: Antw:Device mit Blub im bestimmten Zeitfenster nicht schalten
Beitrag von: DeeSPe am 04 Dezember 2017, 08:39:38
Mich würde grundlegend mal interessieren was mit "Blub" gemeint ist!?

Gruß
Dan
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 04 Dezember 2017, 08:49:22
Hallo zusammen,

so erstmal aufgeräumt und ein neues Thema erstellt, dann kann man das besser auseinander halten. Hier erstmal die list meines DIOF (Blub ist der Name sorry hab mich da ein wennig verhäddert):

Readings
Device
HUEDevice1
2017-12-04 08:48:12
cmd
0
2017-12-04 08:51:22
cmd_event
set_cmd_1
2017-12-04 08:48:11
cmd_nr
1
2017-12-04 08:48:11
e_HUEDevice1_STATE
off
2017-12-04 08:48:12
error
condition c01: syntax error at (eval 22336) line 1, near ") on "
2017-12-04 08:48:12
state
initialized
2017-12-04 08:51:22
timer_01_c01
05.12.2017 08:00:00
2017-12-04 08:47:45
timer_02_c01
05.12.2017 06:00:00
2017-12-04 08:47:45
warning
condition c01: (Missing operator before on?)
2017-12-04 08:48:12


#Timer für Flur unten nach 10 Minuten ausschalten
define Blub DOIF ([HUEDevice1] eq "on") (set HUEDevice1 off)\
([HUEDevice6] eq "on") (set HUEDevice5 off)\
([HUEDevice4] eq "on") (set HUEDevice4 off)\
attr Blub do always
attr Blub room Zubehör
attr Blub wait 600:0


Versucht habe ich diese DEF:

([8:00-06:00] and [HUEDevice1] on)
   (set HUEDevice1 off)
DOELSE
   (set HUEDevice1 off)


bekomme dann aber diese log.Meldung
2017.12.04 08:48:12 1: PERL WARNING: Bareword found where operator expected at (eval 22336) line 1, near ") on"
2017.12.04 08:48:12 3: eval: Blub: warning in condition c01


Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Amenophis86 am 04 Dezember 2017, 08:55:47
1. Dein DOIF ist falsch. Spätestens ab ([HUEDevice6] eq "on") brauchst du ein DOLESEIF. Bitte nochmal mit der DOIF Syntax beschäftigen. Daher auch dieser Fehler:
error
condition c01: syntax error at (eval 22336) line 1, near ") on "


2. Sieht es aus, als ob du direkt in der fhem.cfg arbeitest, ich rate davon ab

3. Sollte dieses DOIF bisher richtig funktioniert haben, dann nur, weil du Glück hattest. Getriggert wird nur auf HUEDevice1, alle anderen werden zwar ausgeschaltet, aber es gibt immer einen Fehler. Siehe Punkt 1.

4. Ein Do Always wird nur gebraucht, wenn du bei einem erneuten drücken des Tasters (während die Lampe noch an ist) die Zeit von vorne beginnen soll zu zählen, bis ausgeschaltet werden soll.

5. Sobald dein DOIF richtig ist, machen wir mit der Zeitlichen Beschränkung weiter. Also erst mal hier das DOIF korrigieren und posten und dann geht's weiter :)
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 04 Dezember 2017, 09:23:25
Das do always wird benötigt, da die Lampen oft per Schalter (Spannung wird zur Lampe getrennt) aus und eingeschaltet werden. Ich versuche dann mal eine doelseif zu basteln......

Ich hoffe das der Ansatz mit DOELSEIF so richtig ist, eine Fehlermeldung im log habe ich nicht und die Lampen werden ausgeschaltet.
([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice1 off)
DOELSEIF
([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice4 off)
DOELSEIF
([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice5 off)
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: nils_ am 04 Dezember 2017, 10:20:08
Zitat von: Larusso am 04 Dezember 2017, 09:23:25
Das do always wird benötigt, da die Lampen oft per Schalter (Spannung wird zur Lampe getrennt) aus und eingeschaltet werden. Ich versuche dann mal eine doelseif zu basteln......

Ich hoffe das der Ansatz mit DOELSEIF so richtig ist, eine Fehlermeldung im log habe ich nicht und die Lampen werden ausgeschaltet.

([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice1 off)
DOELSEIF
([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice4 off)
DOELSEIF
([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice5 off)


das da dreimal das gleiche steht in der bedingung ist dir aber schon aufgefallen??
bedeutet, du benötigst kein DOELSEIF


deine erste lösung hat vermutlich nur funktioniert, weil du auf alle drei Lampen triggest und das DOIF dann folgende Anweisungen nacheinander ausführt.
([HUEDevice1] eq "on") (set HUEDevice1 off)([HUEDevice6] eq "on") (set HUEDevice5 off)([HUEDevice4] eq "on") (set HUEDevice4 off)
mit den funktionierenden Schaltbefehlen dazwischen, und den nicht-funktionierenden Vergleichs-"Anweisungen".



kurzum, bitte beschäftige dich mit der korrekten syntax, editiere NICHT in der fhem.cfg (auch wenn du dir vermeintlich sicher bist ;) ) !!!!
so sollte es auch laufen (fehlt evtl. noch das wait)

([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)

[/quote]
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Amenophis86 am 04 Dezember 2017, 11:01:06
Er hat nicht auf alle getriggert, sondern nur auf die erste.

Und wie Niels_ schrieb, wenn du alles in eine Abfrageklammer packst, dann brauchste kein DOELSEIF. Also entweder mit or arbeiten, oder mit verschiedenen Abfragen und DOELSEIF. Weiterhin musste du auch nicht jeden Befehl in eine Klammer packen (außer du willst verschiedene Wait-Zeiten pro Ausführung) und kannst alles im Ausführungsteil in eine Klammer packen.

Summa Summarum: Die CommandRef zu DOIF nochmals genau lesen und versuchen noch mehr zu verstehen :)
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: nils_ am 04 Dezember 2017, 11:04:20
Zitat von: Amenophis86 am 04 Dezember 2017, 11:01:06
Er hat nicht auf alle getriggert, sondern nur auf die erste.
ja stimmt.
ich hätte schreibe sollen: "...nur funktioniert, weil du versucht hast auf alle drei Lampen zu triggern und das DOIF dann...."

Zitat von: Amenophis86 am 04 Dezember 2017, 11:01:06
Und wie Niels_ schrieb, ....
immer dieses "e"  ;D ;D  :-* :-*
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Amenophis86 am 04 Dezember 2017, 11:22:25
mea culpa ;)
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: nils_ am 04 Dezember 2017, 11:29:30
Zitat von: Amenophis86 am 04 Dezember 2017, 11:22:25
mea culpa ;)

kein problem.
bin ich gewohnt, es gibt halt bei schreibweisen :)

und auch hier im forum sind ja einige "ni(e)ls" unterwegs ;)
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: doman75 am 04 Dezember 2017, 11:39:10
and ![?06:00-08:00]       mit dieser Und Verknüpfung schließt du die Zeit zwsichen zwischen 06:00 und 08:00 Uhr aus
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: doman75 am 04 Dezember 2017, 11:40:43
komplett  wäre dein Blub für HUEDevice1 dann so

#Timer für Flur unten nach 10 Minuten ausschalten
define Blub DOIF ([HUEDevice1] eq "on" and ![?06:00-08:00]) (set HUEDevice1 off)\
attr Blub do always
attr Blub room Zubehör
attr Blub wait 600:0
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 04 Dezember 2017, 11:57:55
Danke für die Info,

kann ich die Abfrage dann so lösen, wenn ich in der Woche zwischen 6Uhr und 8Uhr die Lampen nicht nach 10min. ausschalten möchte? Am Samstag und Sonntag sollen die Lampen immer nach 10min. aus geschaltet werden.

([08:00-06:00|Mo Di Mi Do Fr][HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)
DOELSE
([Sa So][HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on") (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)


In welchem Zusammenhang wäre hier denn eine ELSEIF Verwendung notwendig?
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 04 Dezember 2017, 12:07:13
hmmmm die Überlegung oben ist wohl auch nicht richtig. Es gibt ja viele Möglichkeiten das zu lösen. Denke wenn ich den Ansatz des herausnehmen der Zeit nutze müsste dieser Code jetzt hoffentlich richtig sein......falsch gedacht wenn ich das teste ob die Lampen ausgehen auserhalb des Zeitfensters, bleiben sie an

([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" and ![?06:00-08:00|Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)



Hier nochmal eine andere Überlegung bei der sich die Lampen aktuell ausschalten, ist nur die Frage ob sie dann morgen früh zwischen 6 und 8Uhr anbleiben und am Samstag und Sonntag auch zwischen 6 und 8Uhr ausgeschaltet werden.

([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" and [08:00-06:00|Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)

ist dem System in dem Befehl klar das von 8Uhr morgens bis zum nächsten Tag um 6Uhr morgens die Lampen aus geschaltet werden sollen?
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Amenophis86 am 04 Dezember 2017, 13:26:02
bei and und or solltest du immer darauf achten, dass hier vielleicht weitere Klammern gesetzt werden müssen.

Deine letzten beiden Beispiele sind der Lösung sehr nahe. Als Tipp noch doch einfach die aktuelle Uhrzeit / aktuellen Tag und schaue was passiert. Kaputt wirst du nix machen.

@doman75: Ich halte es für kontraproduktiv, wenn wir versuchen ihm das Angeln beizubringen und du ihm direkt den Fisch gibst.
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: doman75 am 04 Dezember 2017, 14:25:50
Ich bin halt kein Angler, und da habe ich ihn von Anfänger zu Anfänger mit dem Fisch geholfen, weil ich mir hier im Forum schon öfter gewünscht hätte, einen Fisch zu bekommen, anstatt mich an der Angel verhungern zu lassen.
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Jogi am 04 Dezember 2017, 17:24:16
Zitat von: doman75 am 04 Dezember 2017, 11:39:10
and ![?06:00-08:00]       mit dieser Und Verknüpfung schließt du die Zeit zwsichen zwischen 06:00 und 08:00 Uhr aus
Das finde ich sehr spannend, weil ich gerade in ähnliches Problem habe und es sehr umständlich gelöst habe. Das hier sieht viel einfacher aus.
Allerdings will ich kein Zeitfenster ausschliessen, sondern NUR in einem bestimmten Zeitfenster schalten.
Bis jetzt habe ich das mit zwei at (eins für ein und eins für aus) gelöst. Aber, wie schon gesagt, diese Lösung sieht besser aus.
Leider verstehe ich den Syntax von "![?.." nicht und habe auch nichts dazu gefunden.
Wie würde die Gleichung lauten, wenn NUR in dem Zeitfenster geschaltet werden soll?
Ich nehme gerne direkt den Fisch, bin aber auch bereit die Angel auszupacken, wenn mir jemand sagt in welchem Teich ich angeln muss, sprich, wo oder wonach ich suchen muss, um mich mit solchen Funktionen zu beschäftigen.
Leider haben meine Suchen im Wiki oder Google nichts gebracht, aber vielleicht habe ich falsch gesucht.

Jogi 
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Damian am 04 Dezember 2017, 17:38:16
Bei DOIF kannst du Zeitintervalle in eckigen Klammern angeben siehe: http://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen

Das hast du bestimmt schon gefunden ;)

Nun zu Hintergrundinformationen zu ! und ?

! gehört zu Perl und steht für Verneinung. Kombiniert mit einem Zeitintervall, was nichts anders ist als eine Perlfunktionen (siehe list des DOIFs), wird dieses verneint - dazu musste ich noch nicht einmal etwas programmieren ;)

? gehört zum Syntaxumfang von DOIF, kommt es als erstes nach der eckigen Klammer vor, bedeutet es, dass die folgende Angabe in den eckigen Klammern, hier also das Zeitintervall, das DOIF nicht triggern soll. Wenn man kein Fragezeichen bei einem Zeitintervall angibt wird das Modul bei der Anfangszeit wie bei der Endzeit geweckt, aber hier wiederhole ich mich, denn das steht ja im obigen Link.







Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 05 Dezember 2017, 06:54:23
([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" and [08:00-06:00|Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)

wenn ich dort den Code so ändere kommt wrong time stamp

([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" and [08:00-06:00/Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)

hinten bei den Wochten was dugeschrieben hast :

"Autor: Amenophis86
« am: Gestern um 13:26:02 » Zitat einfügen
bei and und or solltest du immer darauf achten, dass hier vielleicht weitere Klammern gesetzt werden müssen.

Deine letzten beiden Beispiele sind der Lösung sehr nahe. Als Tipp noch doch einfach die aktuelle Uhrzeit / aktuellen Tag und schaue was passiert."
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Amenophis86 am 05 Dezember 2017, 07:12:43
wenn du es so schreibst, schaltet dein DOIF aktuell in folgenden Fällen:
- HUEDevice1 on
- HUEDevice4 on
- HUEDevice5 on UND 08:00-06:00|Mo Di Mi Do Fr

Soll heißen, dass and bezieht sich NUR auf HUEDevice5. Ich gehe davon aus, dass die Zeit sich aber auf alle beziehen soll. Aus diesem Grund solltest du es wie folgt schreiben:
( ([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" ) and [08:00-06:00|Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)
Man beachte die extra Klammer um die OR-Anweisungen.

Diese Variante dürfte auch keinen Fehler auswerfen eigentlich. Ist allerdings nicht getestet.

Edit:
Jetzt verstehe ich warum du den / gemacht hast. Ich meinte damit nicht, dass du den | durch einen / ersetzen solltest. Ich meinte, dass du zum testen deines DOIF doch einfach die Zeitangaben auf den aktuellen Tag und die aktuelle Uhrzeit anpassen kannst um zu schauen, ob es schaltet. Soll heißen du würdest jetzt zum Testen die Zeit auf [07:00-08:00|Di] setzen und schauen, ob es klappt, wenn du die Lampen schaltest. Und dann auf [06:00-07:00|Di] setzen und dann schauen, ob es nicht reagiert.
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 05 Dezember 2017, 07:36:19
Danke für den Hinweis, wühle mich gerade seit ein paar Tagen durch das Perl wirwar bin da recht unbeholfen und versteh die Zusammenhänge noch nicht immer richtig. Ist es denn so das Erkannt wird das ich von 8Uhr bis 6Uhr die Lampen nach Zeit x ausgehen soll da dort ja von 8Uhr über 24Uhr ein neuer Tag begonnen wird bis 6Uhr morgens?
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Amenophis86 am 05 Dezember 2017, 09:44:39
Ja, wird es. Das siehst du im DOIF selbst in den Readings. Schau dir mal die Zeiten an. Übrigens würde ich vor die Uhrzeit noch ein ? setzen, also [?08:00-06:00]. Das bewirkt, dass der Zeitraum geprüft wird, aber um 08:00 und 06:00 Uhr nicht das DOIF ausgelöst wird, sondern nur das Schalten der Lampen es auslöst.

Edit:
Eigentlich kannste das ? auch weglassen. Du willst ja, dass ab dann es auch geschaltet wird. Somit würde es auch Sinn machen, dass ab dann die Treppe geschaltet wird, wenn sie vergessen wurde auszuschalten.
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 05 Dezember 2017, 15:39:37
So dann werde ich mir das morgen früh mal anschauen wenn unsere Kurzen zur Schule fertig gemacht werden.

;)
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 06 Dezember 2017, 06:35:04
Hallo zusammen,

ich habe den nachfolgenden Code ausprobiert, aber die Lampen werden im angegebenen Zeitfenster trotzdem nach 10min ausgeschaltet. Hat noch jemand eine Idee warum das so ist? Im log wird mir kein Fehler angezeigt und wenn ich den doif initialisiere gibt es auch keine Fehlermeldung.

([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" and [?08:00-06:00|Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)

Die Lampen waren um 6.10Uhr an und gingen zehn Minuten später wieder aus.
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Amenophis86 am 06 Dezember 2017, 06:36:16
Mach mal ein List des Device.

Edit:
Meine Nachredner haben recht, dachte du hast Antwort #20 umgesetzt hast du aber nicht.
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: automatisierer am 06 Dezember 2017, 06:43:06
Zitat von: Amenophis86 am 05 Dezember 2017, 07:12:43
wenn du es so schreibst, schaltet dein DOIF aktuell in folgenden Fällen:
- HUEDevice1 on
- HUEDevice4 on
- HUEDevice5 on UND 08:00-06:00|Mo Di Mi Do Fr

Soll heißen, dass and bezieht sich NUR auf HUEDevice5. Ich gehe davon aus, dass die Zeit sich aber auf alle beziehen soll. Aus diesem Grund solltest du es wie folgt schreiben:
( ([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" ) and [08:00-06:00|Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)
Man beachte die extra Klammer um die OR-Anweisungen.

Diese Variante dürfte auch keinen Fehler auswerfen eigentlich. Ist allerdings nicht getestet.

Edit:
Jetzt verstehe ich warum du den / gemacht hast. Ich meinte damit nicht, dass du den | durch einen / ersetzen solltest. Ich meinte, dass du zum testen deines DOIF doch einfach die Zeitangaben auf den aktuellen Tag und die aktuelle Uhrzeit anpassen kannst um zu schauen, ob es schaltet. Soll heißen du würdest jetzt zum Testen die Zeit auf [07:00-08:00|Di] setzen und schauen, ob es klappt, wenn du die Lampen schaltest. Und dann auf [06:00-07:00|Di] setzen und dann schauen, ob es nicht reagiert.

Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: doman75 am 06 Dezember 2017, 06:47:28
Beachte doch einfach mal die Antwort 20 von Amenophis86.
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 06 Dezember 2017, 08:10:08
oh man, habe nach Backup einspielen die alte Variante noch in der Def gehabt.......................... Man so ein Mist, sehe vor lauter Bäumen........

Ich werde das so jetzt nochmal testen

( ([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" ) and ![?06:00-08:00|Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)

hab die Abfrage einfach mal von der Zeit ausgeschlossen wie vorher im Betreig erwähnt mit "!" mal sehen obs jetzt läuft.  ;D
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Jogi am 06 Dezember 2017, 19:49:30
Zitat von: Damian am 04 Dezember 2017, 17:38:16
Bei DOIF kannst du Zeitintervalle in eckigen Klammern angeben siehe: http://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen

Das hast du bestimmt schon gefunden ;)

Nun zu Hintergrundinformationen zu ! und ?

! gehört zu Perl und steht für Verneinung. Kombiniert mit einem Zeitintervall, was nichts anders ist als eine Perlfunktionen (siehe list des DOIFs), wird dieses verneint - dazu musste ich noch nicht einmal etwas programmieren ;)

? gehört zum Syntaxumfang von DOIF, kommt es als erstes nach der eckigen Klammer vor, bedeutet es, dass die folgende Angabe in den eckigen Klammern, hier also das Zeitintervall, das DOIF nicht triggern soll. Wenn man kein Fragezeichen bei einem Zeitintervall angibt wird das Modul bei der Anfangszeit wie bei der Endzeit geweckt, aber hier wiederhole ich mich, denn das steht ja im obigen Link.
Vielen Dank,
der Link hilft mir sehr weiter!
Titel: Antw:Device mit DOIF im bestimmten Zeitfenster nicht schalten
Beitrag von: Larusso am 08 Dezember 2017, 08:27:51
Hallo Community, vielen dank für eure Geduld  :D

Ich kann nun verkünden das ihr es geschaft habt, es funktioniert nun endlich......

Anbei noch einmal den letztendlich funktionierenden Code in meiner Def

( ([HUEDevice1] eq "on" or [HUEDevice4] eq "on" or [HUEDevice5] eq "on" ) and [?08:00-06:00|Mo Di Mi Do Fr]) (set HUEDevice1 off) (set HUEDevice4 off) (set HUEDevice5 off)

vielen vielen dank an alle .........