Hi,
ich stehe mal wieder auf dem Schlauch. Habe ein MQTT2 Device mit dem WLED Template angelegt. Das ganze lässt sich global auch gut steuern. Wie bekomme ich denn nur das in WLED angelegte 1. oder 2. Segment gesteuert? Segment 1 sind die LEDs 1 bis 159, Segment 2 160 bis 300.
Hier falls benötigt ein List meines Devices.
Internals:
CFGFN
CID WLED_0278f0
DEF WLED_0278f0
DEVICETOPIC MQTT2_WLED_0278f0
FUUID 6477c027-f33f-60ca-d535-2b0f7fe24ca13591
IODev Mosquitto2
LASTInputDev Mosquitto2
MSGCNT 53
Mosquitto2_MSGCNT 53
Mosquitto2_TIME 2023-05-31 23:58:28
NAME MQTT2_WLED_0278f0
NR 17348
STATE on
TYPE MQTT2_DEVICE
OLDREADINGS:
READINGS:
2023-05-31 23:58:28 LWT online
2023-05-31 23:58:28 api <?xml version="1.0" ?><vs><ac>255</ac><cl>255</cl><cl>13</cl><cl>37</cl><cs>0</cs><cs>0</cs><cs>0</cs><ns>0</ns><nr>1</nr><nl>0</nl><nf>1</nf><nd>60</nd><nt>0</nt><fx>0</fx><sx>213</sx><ix>87</ix><fp>46</fp><wv>0</wv><ws>0</ws><ps>0</ps><cy>0</cy><ds>WLED</ds><ss>0</ss></vs>
2023-05-31 23:49:27 attrTemplateVersion 20200522 or prior
2023-05-31 23:58:28 brightness 255
2023-05-31 23:58:11 effect 0
2023-05-31 23:58:11 intensity 87
2023-05-31 23:58:11 palette 46
2023-05-31 23:58:28 rgb FF0D25
2023-05-31 23:58:11 speed 213
2023-05-31 23:58:28 state on
Attributes:
IODev Mosquitto2
alias Indirekte Beleuchtung Decke
comment For questions about the use of different widgets for color selection see discussion at https://forum.fhem.de/index.php/topic,98880.msg995308.html
devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
eventMap /effect 0:Solid/effect 2:Breathe/effect 63:Pride/effect 48:Police/
genericDeviceType light
homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
icon hue_filled_iris
model wled_controller
readingList wled/0278f0/status:.* LWT
wled/0278f0/g:.* brightness
wled/0278f0/g:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }
wled/0278f0/c:.* { {"rgb"=>substr("$EVENT",1,6)} }
wled/0278f0/v:.* api
wled/0278f0/v:.* { $EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? return : {"speed"=>$1} : return; }
wled/0278f0/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? return : {"intensity"=>$1} : return }
wled/0278f0/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? return : {"palette"=>$1} : return }
wled/0278f0/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? return :{"effect"=>"$1"} : return }
room 60_Bad,autocreate
setList on:noArg wled/0278f0 on
off:noArg wled/0278f0 off
toggle:noArg wled/0278f0 t
rgb:colorpicker,RGB wled/0278f0/col #$EVTPART1
brightness:colorpicker,BRI,0,1,255 wled/0278f0
speed:colorpicker,BRI,0,1,255 wled/0278f0/api SX=$EVTPART1
intensity:colorpicker,BRI,0,1,255 wled/0278f0/api IX=$EVTPART1
palette:selectnumbers,0,1,46,0,lin wled/0278f0/api FP=$EVTPART1
effect:selectnumbers,0,1,101,0,lin wled/0278f0/api FX=$EVTPART1
loadPreset:selectnumbers,0,1,3,0,lin wled/0278f0/api PL=$EVTPART1
dimup:noArg wled/0278f0/api A=~10
dimdown:noArg wled/0278f0/api A=~-10
setStateList on off toggle
webCmd rgb:brightness:Solid:Breathe:Pride:Police
Vielen Dank aus Oberhausen
Hallo,
ich habe leider nicht die Erfahrung mit MQTT und WLED, aber in der doc steht die vollständigste Implementierung der APIs von WLED ist die von JSON. Via MQTT kann man auch ein JSON String senden (DOC (https://kno.wled.ge/interfaces/mqtt/)) [mqttDeviceTopic]/api
-> Send an API call (using the HTTP API or, since 0.11, JSON API syntax). You may omit the "win" and just send e.g. "FX=73"
Schau mal hier JSON API (https://kno.wled.ge/interfaces/json-api/) unter "Per-segment individual LED control".
Ich habe bei mir alle WLED Lampen mit HTTPMOD implementiert. Lass mich wissen, ob Du ein Beispiel brauchst.
Gruss
naja, ich hatte einen Anwedungsfall wo einzelne LEDs in einer anderen Farbe leuchten sollten, das ganze zeigt den Fortschritt meines Geschirrspülers in der Küche an, die roten LEDs wandern halt durch.
ich benutze dazu folgenden Befehl:
set $device seg 5,10 255,0,0
das heißt: LED 6 (es wird ab 0 gezählt) bis LED 11 auf Rot
Ich denke das kannst du so adaptieren .... wenn du es aber einfach haben willst, dann lege dir presets in der WLED-Oberfläche an, die kannst du dann mit
set $device preset X
aufrufen