RGB und W trennen

Begonnen von stefan-dd, 20 Januar 2024, 22:12:08

Vorheriges Thema - Nächstes Thema

stefan-dd

Hallo ich möchte Tasmota zur RGB/W Steuerung verwenden. Wobei der RGB und W komplett unabhänig voneinander steuerbar sein sollen. (RGB Strip / LED Strahler)
Die Einstellungen in Tasmote habe ich so hinbekommen wie ich es wollte (SetOption37 128). Kann jeden Strang im Web Device ist einzeln ansteuern.

Nur in Fhem klappt es nicht so wie ich will. Das Template "tasmota_rgbw_led" passt am besten. Der RGB lässt sich steuern, und die Strahler funktionieren auch. Aber leider nur abwechselnd.
Wie bekommt ich es hin, dass auch beide Beleuchtungen gleichzeitig funktionieren.
Kann ich dem Fhem def nicht einfach sagen es soll nur Kanal 1-3 verwenden und den 4. beim schalten ignorieren?
Wie kann man die Kanäle von Fhem aus einzeln ansteuern?


defmod MQTT2_DVES_4909B1 MQTT2_DEVICE DVES_4909B1
attr MQTT2_DVES_4909B1 alias MQTT2_DVES_4909B1
attr MQTT2_DVES_4909B1 autocreate 0
attr MQTT2_DVES_4909B1 comment NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_4909B1/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
attr MQTT2_DVES_4909B1 devStateIcon {Color::devStateIcon($name,'rgb','rgb','pct','state')}
attr MQTT2_DVES_4909B1 genericDeviceType light
attr MQTT2_DVES_4909B1 icon light_control
attr MQTT2_DVES_4909B1 jsonMap POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:pct Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 Channel_5:0 HSBColor:0 Color:rgb
attr MQTT2_DVES_4909B1 model tasmota_rgbw_led
attr MQTT2_DVES_4909B1 readingList tele/tasmota_4909B1/LWT:.* LWT\
  tele/tasmota_4909B1/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  tele/tasmota_4909B1/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  tele/tasmota_4909B1/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
  tele/tasmota_4909B1/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  stat/tasmota_4909B1/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  stat/tasmota_4909B1/RESULT:.* { $EVENT =~ m,HSBColor...(\d+)\,(\d+)\,(\d+), ? $2 eq ReadingsVal($NAME,'saturation','unknown') ? return : { saturation=>$2 } : return }\
  stat/tasmota_4909B1/POWER1:.* state
attr MQTT2_DVES_4909B1 setList off:noArg cmnd/tasmota_4909B1/POWER1 0\
  on:noArg cmnd/tasmota_4909B1/POWER1 1\
  toggle:noArg cmnd/tasmota_4909B1/POWER1 2\
  rgb:colorpicker,RGB cmnd/tasmota_4909B1/COLOR\
  pct:colorpicker,BRI,0,5,100 cmnd/tasmota_4909B1/DIMMER\
  dimup:noArg { my $num=int((ReadingsNum($NAME,'pct',0)+4)/10)*10+10;; return qq {cmnd/tasmota_4909B1/Dimmer $num};; }\
  dimdown:noArg { my $num=int((ReadingsNum($NAME,'pct',0)+7)/10)*10-10;; return qq {cmnd/tasmota_4909B1/Dimmer $num};; }\
  white:colorpicker,BRI,0,5,100 { 'cmnd/tasmota_4909B1/COLOR '. sprintf("000000%02X",$EVTPART1*2.55) }\
  saturation:colorpicker,BRI,0,1,100 cmnd/tasmota_4909B1/HSBCOLOR2\
  Speed:colorpicker,BRI,0,1,20 cmnd/tasmota_4909B1/SPEED\
  Fade:uzsuSelect,ON,OFF cmnd/tasmota_4909B1/FADE $EVTPART1\
  mode:selectnumbers,0,1,4,0,lin cmnd/tasmota_4909B1/SCHEME
attr MQTT2_DVES_4909B1 setStateList on off toggle
attr MQTT2_DVES_4909B1 webCmd pct:white:rgb
attr MQTT2_DVES_4909B1 webCmdLabel Helligkeit\
:Weiss\
:Farbe:

setstate MQTT2_DVES_4909B1 on
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:31 BootCount 66
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Channel1 0
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Channel2 0
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Channel3 0
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Channel4 100
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:21 DeviceName Tasmota
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:23 Emulation 0
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:21 FriendlyName1 Tasmota
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:21 FriendlyName2
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:21 FriendlyName3
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:22 FriendlyName4
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:22 FriendlyName5
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:22 FriendlyName6
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:22 FriendlyName7
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:23 FriendlyName8
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Heap 25
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:31 Hostname tasmota-4909B1-2481
setstate MQTT2_DVES_4909B1 2024-01-18 06:35:29 IODev MQTT_Server
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:31 IPAddress 192.168.1.204
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:31 LWT Online
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 LoadAvg 99
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 MqttCount 1
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:31 RestartReason Software/System restart
setstate MQTT2_DVES_4909B1 2024-01-20 21:39:34 SaveData on
setstate MQTT2_DVES_4909B1 2024-01-20 21:40:58 Scheme 4
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:21 SetOption128 on
setstate MQTT2_DVES_4909B1 2024-01-20 21:39:34 SetOption26 on
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:20 SetOption3 on
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Sleep 10
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 SleepMode Dynamic
setstate MQTT2_DVES_4909B1 2024-01-20 21:44:57 Speed 8
setstate MQTT2_DVES_4909B1 2024-01-20 21:39:33 StateText1 off
setstate MQTT2_DVES_4909B1 2024-01-20 21:39:33 StateText2 on
setstate MQTT2_DVES_4909B1 2024-01-20 21:39:33 StateText3 toggle
setstate MQTT2_DVES_4909B1 2024-01-20 21:39:34 StateText4 hold
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Time 2024-01-20T21:58:34
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Uptime 0T00:10:09
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 UptimeSec 609
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:20 WebPassword ****
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:31 WebServerMode Admin
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_AP 1
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_BSSId DC:39:6F:E8:F2:34
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_Channel 1
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_Downtime 0T00:00:03
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_LinkCount 1
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_Mode 11n
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_RSSI 84
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_SSId Airport
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 Wifi_Signal -58
setstate MQTT2_DVES_4909B1 2024-01-20 21:39:33 attrTemplateVersion 20220228
setstate MQTT2_DVES_4909B1 2024-01-20 21:45:03 dimdown set dimdown
setstate MQTT2_DVES_4909B1 2024-01-20 21:45:21 dimup set dimup undefined
setstate MQTT2_DVES_4909B1 2024-01-20 21:40:57 mode set 4
setstate MQTT2_DVES_4909B1 2024-01-20 21:45:09 pct 90
setstate MQTT2_DVES_4909B1 2024-01-20 21:58:34 rgb 000000FE
setstate MQTT2_DVES_4909B1 2024-01-20 21:48:31 state on
setstate MQTT2_DVES_4909B1 2024-01-20 21:52:00 white set white 100

frober

Schaue mal in die Konsole von Tasmota nach dem Schalten.
Die Kanäle sollten getrennt sein z.B. POWER1, POWER2,...

Damit kannst du die setList erweitern.

Du kannst das Device dann auch kopieren und für RGB, bzw. W separat anpassen.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

stefan-dd

Das ist schon richtig und klar. Mit den unteren 4 Zeilen kann ich die Farben einzeln ansteuern. Das funktioniert.
Wenn ich aber mit der Zeile 3 "rgb" eine Farbe auswähle geht der Kanal 4 aus. Da immer mit der Kanal 4 auf 00 mit gesetzt wird. Somit bekomme ich keine Trennung.

rgb FFFFFF00

off:noArg cmnd/tasmota_4909B1/POWER4 0
  on:noArg cmnd/tasmota_4909B1/POWER4 1
  rgb:colorpicker,RGB cmnd/tasmota_4909B1/COLOR

  white:colorpicker,BRI,0,5,100 cmnd/tasmota_4909B1/Channel4
  rot:colorpicker,BRI,0,5,100 cmnd/tasmota_4909B1/Channel1
  blau:colorpicker,BRI,0,5,100 cmnd/tasmota_4909B1/Channel3
  gruen:colorpicker,BRI,0,5,100 cmnd/tasmota_4909B1/Channel2

frober

Du musst in die Tasmota Konsole schauen...
Wenn du es direkt in Tasmota einzeln steuern kannst, siehst du dort auch die Unterschiede der gesendeten Daten.

Evtl. musst du auch in Tasmota noch etwas konfigurieren (z.B. MQTT).
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Beta-User

Zitat von: stefan-dd am 21 Januar 2024, 11:11:48Somit bekomme ich keine Trennung.
In einem Device ist das mit der Trennung eh' schwierig. Wenn du effektiv 4 Leuchten ansteuern willst, solltest du ein "split"-Modell andenken und für jede Leuchte eine eigene MQTT2_DEVICE-Instanz anlegen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files