[gelöst]DOIF akzeptiert Argument nicht

Begonnen von JochenSi, 20 Februar 2021, 11:44:16

Vorheriges Thema - Nächstes Thema

JochenSi

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

laberlaib

#1
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
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

JochenSi

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

Sany

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!
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....