FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: KnoPPerS am 02 Juli 2018, 22:21:41

Titel: Schalten in einem Zeitraum, Zeiten per Dummy definiert
Beitrag von: KnoPPerS am 02 Juli 2018, 22:21:41
Hallo,

ich stehe gerade mächtig auf dem Schlauch und das bereits seit Stunden.

Ich schalte derzeit einige Leuchten per Bewegungsmelder in einem bestimmten Zeitraum. Dieser Zeitraum soll nun Simpel über Dummy's definiert werden (quasi Frauensicher).

Mein derzeitiges Notify zum Schalten sieht so aus:
Bw_Flur2:dim.* { if ( (($hour >= 22 || $hour < 5)) && Value("rr_Bastian") eq "home" && Value("Bew_Automatik") eq "an" && Value("LED_Kuehlschrank") eq "off" ) { {fhem ("set LED_Kuehlschrank hue 45942 2")} {fhem ("define at_Bw_Flur2_KuecheA at +00:00:50 trigger Bw_Flur2_KuecheA")} } }

Nun hab ich 2 Dummy's definiert, über welche man per Schieberegler den Zeitraum definieren kann:

Ich bekomme es allerdings einfach nicht hin, den Zeitraum mithilfe der Dummy korrekt festzulegen. Meine jetzige, nicht lauffähige Lösung sieht so aus:


Bw_Flur2:dim.* { if ( (({Value("Zeit_BWLicht_An")} || {Value("Zeit_BWLicht_Aus")})) && Value("rr_Bastian") eq "home" && Value("Bew_Automatik") eq "an" && Value("LED_Kuehlschrank") eq "off" ) { {fhem ("set LED_Kuehlschrank hue 45942 2")} {fhem ("define at_Bw_Flur2_KuecheA at +00:00:50 trigger Bw_Flur2_KuecheA")} } }

Der Wert der Zeitdummy's sind korrekt


list Zeit_BWLicht_An

Internals:
   CFGFN     
   NAME       Zeit_BWLicht_An
   NR         13797
   STATE      23:20
   TYPE       dummy
   READINGS:
     2018-07-02 21:39:22   state           23:20
Attributes:
   room       Dashboard
   setList    state:time
   webCmd     state


FHEM Log

PERL WARNING: Odd number of elements in anonymous hash at (eval 4386095) line 1.2018.07.02 22:28:15 3 : eval: my $EVENT='dim100%';my $SELF='Bw_Flur2_Kueche';my $TYPE='FS20';my $NAME='Bw_Flur2';my $EVTPART0='dim100%';{ if ((({Value("Zeit_BWLicht_An")} || {Value("Zeit_BWLicht_Aus")})) && Value("rr_Bastian") eq "home" && Value("Bew_Automatik") eq "an" && Value("LED_Kuehlschrank") eq "off" ) { {fhem ("set LED_Kuehlschrank hue 45942 2")} {fhem ("define at_Bw_Flur2_KuecheA at +00:00:50 trigger Bw_Flur2_KuecheA")} } }2018-07-02 22:28:15 at at_Bw_Flur2_KuecheA Next: 22:29:05


Hab schon diverse Themen durch, leider aber keine Themen gefunden welche sich auf einen Zeitraum definieren.

Liebe Grüße
Bastian
Titel: Antw:Schalten in einem Zeitraum, Zeiten per Dummy definiert
Beitrag von: Ellert am 03 Juli 2018, 05:15:44
ZitatHab schon diverse Themen
Falls Du DOIF verwenden möchtest, geht es auch ohne Perl-Kenntnisse, s. https://fhem.de/commandref_DE.html#DOIF_Indirekten_Zeitangaben

Der Vergleich
(({Value("Zeit_BWLicht_An")} || {Value("Zeit_BWLicht_Aus")}))
ist nicht korrekt formuliert, letztlich verknüpfst Du 2 Zeichen Ketten mit ||.

Wenn Du {"22:30"||"05:00"} in der FHEM-Befehlszeile ausführst siehst Du das Problem.

{Value("Zeit_BWLicht_An")} versucht Perl als "anonymous hash" zu interpretieren und schlägt fehl weil die Syntax unvollständig ist.
Titel: Antw:Schalten in einem Zeitraum, Zeiten per Dummy definiert
Beitrag von: KnoPPerS am 04 Juli 2018, 12:34:17
Hey Ellert,

vielen Dank für deinen Hinweis. Ich habe mich gestern nun (endlich) mit der DOIF Funktion auseinandergesetzt. Schiebe ich schon seit langem vor mir her.

Ich habe es mithilfe der Zeitangabe umgesetzt bekommen ->

https://wiki.fhem.de/wiki/DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erl%C3%A4uterungen#Zeitangaben

Für alle, welche vor dem gleichen Problem stehen sollten hier meine funktionierende Lösung:

([Bw_Flur2:"dim100%"] and [rr_Bastian:state] eq "home" and [Bew_Automatik:state] eq "an" and [LED_Kuehlschrank:state] eq "off" and [?[Zeit_BWLicht_An]-[Zeit_BWLicht_Aus]]) ((set LED_Kuehlschrank hue 45942),(set LED_Kuehlschrank pct 75),(define at_Bw_Flur2_KuecheA at +00:00:50 trigger Bw_Flur2_KuecheA)) DOELSE (setstate Bw_Flur2 off)

Viele Grüße
Bastian

Titel: Antw:Schalten in einem Zeitraum, Zeiten per Dummy definiert
Beitrag von: Damian am 04 Juli 2018, 12:40:58
Wenn du deine ersten Schritte mit DOIF gemacht hast, dann kannst du auch gleich die entsprechenden DOIF-Features nutzen:
aus

((set LED_Kuehlschrank hue 45942),(set LED_Kuehlschrank pct 75),(define at_Bw_Flur2_KuecheA at +00:00:50 trigger Bw_Flur2_KuecheA))

besser definieren:

(set LED_Kuehlschrank hue 45942, set LED_Kuehlschrank pct 75)(trigger Bw_Flur2_KuecheA)

attr wait 0,50


Titel: Antw:Schalten in einem Zeitraum, Zeiten per Dummy definiert
Beitrag von: KnoPPerS am 04 Juli 2018, 13:17:46
Ja cool, wieder was gelernt.
Deinen Teil zum Zusammenfassen der zwei Befehle hab ich gleich übernommen. Danke!

Was ich nicht so ganz verstehe ist das Wait Attribut. Mit dem "at" Device setze ich ja den Timer zum Abschalten der Leuchte nach 50Sek. Wenn ich nun dein Wait Attribut setze, wirkt sich das doch ebenso auf den Einschaltbefehl aus, oder nicht?
Titel: Antw:Schalten in einem Zeitraum, Zeiten per Dummy definiert
Beitrag von: betateilchen am 04 Juli 2018, 14:08:53
Zitat von: KnoPPerS am 02 Juli 2018, 22:21:41
Dieser Zeitraum soll nun Simpel über Dummy's definiert werden (quasi Frauensicher).

Es gibt kein frauensicheres FHEM.
Titel: Antw:Schalten in einem Zeitraum, Zeiten per Dummy definiert
Beitrag von: KnoPPerS am 04 Juli 2018, 14:37:01
Zitat von: betateilchen am 04 Juli 2018, 14:08:53
Es gibt kein frauensicheres FHEM.

Stimmt, aber man kann versuchen es so Simpel wie möglich zu halten  :)