FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: AmunRe am 19 April 2016, 11:01:25

Titel: DOIF Problem
Beitrag von: AmunRe am 19 April 2016, 11:01:25
Ich habe das Modul DOIF im Einsatz, welches ich nutzen möchte um zu bestimmten Zeiten ein andere Farbe der Lampen zu erzeugen. Zusätzlich schaltet es auch noch mein Tablet ein aus. Hat aber mit dem Problem nichts zu tun.

Wenn ich es Definiere mit :
define di_licht22_6 DOIF ([F_bewegungsmelder:"motion"] AND [22:00-06:00]  AND [HUEDevice4] eq "off") (set tabletflur screen on)(set tabletflur openApp mobi.mgeek.TunnyBrowser)(set HUEDevice4 hue 43913)(set HUEDevice4 pct 35)(set tabletflur screenBrightness 100)(set tabletflur screen off)(set HUEDevice4 off)
attr di_licht22_6 do resetwait
attr di_licht22_6 room Flur,Befehle
attr di_licht22_6 wait 0,0,0,0,0,120,120


Bekomme ich immer eine Fehlermeldung des Moduls:
Zitaterror
perl error in condition: EventDoIf('F_bewegungsmelder',$hash,'motion',1) AND DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") AND InternalDoIf($hash,'HUEDevice4','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "off": syntax error at (eval 6263) line 1, near ") AND "
2016-04-19 10:54:42

Für mich sieht es aus als würde das Device HUEDevice4 nicht existieren, es ist aber da und funktioniert auch sonst.

Wo liegt hier mein Fehler?

Im Anhang ist ein Bild das HUEDevice4 wirklich existiert.
Titel: Antw:DOIF Problem
Beitrag von: CoolTux am 19 April 2016, 11:25:18

define di_licht22_6 DOIF ([F_bewegungsmelder:"motion"] AND [22:00-06:00]  AND [HUEDevice4] eq "off") (set tabletflur screen on, set tabletflur openApp mobi.mgeek.TunnyBrowser, set HUEDevice4 hue 43913, set HUEDevice4 pct 35, set tabletflur screenBrightness 100, set tabletflur screen off, set HUEDevice4 off)

Bist Du ein Klammerfetischist? Habe mir mal erlaubt das bisschen sauber zu schreiben.
Vielleicht geht es ja auch schon so.
Titel: Antw:DOIF Problem
Beitrag von: AmunRe am 19 April 2016, 11:32:11
Zitat von: CoolTux am 19 April 2016, 11:25:18

define di_licht22_6 DOIF ([F_bewegungsmelder:"motion"] AND [22:00-06:00]  AND [HUEDevice4] eq "off") (set tabletflur screen on, set tabletflur openApp mobi.mgeek.TunnyBrowser, set HUEDevice4 hue 43913, set HUEDevice4 pct 35, set tabletflur screenBrightness 100, set tabletflur screen off, set HUEDevice4 off)

Bist Du ein Klammerfetischist? Habe mir mal erlaubt das bisschen sauber zu schreiben.
Vielleicht geht es ja auch schon so.

Das geht so glaub ich nicht, weil ich die resetwait nutze.(on-for-timer mit DOIF) Aber Du hast Recht, es würde so besser aussehen:

define di_licht22_6 DOIF ([F_bewegungsmelder:"motion"] AND [22:00-06:00]  AND [HUEDevice4] eq "off") (set tabletflur screen on, set tabletflur openApp mobi.mgeek.TunnyBrowser, set HUEDevice4 hue 43913, set HUEDevice4 pct 35, set tabletflur screenBrightness 100)(set tabletflur screen off, set HUEDevice4 off)
attr di_licht22_6 wait 0,120


Problem bleibt aber das gleiche, er hat ein Problem mit dem HUEDevice.
Titel: Antw:DOIF Problem
Beitrag von: CoolTux am 19 April 2016, 11:44:48
Zitat von: AmunRe am 19 April 2016, 11:32:11
Das geht so glaub ich nicht, weil ich die resetwait nutze.(on-for-timer mit DOIF) Aber Du hast Recht, es würde so besser aussehen:

define di_licht22_6 DOIF ([F_bewegungsmelder:"motion"] AND [22:00-06:00]  AND [HUEDevice4] eq "off") (set tabletflur screen on, set tabletflur openApp mobi.mgeek.TunnyBrowser, set HUEDevice4 hue 43913, set HUEDevice4 pct 35, set tabletflur screenBrightness 100)(set tabletflur screen off, set HUEDevice4 off)
attr di_licht22_6 wait 0,120


Problem bleibt aber das gleiche, er hat ein Problem mit dem HUEDevice.

Doch das geht so.
Aus der Commandref
Zitat
Beispiel: Bei einer Befehlssequenz, hier: (set lamp1 on, set lamp2 on), soll vor dem Schalten von lamp2 eine Verzögerung von einer Sekunde stattfinden. Die Befehlsfolge muss zunächst mit Hilfe von Klammerblöcke aufgespaltet werden: (set lamp1 on)(set lamp2 on). Nun kann mit dem wait-Attribut nicht nur für den Beginn der Sequenz, sondern für jeden Klammerblock eine Verzögerung, getrennt mit Komma, definieren werden, hier also: wait 0,1. Damit wird lamp1 sofort, lamp2 nach einer Sekunde geschaltet. Die Verzögerungszeit bezieht sich immer auf den verherigen Befehl.

Aber nun zum eigentlichen Problem.

Nimm mal das HUE Device raus zum testen ob er dann immer noch meckert.
Titel: Antw:DOIF Problem
Beitrag von: AmunRe am 19 April 2016, 12:59:14
Zitat
Nimm mal das HUE Device raus zum testen ob er dann immer noch meckert.

Hab ich sah dann so aus:

Zitatperl error in condition: EventDoIf('F_bewegungsmelder',$hash,'motion',1) AND DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") : syntax error at (eval 7809) line 1, near ") AND "


Ich hab das Problem gelöst. Ich hab das "AND" groß geschrieben. Mit einem klein geschriebenen "and" läuft es durch. Danke für die Hilfe!
Titel: Antw:DOIF Problem
Beitrag von: CoolTux am 19 April 2016, 13:12:00
Schon interessant auf man nicht achtet. Ich habe das gar nicht gesehen. Gut zu wissen.