[gelöst]Device mit DOIF im bestimmten Zeitfenster nicht schalten

Begonnen von Larusso, 04 Dezember 2017, 08:08:19

Vorheriges Thema - Nächstes Thema

Larusso

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.....

nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Amenophis86

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.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

DeeSPe

Mich würde grundlegend mal interessieren was mit "Blub" gemeint ist!?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Larusso

#3
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


nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Amenophis86

#4
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 :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Larusso

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)
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

nils_

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]
viele Wege in FHEM es gibt!

Amenophis86

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 :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

nils_

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  :-* :-*
viele Wege in FHEM es gibt!

Amenophis86

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

nils_

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 ;)
viele Wege in FHEM es gibt!

doman75

and ![?06:00-08:00]       mit dieser Und Verknüpfung schließt du die Zeit zwsichen zwischen 06:00 und 08:00 Uhr aus

doman75

#12
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

Larusso

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?
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Larusso

#14
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?
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,