[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht

Begonnen von stefanru, 22 März 2019, 21:16:26

Vorheriges Thema - Nächstes Thema

stefanru

Hi,

ich versuche gerade WLED per MQTT anzusprechen (https://github.com/Aircoookie/WLED/wiki/MQTT).
Das funktioniert auch soweit ich in rgb #hexwert gebe.
Geliefert wird von WLED auch wieder #hexwert.

Nun wollte ich gern den Colorpicker verwenden. Der schein nur hexwert zu liefern.
Ich habe mich in den mqtt2.templates umgesehen und da bin ich bei zigbee auch fündig geworden und habe etwas in dieser Art gefunden:
  hex:colorpicker,HEX,0,15,255 BASE_TOPIC/DEV_ID/set {"color":{"$EVTPART0":"#$EVTPART1"}}
Das habe ich versucht für mein Device in
  rgb:colorpicker,HEX  wled/TestLED/col {"#$EVTPART1"}
anzupassen. Leider funktioniert das nicht.

Kann mir jemand bitte auf die Sprünge helfen?

Das List meines MQTT Devices, funktionsfähig ohne Colorpicker sieht so aus:
Internals:
   CID        a020a621c6c3
   DEF        a020a621c6c3
   DEVICETOPIC MQTT2_a020a621c6c3
   FHEM_MQTT2_MSGCNT 16
   FHEM_MQTT2_TIME 2019-03-22 21:13:47
   FUUID      5c93e232-f33f-0c45-f528-70f8b16469d9e705
   IODev      FHEM_MQTT2
   LASTInputDev FHEM_MQTT2
   MSGCNT     16
   NAME       MQTT2_a020a621c6c3
   NR         1213
   STATE      rgb
   TYPE       MQTT2_DEVICE
   OLDREADINGS:
   READINGS:
     2019-03-22 21:13:47   pct             127
     2019-03-22 21:13:47   rgb             #FF9F99
     2019-03-22 21:13:47   state           rgb
Attributes:
   IODev      FHEM_MQTT2
   devStateIcon {Color::devStateIcon( $name, "rgb" );}
   readingList a020a621c6c3:wled/TestLED/g:.* pct
a020a621c6c3:wled/TestLED/c:.* rgb
   room       MQTT2_DEVICE
   setList    rgb wled/TestLED/col
pct wled/TestLED


Gruß und Danke,
Stefan


Beta-User

Versuch's mal mit
rgb:colorpicker,HEX  wled/TestLED/col #$EVTPART1

Erläuterung: zigbee&Co wollen die Anweisungen als JSON verpackt. Das scheint bei dir nicht erforderlich zu sein. Das ist aber ausdrücklich eine Annahme und kann auch falsch sein. Solltest du dann noch was brauchen, wäre es hilfreich, wenn du eine komplette Sendeanweisung liefern könntest.
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

stefanru

Hi Beta-User,
super das wars!

Vielen Dank für die Erklärung.

Gruß,
Stefan

f-zappa

Ich habe auch ein WLED-Objekt (ein umgebauter Leuchtspiegel aus den 60ern, sieht schweinegeil aus). Eine FHEM-Anbindung habe ich dafür noch nicht gebaut, weil mir "There is no support for authentication/encryption at this time" nicht wirklich behagt.
Inzwischen hat WLED aber auch eine JSON-API, die man bestimmt gut via HTTPMOD ansprechen kann (wenn man nicht gleich ein eigenes Modul bauen möchte).
Hat da vielleicht schon jemand etwas fertig?

Beta-User

@f-zappa:
Was spricht dagegen, das mit MQTT anzusprechen? Wenn ich das richtig deute, funktioniert das im Prinzip problemlos bei stefanru...

Wären genau 2 Devices: Ein MQTT2_SERVER (auch für anderes zu nutzen) und ein MQTT2_DEVICE.
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

f-zappa

Zitat von: Beta-User am 28 März 2019, 13:23:45
Was spricht dagegen, das mit MQTT anzusprechen? Wenn ich das richtig deute, funktioniert das im Prinzip problemlos bei stefanru...
Noch mal das Zitat: "There is no support for authentication/encryption at this time"
Ich muss meinen MQTT-Server dann für unauthentifizierte Zugriffe öffnen. Jeder darf dran, ohne Credentials angeben zu müssen. Das widerstrebt mir.

Beta-User

Ah ok, irgendwie hatte ich den Link zwischen dem MQTT2_SERVER und diesem Text noch nicht...

Könntest du diesem speziellen Client ein eigenes allowed gönnen?
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

stefanru

Hi,

hätte noch eine kleine Frage:
Das mit RGB senden geht nun super.
Leider ist es so das WLED in einem Topic die RGB Farbe liefert und in einem anderen kann ich sie setzen.

Also mit    
rgb:colorpicker,HEX wled/a020a621c6c3/col #$EVTPART1
setze ich zur Zeit die RGB Farbe.

Ändere ich sie nun an der Lampe direkt bekomme ich das über
a020a621c6c3:wled/a020a621c6c3/c:.* rgb
mitgeteilt.

Hier wird der Wert auch wieder mit # gesendet.
Leider kann damit der colorpicker wieder nix anfangen.
Kann man das # am Anfang beim Empfangen auch irgendwie wegschneiden?

Gruß und Danke,
Stefan

Beta-User

Das Wegschneiden sollte gehen, du brauchst aber "hinten" dann Perl:

Würde mal folgendes testen:
a020a621c6c3:wled/a020a621c6c3/c:.* {{"rgb"=>substr($EVENT,1,6)}}
Kann aber sein, dass du den substr erst in eine Variable packen mußt usw..

Bei der Gelegenheit:
Scheint ein Device zu sein, für den es noch kein attrTemplate gibt. Vielleicht magst du was beisteuern? Wenn du Hilfe benötigst, würde mich neben ein paar Infos zum Gerät selbst eine RAW-Definition hier weiterbringen, optimalerweise mit den unveränderten default-Topic-Strukturen.
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

stefanru

Hi Beta-User,

super hat geklappt.
Natürlich, sehr gerne steuer ich ein attrTemplate bei.

Muss das aber erstmal zum laufen bringen. An / Aus fehlt mir noch.
Sollte gehen in dem man on/off an das main topic sendet.

Ich melde mich bei fragen oder wenn ich es soweit zusammen habe.

Ansteuern tue ich einen ESP8622 auf dem WLED läuft:
https://github.com/Aircoookie/WLED/wiki/MQTT

WLED ist ziemlich gut für RGB Stripes WS2812.

Gruß,
Stefan


Sharky69

Hallo Stefan,

ich habe auch eine WS218B-LED-Streifen mit der WLED-Software ausgestattet. Läuft sehr gut über das Webinterface. Allerdings habe ich es bisher noch nicht in FHEM integriert. Deswegen wäre ich sehr dankbar für Deine Unterstützung. Kannst Du vielleicht Dein Template mit einer kurzen Anleitung posten, auch wenn es noch nicht ganz perfekt ist?
Da wäre ich Dir sehr dankbar!

LG

Michael

projectsun

Hallo,

ich würde mich auch über ein template freuen. Helligkeit setzen klappt, on/off senden bewirkt nur einen toggle und RGB macht mir nur schwarz, also aus
Zentrale Ubuntu, Rpi B+ mit Busware 868 CUL ser2net, Rpi 2 an Aquarium mit DS18B20, und S0Counter, Rpi 3 mit nanoCUL 433 und 868 ser2net, 7x Revolt NC-5462, 1x miniCUL WLAN, 3x IT-1000, 6x ELRO AB440, KS300, EM1000-HSM, EM1000-WZ, FHT80B, 5x FHT8v2, 20x Nodemcu mit Sensoren, 6x Echo, Sonos

Beta-User

Wenn jemand ein list (bitte nur mit dem, was funktioniert bzw. Hinweisen, was ggf. nicht) beitragen könnte, wäre das schon mal hilfreich. Die Kommandos an sich scheinen (bis auf den col-Teil) recht einfach zu sein.

Allerdings steht da auf der Seite "MQTT-Interface wird grade überarbeitetet (breaking change)". Das hat demnach eher vorläufigen Charakter...
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

stefanru

Hi,

sorry ich war eine Zeitlang nicht mehr hier.
Habe jetzt erst gesehen dass hier Interesse besteht.

Ich bin sehr zufrieden mit der MQTT implementierung, mittlerweile läuft es super stabil.

Ich weiß leider nicht wie ich so ein attrTemplate aus meinen Daten erstellen kann.

Hier erstmal ein List in dem alles drinsteht. Bei Gelegenheit schaue ich mal wie ich ein attrTemplate erzeugen kann.
Internals:
   CID        a020a621c6c3
   DEF        a020a621c6c3
   DEVICETOPIC KuechenLicht
   FUUID      5cd1d0d2-f33f-0c45-e918-02b2175584076a07
   IODev      myMQTT2Client
   LASTInputDev myMQTT2Client
   MSGCNT     1286
   NAME       KuechenLicht
   NR         1231
   STATE      brightness
   TYPE       MQTT2_DEVICE
   myMQTT2Client_MSGCNT 1286
   myMQTT2Client_TIME 2019-11-21 08:08:22
   READINGS:
     2019-11-21 08:08:22   api             <?xml version="1.0" ?><vs><ac>0</ac><cl>255</cl><cl>191</cl><cl>0</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>75</sx><ix>128</ix><fp>0</fp><wv>-1</wv><ws>0</ws><md>1</md><cy>0</cy><ds>Kuechenlicht</ds></vs>
     2019-08-31 21:00:06   bewegung        0
     2019-11-21 08:08:22   brightness      0
     2019-11-21 08:08:22   rgb             FFBF00
     2019-11-13 01:14:50   state           brightness
Attributes:
   IODev      myMQTT2Client
   devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" );}
   group      Licht
   icon       hue_filled_iris
   readingList myMQTT2Client:wled/kuechenlicht/g:.* brightness
myMQTT2Client:wled/kuechenlicht/c:.* {{"rgb"=>substr("$EVENT",1,6)}}
myMQTT2Client:wled/kuechenlicht/v:.* api
   room       EG,MQTT2_DEVICE
   setList    rgb:colorpicker,RGB wled/kuechenlicht/col #$EVTPART1
brightness:colorpicker,BRI,0,1,255 wled/kuechenlicht
status:on,off,t wled/kuechenlicht
   webCmd     rgb:brightness
   widgetOverride rgb:colorpicker,HSV

Beta-User

Danke für das list (für attrTemplate-Erstellung ist RAW tendenziell einfacher, hätte ich deutlicher sagen sollen...).

Würde das mal "auf Verdacht" so einchecken, aber wenn es jemand testen würde und kurzfristig Rückmeldung geben, wenn was verbessert werden kann: Danke...

Versuchsweise Änderungen gg. das list:
- Das widgetOverride sollte jetzt direkt  in der readingList stecken
- getrennte on/off/toggle (?)-setter

#source post: https://forum.fhem.de/index.php/topic,98880.msg995308.html#msg995308
name:wled_controller
filter:TYPE=MQTT2_DEVICE
desc:To control a WLED device, see https://github.com/Aircoookie/WLED/wiki for details).
order:W_01
par:BASE_ID;BASE_ID typically is wled;{ AttrVal("DEVICE","readingList","") =~ m,([^:]+)[/][^/]+[/].*:, ? $1 : undef }
par:DEVNAME;Device name as configured;{ AttrVal("DEVICE","readingList","") =~ m,([^:]+)[/]([^/]+)[/].*:, ? $1 : undef }
par:ICON;ICON as set, defaults to hue_filled_iris;{ AttrVal("DEVICE","icon","hue_filled_iris") }
attr DEVICE icon ICON
attr DEVICE setList\
  on:noArg BASE_ID/DEVNAME status on\
  off:noArg BASE_ID/DEVNAME status on\
  toggle:noArg BASE_ID/DEVNAME status t\
  rgb:colorpicker,HSV BASE_ID/DEVNAME/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME
attr DEVICE readingList \
  BASE_ID/DEVNAME/g:.* brightness\
  BASE_ID/DEVNAME/c:.* {{"rgb"=>substr("$EVENT",1,6)}}\
  BASE_ID/DEVNAME/v:.* api
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr DEVICE webCmd rgb:brightness
attr DEVICE model wled_controller
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