Hallo zusammen,
ich habe ein relativ einfaches DOIF erstellt was generell richtig funktioniert.
Nur beim Befehl an ein HUE-Device akzeptiert DOIF ein Argument nicht.
Hier der Code des DOIF:
([WB_Deckenlicht_Sw_01] eq "off" and ([d_WohnBuero_Licht] eq "LichtAn" or [WB_Deckenlicht_Btn_01:"Short.*"] or [WB_Deckenlicht_Btn_02:"Short.*"] or [FB0_Taste1:"Short.*"]))
(set WB_Deckenlicht_Sw_01 on)
(set HUEDevice2 on)
(set d_WohnBuero_Licht on)
(set HUEDevice2 xy 0.3333,0.3333 : 254)
DOELSEIF ([d_WohnBuero_Licht] eq "Aus" or [WB_Deckenlicht_Sw_01] eq "on" and ([WB_Deckenlicht_Btn_01:"Short.*"] or [WB_Deckenlicht_Btn_02:"Short.*"] or [FB0_Taste1:"Short.*"]))
(set WB_Deckenlicht_Sw_01 off)
(set HUEDevice2 off)
(set d_WohnBuero_Licht off)
DOELSEIF ([d_WohnBuero_Licht] eq "warmweiss" or [WB_Deckenlicht_Btn_01:"Long.*"] or [WB_Deckenlicht_Btn_02:"Long.*"] or [FB0_Taste1:"Long.*"])
(set WB_Deckenlicht_Sw_01 off)
(set HUEDevice2 on)
(set d_WohnBuero_Licht klein)
(set HUEDevice2 xy 0.438,0.3941 : 254)
und hier die Fehlermeldung die mir DOIF Tools ausgibt:
Zitat2021-02-20_11:32:17.930 di_WB_Licht error: set HUEDevice2 xy 0.3333: Unknown argument xy, choose one of off:noArg on:noArg toggle:noArg statusRequest:noArg pct:colorpicker,BRI,0,1,100 bri:colorpicker,BRI,0,1,254 rgb:colorpicker,RGB hue:colorpicker,HUE,0,1,65535 sat:slider,0,1,254 xy dimUp:noArg dimDown:noArg hueUp:noArg hueDown:noArg satUp:noArg satDown:noArg alert:none,select,lselect effect:none,colorloop rename scene:Energie#tanken,Entspannen,Frühlingsblüten,Gedimmt,Hell,Konzentrieren,Lesen,Nachtlicht,Nordlichter,Sonnenuntergang#Savanne,Tropendämmerung off-for-timer blink off-till intervals off-till-overnight on-for-timer on-till on-till-overnight attrTemplate:?,C_01_Eurotronic_SPZB0001_Spirit_ZigBee,D_01_Xiaomi_Aqara_MCCGQ11LM_Window_Door_Sensor,E_01a_Xiaomi_Aqara_WSDCGQ11LM_Temperature_Sensor,E_01b_Xiaomi_Aqara_WSDCGQ11LM_Pressure_Sensor,E_01c_Xiaomi_Aqara_WSDCGQ11LM_Humidity_Sensor,F_01a_Xiaomi_Aqara_RTCGQ11LM_Lightlevel_Sensor,F_01a_Xiaomi_Aqara_RTCGQ11LM_Motion_Sensor,G_01_Xiaomi_Aqara_WXKG02LM_Double_Switch 0.3333 : 254: Unknown command 0.3333, try help.
Wenn ich aber
set HUEDevice2 xy 0.438,0.3941 : 254
in der Befehlszeile eingebe wird der Befehl korrekt ausgeführt.
Was ist mein Fehler? Kann ich Argumente nicht so an DOIF übergeben und wenn ja wie muss es denn richtig sein?
Grüße und Danke
Jochen
Musst du das komma im Befehl vielleicht irgendwie escapen?
Ich glaube mit komma trennt man bei doif zwei Befehle.
Otto123:
https://forum.fhem.de/index.php/topic,110824.msg1049773.html#msg1049773
Vielen Dank für den Denkanstoß.
Der Befehl musste wie in dem Thread von Otto beschrieben so eingepackt werden (siehe letzte Zeile):
([WB_Deckenlicht_Sw_01] eq "off" and ([d_WohnBuero_Licht] eq "LichtAn" or [WB_Deckenlicht_Btn_01:"Short.*"] or [WB_Deckenlicht_Btn_02:"Short.*"] or [FB0_Taste1:"Short.*"]))
(set WB_Deckenlicht_Sw_01 on)
(set HUEDevice2 on)
(set d_WohnBuero_Licht on)
((set HUEDevice2 xy 0.3333,0.3333 : 254))
Danke und gute N8
Grüße Jochen
Hast Du da wait-timer zwischen den Befehlen im Ausführungsteil?
Fall nein, aus der cref:
ZitatDas Aufspalten einer kommagetrennten Befehlskette in eine Befehlssequenz, wie im obigen Beispiel, sollte nicht vorgenommen werden, wenn keine Verzögerungen zwischen den Befehlen benötigt werden. Denn bei einer Befehlssequenz werden Zwischenzustände cmd1_1, cmd1_2 usw. generiert, die Events erzeugen und damit unnötig FHEM-Zeit kosten.
dann könntest Du das zusammenschreiben:
(set WB_Deckenlicht_Sw_01 on, set HUEDevice2 on, set d_WohnBuero_Licht on, (set HUEDevice2 xy 0.3333,0.3333 : 254))
Viel Erfolg!