FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: stefanru am 22 März 2019, 21:16:26

Titel: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 22 März 2019, 21:16:26
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

Titel: Antw:MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 22 März 2019, 22:28:49
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.
Titel: Antw:MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 22 März 2019, 23:51:32
Hi Beta-User,
super das wars!

Vielen Dank für die Erklärung.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: f-zappa am 28 März 2019, 13:18:55
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?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 28 März 2019, 13:23:45
@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.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: f-zappa am 28 März 2019, 13:36:11
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.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 28 März 2019, 13:41:09
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?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 12 April 2019, 22:38:42
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
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 13 April 2019, 10:37:33
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.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 13 April 2019, 14:37:40
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

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Sharky69 am 23 Oktober 2019, 17:03:54
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
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: projectsun am 13 November 2019, 00:50:42
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
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 15 November 2019, 07:25:57
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...
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 21 November 2019, 18:49:20
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
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 23 November 2019, 12:34:30
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
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 23 November 2019, 21:02:40
Hi Beta-User,

ich teste das sehr gerne.
Habe gerade ein Update gemacht aber noch kein Template gefunden.

Gib mal bescheid wenn du es fertig hast dann teste ich es mit meinen WLEDs.
Habe gerade alle auf die neueste Version gehoben.

P.S.: Hier ist die MQTT beschreibung von Wled. Ist aber mittlerweile etwas outdated. Es geht mittlerweile auch mit secure connection.

Gruß und Danke,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 24 November 2019, 09:03:09
Hi Stefan,

die Frage war eigentlich, ob es getestet werden kann vor der Verteilung via update ;D .

Zum Testen findest du unter https://wiki.fhem.de/wiki/AttrTemplate#Eigene_Templates_entwickeln (https://wiki.fhem.de/wiki/AttrTemplate#Eigene_Templates_entwickeln) eine kurze Anleitung mit weiteren Links.

Sollte in deinem letzten Post eigentlich ein Link sein?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 24 November 2019, 11:21:02
Hi Beta-User,

:-) jetzt verstehe ich erst. Dein Post ist das attrTemplate. Da war ich ja voll auf dem schlauch gestanden.
Klar ich teste es und melde mich.

Ja ich wollte einen link mit rein hängen:
https://github.com/Aircoookie/WLED/wiki/MQTT
Wie gesagt leider zur Zeit nicht ganz aktuell.

Gruß,
Stefan

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 24 November 2019, 13:09:45
Ok habs ausprobiert.

Hast noch nen kleinen bug drin bei off steht am ende on, da muss auch off hin.
Ansonsten tut es, gefällt mir gut.

Hast du noch eine Idee wegen des colorpickers?
Im Device Overview tut es wie gewünscht. Aber wenn man RGB bei set auswählt und dort etwas einstellt kommt folgende Meldung:
fhemweb_colorpicker.js line 85:
Uncaught TypeError: cmd is not a function

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 24 November 2019, 13:24:33
Sorry wg. dem off, das korrigiere ich direkt...

Was den Colorpicker angeht: Funktioniert das, wenn man das via widgetOverride einstellt wie in deinem List?
(Wenn auch da ein Bug ist, sollte sich das Rudi (?) mal ansehen (=> gesonderte Meldung bei FHEMWEB). MMn. sollte es keinen Unterschied machen, an welcher Stelle das widget definiert wird; wenn doch, wäre das ggf. was, was hier als "feature" von MQTT2_DEVICE beschrieben werden sollte...)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 24 November 2019, 13:40:26
Hi Beta-User,
nein das tut auch bei mir nicht. Gleicher Fehler.

Das Thema wird hier schon diskutiert, die Diskussion ist aber alt. Rudi war da auch schon kurz dabei.
https://forum.fhem.de/index.php?topic=90589.0

Irgendwie fehlen wohl parameter, mir ist aber nicht klar welche.

Danke und Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 24 November 2019, 22:53:02
Ich bin eigentlich nicht zustaendig, da colorpicker nicht meine Baustelle ist.
Wenn ich https://wiki.fhem.de/wiki/Color und die verlinkte Firmware-Seite anschaue, dann sollte setList die Zeile
rgb:colorpicker,RGB BASE_ID/DEVNAME/col #$EVTPART1
enthalten. Ohne Gewähr, da ich kein Geraet zum Testen habe.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 24 November 2019, 23:13:29
Hi Rudi,

ja das funktioniert.
Ist dann halt ein reiner RGB Colorpicker, und nicht der mit den 3 Schiebern von HSV.
Aber ich denke das passt auch besser das Gerät hat ja nur ein RGB reading.

Hier der angepasste Code Beta-User:

#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 off\
  toggle:noArg BASE_ID/DEVNAME status t\
  rgb:colorpicker,RGB 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


Den sollte man so einchecken können.
Richtig cool. Danke euch für eure Hilfe.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 25 November 2019, 09:44:22
Danke für die Rückmeldung, ist eingecheckt (=>via update ab morgen kurz vor 8:00 Uhr verfügbar).

@Rudi: Sorry, hatte irgendwie nicht auf dem Schirm, dass das (ggf. indirekt) zu Color.pm gehört...

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 25 November 2019, 10:36:07
Soweit ich es sehe, implementiert Color.pm "nur" eine Menge von Funktionen, die von einem Farbschema ins Andere konvertieren.
Das hier referenzierte Widget ist in fhemweb_colorpicker.js implementiert, und bei FHEMWEB dokumentiert (https://fhem.de/commandref_modular.html#widgetOverride)
Ich gehe davon aus, dass die HSV Variante ohne Parameter nicht fuer widgetOverride vorbereitet ist, auf die Schnelle konnte ich aber nicht die Ursache finden.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 25 November 2019, 11:00:31
Hmm, wie auch immer, evtl. sollte man den alten Thread reaktivieren oder was neues dazu starten.

(Das betrifft mich aber wenn überhaupt, dann nur indirekt, daher bleibe ich dazu schlicht still, auch wenn ich grundsätzlich die HUE-Slider-Lösung angenehmer zu bedienen finde wie den RGB-Picker. Von daher wäre das nicht schlecht, wenn man (wer auch immer) sowas (ohne die beiden anderen Slider) irgendwie auch für "klassische" RGB-Geräte bereitstellen könnte.
(Das ist aber nur aus der Erinnerung rekonstruiert, kann sein, dass ich dabei was übersehen hatte; das stammt aus der Zeit, als ich die templates für milight entwickelt habe, und da gab es dann den einfachen Ausweg nach hue und auch meine Kenntnisse in FHEMWEB-Design waren da noch andere...).)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: justme1968 am 25 November 2019, 14:08:22
ein widgetOverride mit <cmd>:colorpicker,HSV sollte problemlos funktionieren. gerade mit einem HUEDevice und dark style getestet.

was genau geht denn nicht? kannst du ein minimal beispiel mit einem dummy bauen bei dem das problem
zu sehen ist?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 25 November 2019, 15:00:13
Mitattr global logfile -
attr global modpath .
define w FHEMWEB 8083 global
define d dummy
attr d setList rgb:colorpicker,HSV
bekommt man die Fehlermeldung:
Zitatfhemweb_colorpicker.js line 85:
Uncaught TypeError: cmd is not a function
falls man mit einem der Regler herumspielt.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 25 November 2019, 15:09:55
dto., wenn man dasselbe via widgetOverride macht (das ist optisch dasselbe wie das MQTT2_DEVICE, um das es hier eigentlich geht, daher die weiteren Readings usw.):

defmod Test_rgb dummy
attr Test_rgb readingList brightness\
  rgb\
  api
attr Test_rgb setList on:noArg\
  off:noArg\
  toggle:noArg\
  rgb:colorpicker,RGB\
  brightness:colorpicker,BRI,0,1,255
attr Test_rgb widgetOverride rgb:colorpicker,HSV

Das Testsystem läuft auf einem strawberry-Perl@Win7
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: justme1968 am 25 November 2019, 15:11:28
ok. ich das ganze bisher immer nur als webcmd verwendet. da geht es.

nicht als set in der detail ansicht.

fix kommt nachher.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: justme1968 am 25 November 2019, 15:16:03
sollte im svn repariert sein.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 25 November 2019, 16:01:35
Danke für's fixen  :) .

@stefanru:
Soll dann in das template jetzt die HSV-Variante rein?

@justme1968:
Gäbe es die Option, sich noch einen reinen RGB-Slider zu wünschen? Wäre vermutlich zukünftig noch für  ein paar Geräte interessant, die RGB und PCT/brightness getrennt verwalten und in FHEMWEB dann für beides slider-widgets vertragen würden. (Das hier ist für MQTT-Gerät m.E. nicht ungewöhnlich)  (Oder übersehe ich mal wieder was?)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: justme1968 am 25 November 2019, 16:11:53
naja... ein rgb wert der nicht die helligkeit beeinflusst gibt es erst mal nicht. die helligkeit ist hier implizit immer mit drin.

rgb über einen einzigen slider geht nicht.

das wäre dann hue.

aber zusätzlich zum colorpicker für die farbe noch einen slider für die helligkeit anzuzeigen geht doch jetzt schon.

oder verstehe ich etwas falsch?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 25 November 2019, 16:22:40
Das mit der Helligkeit ist richtig ??? , Kopfkratz .

Worum es geht: In der Regel will man für farbige Leuchten zwei bzw. drei slider haben; zwei, wenn man Farbe und Helligkeit einstellen kann hat, drei, wenn man zusätzlich eine ct-Option hat.

Hier hat man einen separaten Slider für die Helligkeit, was demnach benötigt würde, wäre einer, der (auf derselben Helligkeitsstufe, die grade gilt) einen RGB-Wert liefert. Der HUE-Slider macht ja einen Zahlenwert, oder liege ich da falsch? Daher kann man den für diejenigen Geräte nicht verwenden, die den HUE-Wert nicht "verstehen".
(Für sowas wäre dann nur die Frage, wo der Slider den aktuellen Helligkeitswert hernimmt, und welche Skalierung für den gilt (100% oder 0-255); könnte man durch weitere Argumente lösen? EDIT: Oder den vorherigen RGB-Wert auswerten?)
Die Alternative wäre, den HUE-Slider anzubieten, und eine der Funktionen aus Color zu nutzen, um den Wert vor dem Senden zu beeinflussen; dann wird aber der Informationsfluss rückwärts gestört, weil was anderes zurückkommt, als gesendet wurde.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: justme1968 am 25 November 2019, 18:16:27
wenn das device ein set kommando nur für die helligkeit hat -> einfach den hier: https://wiki.fhem.de/wiki/Color#Helligkeit (https://wiki.fhem.de/wiki/Color#Helligkeit) verwenden.

wenn das device keinen eigenes set kommando hat und nur rgb kann -> den colorpicker im rgb oder hsv mode nutzen. da gibt es jeweils einen slider der nur die helligkeitsstufe komponente ändert.

wenn du noch etwas anderes meinst -> bitte noch mal beschrieben :(.


der dritte slider im rgb mode ist nicht für die farbtemperatur sonder für die sättigung. schau mal hier: https://wiki.fhem.de/wiki/Hue#Grundlagen_-_Farbmodelle (https://wiki.fhem.de/wiki/Hue#Grundlagen_-_Farbmodelle). das mischen von komponenten aus unterschiedlichen farbmodellen ist normalerweise nicht sinnvoll.


der slider für die farbtemperatur ist noch mal etwas anderes: https://wiki.fhem.de/wiki/Color#Farbtemperatur (https://wiki.fhem.de/wiki/Color#Farbtemperatur).

es gibt devices die automatisch den weiss anteil mit steuern wenn man eine farbe setzt und die automatisch in einen nur weiss modus wechseln wenn man die farbtemperatur explizit setzt (fast alle zigbee devices mit ausnahme der de geräte mit neurer firmware). hier kann man im frontend den colorpicker und den ct slider anzeigen aber beide beeinflussen sich automatisch gegenseitig durch die rückmeldung vom device.

und es gibt devices bei denen beides völlig getrennt ist. hier kann man beides anzeigen und getrennt voneinander bedienen.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 25 November 2019, 21:27:12
Na ja, was stefanru gerne haben wollte, ist nach meinem Verständnis ein Device, das in etwa so aussieht bzw. sich so steuern läßt:

defmod dummy_test dummy
attr dummy_test readingList brightness rgb
attr dummy_test setList brightness:colorpicker,BRI,0,15,255 rgb:colorpicker,HUE,0,1,359
attr dummy_test webCmd brightness:rgb

Aber der HUE-Slider liefert leider eben Zahlenwerte, die man nicht sinnvoll an das konkrete Device via MQTT versenden kann, denn das mag ausschließlich RGB-Werte im RRGGBB-Format. Das sollte der Slider liefern...

Dass es andere Widgets gibt, die das hergeben, ist klar, aber der Mechanismus mit dem Aufklappen vom RGB-Widget ist nicht sooo schön, wenn man daneben sowieso einen Slider für die Helligkeit hat.

Sorry für die Ungenauigkeit, was die anderen Optionen/Begrifflichkeiten betr. Farbe usw. angeht. Es geht einfach nur darum, (genau nur) das anzuzeigen, was dann auch das (Ziel-) Device versteht/verarbeiten kann. Hier ist das eben nur brightness und rgb.

Hoffe, das ist nun etwas klarer?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: justme1968 am 25 November 2019, 22:28:36
wenn du den colorpicker im HSV mode verendest klappt nichts auf. die drei regler sind immer sichtbar.

das problem ist: ein oder zwei regler sind nicht genug um eine farbe im rgb oder hsv raum zu bestimmen. es sind drei komponenten nötig. d.h. um rgb einzustellen reicht ein regler nicht.

#FF0000 und #FFFFFF und #FF9999 sind auf hue ebene alles die gleiche farbe. reines rot. und haben alle 100% helligkeit. sie unterscheiden sich nur in der sättigung die du als dritten regler unterschlagen hast.

auch wenn das device nur rgb und helligkeit kann brauchst du im gui alle drei regler um alle möglichen farben einzustellen. genau dafür ist der HSV mode vom colorpicker da.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 25 November 2019, 23:03:04
Hi Beta-User,

ich denke den Hue Slider hätte ich dann lieber.

@justme:
Sieh dir mal den Anhang an.
So sieht so ein Device dann in der Übersicht aus.

Die vorne sind die HUE, der hinten ist das Brightness-Reading des Devices, wobei Brightness von 0 - 255 geht.
Irgendwie ist die Helligkeit doch jetzt 2 mal vorhanden.
Einmal im Hue von 0 - 100 und einmal im Brightness-Reading von 0 - 255.

Nochmal vielen Dank für eure Hilfe.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: justme1968 am 25 November 2019, 23:09:54
wenn du nur eins von beiden willst darfst du in deinem webCmd auch nur eins von beiden einbauen.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 26 November 2019, 07:51:06
@justme1968: Danke nochmal für die Infos.

@stefanru:
Läßt sich das Device denn über den HSV (? nicht HUE, oder?) -Slider auch Helligkeitsmäßig gut bedienen? Der mittlere slider sollte auch irgendwelche Auswirkungen auf das Device haben? Dann würde ich (nur) den in webCmd anbieten, doppeln macht keinen Sinn.

Wenn einer der slider funktionslos sein sollte, dann bleiben wir beim aktuellen Stand.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 26 November 2019, 20:50:40
Hi,

ich glaub ich hab das nicht so gut ausgedrückt.
Der vordere ist HSV und alles funktioniert, der hintere ist Brightness, auch diese funktioniert.

Ist Brightness 0, kann ich an HSV drehen wie ich will es tut sich nichts.
Hat Brightness einen Wert größer 0 kann ich HSV benutzen.
Auch den unteren der drei Slider von HSV der ja auch von Schwarz bis volle Farbe geht.
Ich kann also mit dem unteren vom HSV Slider die Helligkeit von 0 bis 100 einstellen, wobei 100 maximal die Helligkeit von Brightness haben kann.

Bsp: Brightness 50.
Unterer HSV Slider ist bei 0 aus und bei 100 hat die Lampe eine Brightness von 50.

Ein Problem hat der HSV Slider aber.
Slide ich den unteren Slider wirklich auf 0 wird RGB 000000.
Das heißt alle Slider in HSV gehen auf Anfangsposition.
Farbe und Sättigung ändern sich also plötzlich.
Bin mir nicht sicher woran das liegt.
Ich denke aber dass der HSV Slider wenn der untere Slider auf 0 steht alles auf 0 setzt.
Somit geht die Farbe und Sättigung verloren.

Ich würde den HSV Slider gern behalten.
Ist irgendwie besser zu bedienen als die RGB Auswahl.
Außerdem hat RGB ja das selbe. Man kann von oben nach unten auch immer dunkler werden.
Extremfall also eine schwarze Farbe und die LED ist aus obwohl Brightness auf 255 steht.

Ich denke wir sollten HSV nehmen.
Das einzige Problem ist wenn man den unteren HSV Slider auf 0 stellt.
Vielleicht kann justme was dazu sagen?

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: justme1968 am 26 November 2019, 21:04:39
jedes farbmodell hat gewisse nachteile. bei hsv geht bei sättigung 0 oder helligkeit 0 die farbe 'verloren'. bei rgb kann man nicht einfach durch die farben scrollen.

wenn man die farmodelle auch noch kombinieren muss weil in einem die einstellung einfacher geht, dieses aber vom device nicht direkt unterstützt wird verstärken sie die probleme gegenseitig.

d.h. für hsv: wenn man die helligkeit auf 0 dreht gehen bei der hin- und rückrechnung über rgb die beiden anderen kanäle verloren weil sich aus rgb 000000 nichts mehr rekonstruieren lässt. ähnliches gilt für ffffff d.h. weiß.

bei einem device das direkt in hsv arbeitet würde das nicht passieren weil nicht hin und her gerechnet werden muss und im device bzw. reading die original werte erhalten bleiben.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 26 November 2019, 21:22:45
Ah ok, danke für die Erklärung.

Hmm, dann fällt es mir schwer zu sagen ob HSV oder RGB für die WLED.
Sie hat nur ein RGB und ein Brightness reading.
Dann wäre wohl RGB das korrekte.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 27 November 2019, 07:39:52
Dann lassen wir das im template wie es ist. Zumindest die Beschreibung verweist nach hierher, ggf. bzw. bei Gelegenheit nehme ich noch einen comment dazu auf, dass man es auch danach noch wiederfindet, wenn man sich intensiver mit seinem device beschäftigt.

Finde es besser, man hat eine etwas "umständliche" Bedienung (@justme1968: das ist ausdrücklich keine Kritik, die Hintergründe, warum das so sein muss, hast du ja nochmal ausführlich dargelegt) wie irritierende Verhaltensweisen bei einem "mißbrauchten" widget.

(@stefanru: Du kannst das bei dir ja trotzdem so lassen; du kennst ja die Einschränkungen, und wenn du ein paar "Farb-Buttons" dazupackst, die rgb liefern, ist das auch einfach zu überspielen...).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 27 November 2019, 20:53:44
Hi,

nein das passt. Ich denke ich nehme dann auch RGB. Ich benutze das FHEM WebUI eh fast nicht zum steuern.
Läuft alles automatisiert mit Bewegungsmelder usw.

Also alles super.

Vielen dank nochmal!

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: andre07 am 17 Februar 2020, 20:50:19
Hallo
Wollte da auch mal testen da ich einige  WS2812 rumliegen hatte.
Nach flashen der firmware auf meinen esp8266 und mqtt Aktivierung
wird bei mir dieses Device per template angelegt
defmod MQTT2_WLED_vitrine MQTT2_DEVICE WLED_vitrine
attr MQTT2_WLED_vitrine DbLogExclude .*
attr MQTT2_WLED_vitrine IODev MQTTServer
attr MQTT2_WLED_vitrine 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
attr MQTT2_WLED_vitrine devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr MQTT2_WLED_vitrine genericDeviceType light
attr MQTT2_WLED_vitrine homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_WLED_vitrine icon hue_filled_iris
attr MQTT2_WLED_vitrine model wled_controller
attr MQTT2_WLED_vitrine readingList wled/wled/g:.* brightness\
  wled/wled/c:.* {{"rgb"=>substr("$EVENT",1,6)}}\
  wled/wled/v:.* api
attr MQTT2_WLED_vitrine room MQTT2_DEVICE
attr MQTT2_WLED_vitrine setList on:noArg wled/wled status on\
  off:noArg wled/wled status off\
  toggle:noArg wled/wled status t\
  rgb:colorpicker,RGB wled/wled/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 wled/wled
attr MQTT2_WLED_vitrine webCmd rgb:brightness
funktionierte aber nicht
colorpicker wollte selbst nach Anpassung der  Pfade
nicht funtionieren.
Firmware ist die letzte vom Dezember 2019


defmod MQTT2_WLED_vitrine MQTT2_DEVICE WLED_vitrine
attr MQTT2_WLED_vitrine DbLogExclude .*
attr MQTT2_WLED_vitrine IODev MQTTServer
attr MQTT2_WLED_vitrine 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
attr MQTT2_WLED_vitrine devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr MQTT2_WLED_vitrine genericDeviceType light
attr MQTT2_WLED_vitrine homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_WLED_vitrine icon hue_filled_iris
attr MQTT2_WLED_vitrine model wled_controller
attr MQTT2_WLED_vitrine readingList wled/vitrine/g:.* brightness\
  wled/vitrine/c:.* {{"rgb"=>substr("$EVENT",1,6)}}\
  wled/vitrine/v:.* api\
WLED_vitrine:wled/vitrine/g:.* g\
WLED_vitrine:wled/vitrine/c:.* c\
WLED_vitrine:wled/vitrine/status:.* status\
WLED_vitrine:wled/vitrine/v:.* v
attr MQTT2_WLED_vitrine room MQTT2_DEVICE
attr MQTT2_WLED_vitrine setList on:noArg wled/vitrine status on\
  off:noArg wled/vitrine status off\
  toggle:noArg wled/vitrine status t\
  rgb:colorpicker,RGB wled/vitrine/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 wled/vitrine
attr MQTT2_WLED_vitrine webCmd rgb:brightness
attr MQTT2_WLED_vitrine widgetOverride rgb:colorpicker,HSV

attr vitrinenlicht_wled webCmd rgb:brightness
attr vitrinenlicht_wled widgetOverride rgb:colorpicker,HSV


Was ich mir noch wünschen würde die Effekte irgenwie mit
einzubauen habe aber leider null Plan wie das anzustellen ist.
Mein  Plan wäre alle meine Milight durch diese zu ersetzen da die WS2811
gefühlt smoother laufen.

Andre

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 17 Februar 2020, 21:05:08
Hi Andre,

eigentlich sollte die ReadingsList so aussehen, hier für mein kuechenlicht:
readingList
wled/kuechenlicht/g:.* brightness
  wled/kuechenlicht/c:.* {{"rgb"=>substr("$EVENT",1,6)}}
  wled/kuechenlicht/v:.* api

Hast du den bei der Wled auf dem Web Ui unter Config -> MQTT angeschaltet und dort auch ein Device Topic Vergeben?
Für mein Beispiel wäre das wled/kuechenlicht

Kann dir da nur recht geben WLEd läuft super smooth und ist richtig cool.
Ja du kannst auch die Effekte über MQTT ansprechen und zwar über die API, dort kannst du alle Befehler der HTTP API übergeben.
Siehe:https://github.com/Aircoookie/WLED/wiki/MQTT

Z.b. für mein Küchenlicht:
set myMQTT2Client publish wled/kuechenlicht/api CL=#98F3F9&A=255&TT=1000

CL ist Farbe, A ist Helligkeit und TT ist die dauer des Übergangs.
Für eine Effekt würdest du noch &FX=10 setzen.
Das würde Effekt Nummer 10 laufen lassen.

Gruß,
Stefan


Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: andre07 am 17 Februar 2020, 21:42:30
In der Web UI habe ich bei Device Topic: wled/vitrine eingetragen
Group Tropic steht auf wled/all
Client ID steht auf WLED-vitrine und Mqtt aktiviert
den rest habe ich erst mal nicht verändert.
Welche Firmware hast du drauf vielleicht liegt es ja daran das das falsch
angelegt wird.
set mqttserver publish wled/vitrine/api CL=#98F3F9&A=255&TT=1000 &FX=2
funtioniert wunderbar... :)
Andre
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 17 Februar 2020, 21:47:37
Hab die neuste Firmware drauf.
Hatte aber auch die vorher drauf.
Benutze das schon ne Zeit lang.

Wo ist denn dein Problem genau?
Wenn das "set mqttserver publish wled/vitrine/api CL=#98F3F9&A=255&TT=1000 &FX=2" geht sollte doch auch der rest gehen.

Hast du in deiner ReadingsList:
wled/vitrine/g:.* brightness
  wled/vitrine/c:.* {{"rgb"=>substr("$EVENT",1,6)}}
  wled/vitrine/v:.* api

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: andre07 am 18 Februar 2020, 10:40:35
Problem eigentlich nicht nach anpaasung der Pfade läuft es ja erst mal
es wird nur falsch vom template angelegt vieleicht liegt es nur an meiner
Konfiguration das das so passiert.
defmod MQTTServer MQTT2_SERVER 1884 global
attr MQTTServer DbLogExclude .*
attr MQTTServer autocreate simple
attr MQTTServer icon mqtt
attr MQTTServer rawEvents 1
attr MQTTServer room MQTT2_DEVICE,Mqtt


Internals:
   .FhemMetaInternals 1
   CID        WLED_vitrine
   DEF        WLED_vitrine
   DEVICETOPIC MQTT2_WLED_vitrine
   FUUID      5e4ae9f3-f33f-0b03-84fc-e1c0e1eb40de45a0
   FVERSION   10_MQTT2_DEVICE.pm:0.211680/2020-02-10
   IODev      MQTTServer
   LASTInputDev MQTTServer
   MQTTServer_MSGCNT 16
   MQTTServer_TIME 2020-02-17 21:43:03
   MSGCNT     16
   NAME       MQTT2_WLED_vitrine
   NR         766
   STATE      toggle
   TYPE       MQTT2_DEVICE
   .attraggr:
   .attrminint:
   READINGS:
     2020-02-17 21:43:02   api             <?xml version="1.0" ?><vs><ac>0</ac><cl>152</cl><cl>243</cl><cl>249</cl><cs>0</cs><cs>0</cs><cs>0</cs><ns>1</ns><nr>1</nr><nl>0</nl><nf>1</nf><nd>60</nd><nt>132</nt><fx>2</fx><sx>128</sx><ix>128</ix><fp>0</fp><wv>-1</wv><ws>0</ws><cy>0</cy><ds>WLED</ds><ss>0</ss></vs>
     2020-02-17 21:43:02   brightness      0
     2020-02-17 21:43:02   c               #98F3F9
     2020-02-17 21:43:02   g               0
     2020-02-17 21:43:02   rgb             98F3F9
     2020-02-17 21:43:02   state           toggle
     2020-02-17 21:43:02   status          online
     2020-02-17 21:43:02   v               <?xml version="1.0" ?><vs><ac>0</ac><cl>152</cl><cl>243</cl><cl>249</cl><cs>0</cs><cs>0</cs><cs>0</cs><ns>1</ns><nr>1</nr><nl>0</nl><nf>1</nf><nd>60</nd><nt>132</nt><fx>2</fx><sx>128</sx><ix>128</ix><fp>0</fp><wv>-1</wv><ws>0</ws><cy>0</cy><ds>WLED</ds><ss>0</ss></vs>
   helper:
     bm:
       MQTT2_DEVICE_Get:
         cnt        14
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        18.02. 10:39:46
         max        7.20024108886719e-05
         tot        0.000534772872924805
         mAr:
           HASH(0x564100625a48)
           MQTT2_WLED_vitrine
           brightness
       MQTT2_DEVICE_Set:
         cnt        30
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        17.02. 21:43:02
         max        0.0286839008331299
         tot        0.0400433540344238
         mAr:
           HASH(0x564100625a48)
           MQTT2_WLED_vitrine
           toggle
Attributes:
   DbLogExclude .*
   IODev      MQTTServer
   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" )}
   genericDeviceType light
   homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
   icon       hue_filled_iris
   model      wled_controller
   readingList wled/vitrine/g:.* brightness
  wled/vitrine/c:.* {{"rgb"=>substr("$EVENT",1,6)}}
  wled/vitrine/v:.* api
WLED_vitrine:wled/vitrine/g:.* g
WLED_vitrine:wled/vitrine/c:.* c
WLED_vitrine:wled/vitrine/status:.* status
WLED_vitrine:wled/vitrine/v:.* v
   room       MQTT2_DEVICE
   setList    on:noArg wled/vitrine status on
  off:noArg wled/vitrine status off
  toggle:noArg wled/vitrine status t
  rgb:colorpicker,RGB wled/vitrine/col #$EVTPART1
  brightness:colorpicker,BRI,0,1,255 wled/vitrine
   webCmd     rgb:brightness
   widgetOverride rgb:colorpicker,HSV
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 18 Februar 2020, 11:22:24
Erklär mir mal was falsch angelegt wird.
Bei mir ist das passt alles wenn ich ein Device neu anlege.
Was musstest du denn aus welchem Grund anpassen?

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: andre07 am 24 Februar 2020, 12:18:57
Hallo
Sorry das ich mich erst jetzt melde.
defmod MQTT2_WLED_vitrine MQTT2_DEVICE WLED_vitrine
attr MQTT2_WLED_vitrine DbLogExclude .*
attr MQTT2_WLED_vitrine IODev MQTTServer
attr MQTT2_WLED_vitrine 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
attr MQTT2_WLED_vitrine devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr MQTT2_WLED_vitrine genericDeviceType light
attr MQTT2_WLED_vitrine homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_WLED_vitrine icon hue_filled_iris
attr MQTT2_WLED_vitrine model wled_controller
attr MQTT2_WLED_vitrine readingList wled/vitrine/wled/vitrine/g:.* brightness\
  wled/vitrine/wled/vitrine/c:.* {{"rgb"=>substr("$EVENT",1,6)}}\
  wled/vitrine/wled/vitrine/v:.* api
attr MQTT2_WLED_vitrine room MQTT2_DEVICE
attr MQTT2_WLED_vitrine setList on:noArg wled/vitrine/wled/vitrine status on\
  off:noArg wled/vitrine/wled/vitrine status off\
  toggle:noArg wled/vitrine/wled/vitrine status t\
  rgb:colorpicker,RGB wled/vitrine/wled/vitrine/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 wled/vitrine/wled/vitrine
attr MQTT2_WLED_vitrine webCmd rgb:brightness


Und so habe ich es dann abgeändert.
defmod MQTT2_WLED_vitrine MQTT2_DEVICE WLED_vitrine
attr MQTT2_WLED_vitrine DbLogExclude .*
attr MQTT2_WLED_vitrine IODev MQTTServer
attr MQTT2_WLED_vitrine 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
attr MQTT2_WLED_vitrine devStateIcon {Color::devStateIcon( $name, "rgb","rgb", "brightness", "state" )}
attr MQTT2_WLED_vitrine genericDeviceType light
attr MQTT2_WLED_vitrine homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_WLED_vitrine icon hue_filled_iris
attr MQTT2_WLED_vitrine model wled_controller
attr MQTT2_WLED_vitrine readingList wled/vitrine/g:.* brightness\
  wled/vitrine/c:.* {{"rgb"=>substr("$EVENT",1,6)}}\
  wled/vitrine/v:.* api\
WLED_vitrine:wled/vitrine/g:.* g\
WLED_vitrine:wled/vitrine/c:.* c\
WLED_vitrine:wled/vitrine/status:.* status\
WLED_vitrine:wled/vitrine/v:.* v
attr MQTT2_WLED_vitrine room MQTT2_DEVICE
attr MQTT2_WLED_vitrine setList on:noArg wled/vitrine status on\
  off:noArg wled/vitrine status off\
  toggle:noArg wled/vitrine status t\
  rgb:colorpicker,RGB wled/vitrine/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 wled/vitrine
attr MQTT2_WLED_vitrine webCmd rgb:brightness
attr MQTT2_WLED_vitrine widgetOverride rgb:colorpicker,HSV

Wie du  siehst legt er die Pfade wled/vitrine doppelt an.
Auch der Colorpicker funktioniert bei mir so nicht
Andre
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 24 Februar 2020, 13:09:52
Hi Andre,

ah ok.
Das sieht ja seltsam aus. Ich probiere das heute mal.
Als ich meine Device angelegt hatte war nichts doppelt.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 24 Februar 2020, 13:31:32
Hm, das ist zwar einerseits klar, dass das attrTemplate kaputt war (Korrektur ist seit eben im svn), aber diesen Effekt hätte der bug nicht haben sollen...

(Wenn testen, bitte mit der version aus dem svn bzw. mit der kleinen Änderung von eben).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: andre07 am 24 Februar 2020, 14:24:37
Habs eben getestet funktioniert
Diese Meldung kommt aber beim anlegen....
Unknown command WLED_vitrine:wled, try help.
Unknown command WLED_vitrine:wled, try help.
Unknown command WLED_vitrine:wled, try help.
Unknown command WLED_vitrine:wled/col, try help.
Unknown command WLED_vitrine:wled, try help.
Unknown command WLED_vitrine:wled/g:.*, try help.
Unknown command WLED_vitrine:wled/c:.*, try help.
Unknown command WLED_vitrine:wled/v:.*, try help.

Colorpicker arbeitet auch wieder ohne Änderung
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 24 Februar 2020, 14:34:21
Hmm, bin grade etwas am Rätseln, wo das herkommen könnte.

Wichtig ist erst mal, dass die Parameter sauber aufgelöst werden. Das scheint der Fall zu sein?

Alles andere _könnte_ auch von irgendeiner "Altlast" her kommen. Von daher würde es mich interessieren, ob diese Meldungen auch kommen, wenn man ein "neues" Device hat, wie autocreate es erstellt hatte?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: andre07 am 24 Februar 2020, 22:07:06
Ich habe ein zweites neues Device angelegt selbige Fehlermeldung erscheint
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 25 Februar 2020, 09:21:19
Hmm, aus dieser Beschreibung alleine werde ich leider nicht schlau. Ich vermute (?), diese Fehlermeldungen "unknown command.." erscheinen, wenn du das attrTemplate anwendest?

Bitte (sofern ich dem auf den Grund gehen soll, muß ich das bei Gelegenheit 1:1 nachvollziehen...): Ein (vollst.) RAW von dem, was autocreate erstellt, dann eine genaue Angabe, wie du welches attrTemplate anwendest.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 29 Februar 2020, 14:56:30
Also ich habe gerade auch ein neues Device angelegt.
Habe ein AlleLeds device angelegt.
Als Baseid "wled" und als Devname "all".
Ging ohne Probleme.

Folgendes Vorgehen:
define AlleLeds mqtt2_device
set AlleLeds attrTemplate wled_controller wled all

Alles perfekt danach.

Gruß,
Stefan



Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 29 Februar 2020, 17:17:13
Hallo,

beschäftige mich auch seit 2-3 Tagen mit WLED.
Bescheidene Frage, wo gibts denn das Template wled_controller wled all ?
Selbst wenn ich ein update verpasst hätte find ich es hier (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/mqtt2.template) nicht.

Angelegt wir bei mir folgendes Device:

defmod MQTT2_WLED_538e36 MQTT2_DEVICE WLED_538e36
attr MQTT2_WLED_538e36 IODev MQTT2_Server
attr MQTT2_WLED_538e36 readingList WLED_538e36:wled/538e36/g:.* g\
WLED_538e36:wled/538e36/c:.* c\
WLED_538e36:wled/538e36/status:.* status\
WLED_538e36:wled/538e36/v:.* v
attr MQTT2_WLED_538e36 room MQTT2_DEVICE

setstate MQTT2_WLED_538e36 2020-02-29 16:11:55 c #FF0000
setstate MQTT2_WLED_538e36 2020-02-29 16:11:55 g 41
setstate MQTT2_WLED_538e36 2020-02-29 16:11:55 status online
setstate MQTT2_WLED_538e36 2020-02-29 16:11:55 v <?xml version="1.0" ?><vs><ac>41</ac><cl>255</cl><cl>0</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>27</fx><sx>128</sx><ix>128</ix><fp>0</fp><wv>0</wv><ws>0</ws><ps>0</ps><cy>0</cy><ds>WLED</ds><ss>0</ss></vs>


Wende ich darauf das wled_controller-Template an:

Zitatattr DEVICE icon ICON
attr DEVICE setList\
  on:noArg BASE_ID/DEVNAME status on\
  off:noArg BASE_ID/DEVNAME status off\
  toggle:noArg BASE_ID/DEVNAME status t\
  rgb:colorpicker,RGB 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 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
set DEVICE attrTemplate mqtt2_speech_recognition_type_light_255
attr DEVICE model wled_controller
Das ist noch ein Fehler drin.

bekomme ich auch die Unknown command Meldungen:

Unknown command WLED_538e36:wled, try help.
Unknown command WLED_538e36:wled, try help.
Unknown command WLED_538e36:wled, try help.
Unknown command WLED_538e36:wled/col, try help.
Unknown command WLED_538e36:wled, try help.
Unknown command WLED_538e36:wled/g:.*, try help.
Unknown command WLED_538e36:wled/c:.*, try help.
Unknown command WLED_538e36:wled/v:.*, try help.


Das Device sieht dann so aus, nachdem man den die Meldungen mit OK bestätigt hat.

defmod MQTT2_WLED_538e36 MQTT2_DEVICE WLED_538e36
attr MQTT2_WLED_538e36 IODev MQTT2_Server
attr MQTT2_WLED_538e36 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
attr MQTT2_WLED_538e36 devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr MQTT2_WLED_538e36 genericDeviceType light
attr MQTT2_WLED_538e36 homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_WLED_538e36 icon hue_filled_iris
attr MQTT2_WLED_538e36 model wled_controller
attr MQTT2_WLED_538e36 readingList wled/538e36/g:.* g
attr MQTT2_WLED_538e36 room MQTT2_DEVICE
attr MQTT2_WLED_538e36 setList on:noArg wled/538e36/g:.* g
attr MQTT2_WLED_538e36 webCmd rgb:brightness


off:noArg BASE_ID/DEVNAME status off\
  toggle:noArg BASE_ID/DEVNAME status t\
  rgb:colorpicker,RGB BASE_ID/DEVNAME/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME


werden nicht angelegt, nur on.

Auch die ReadingList aus dem Template wird nicht angelegt, wie zu sehen ist.

Nach einmal ein/ausschalten im UI von WLED erweitert sich die ReadingList wieder um:

wled/538e36/g:.* g
WLED_538e36:wled/538e36/c:.* c
WLED_538e36:wled/538e36/status:.* status
WLED_538e36:wled/538e36/v:.* v


Passe ich alles händisch so an:

defmod MQTT2_WLED_538e36 MQTT2_DEVICE WLED_538e36
attr MQTT2_WLED_538e36 IODev MQTT2_Server
attr MQTT2_WLED_538e36 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
attr MQTT2_WLED_538e36 devStateIcon {Color::devStateIcon( $name, "rgb", "brightness", "state" )}
attr MQTT2_WLED_538e36 genericDeviceType light
attr MQTT2_WLED_538e36 homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_WLED_538e36 icon hue_filled_iris
attr MQTT2_WLED_538e36 model wled_controller
attr MQTT2_WLED_538e36 readingList wled/538e36/wled/538e36/c:.* {{"rgb"=>substr("$EVENT",1,6)}}\
wled/538e36/wled/538e36/v:.* api\
wled/538e36/c:.* c\
wled/538e36/status:.* status\
wled/538e36/g:.* brightness\
WLED_538e36:wled/538e36/v:.* v
attr MQTT2_WLED_538e36 room MQTT2_DEVICE
attr MQTT2_WLED_538e36 setList on:noArg wled/538e36/g:.* g\
off:noArg wled/538e36 status off\
toggle:noArg wled/538e36 status t\
rgb:colorpicker,RGB wled/538e36/col #$EVTPART1\
brightness:colorpicker,BRI,0,1,255 wled/538e36
attr MQTT2_WLED_538e36 webCmd rgb:brightness

setstate MQTT2_WLED_538e36 rgb
setstate MQTT2_WLED_538e36 2020-02-29 17:02:10 brightness 82
setstate MQTT2_WLED_538e36 2020-02-29 17:02:10 c #4E21FF
setstate MQTT2_WLED_538e36 2020-02-29 17:02:09 state rgb
setstate MQTT2_WLED_538e36 2020-02-29 17:02:10 status online
setstate MQTT2_WLED_538e36 2020-02-29 17:02:10 v <?xml version="1.0" ?><vs><ac>82</ac><cl>78</cl><cl>33</cl><cl>255</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>128</sx><ix>128</ix><fp>0</fp><wv>0</wv><ws>0</ws><ps>0</ps><cy>0</cy><ds>WLED</ds><ss>0</ss></vs>


passt alles, bis auf das es kein rgb-Reading gibt.
Habs auch schon mit nur 2 statt 4 {} probiert bei {{"rgb"=>substr("$EVENT",1,6)}}
Woran liegt das ?


so kann man übrigens einen Effect auswählen, das wurde, mein ich, bisher noch nicht erwähnt.

effect:colorpicker,BRI,0,1,79 wled/538e36/api http://192.168.188.50/win&FX=$EVTPART1

Gruß

Thomas
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 29 Februar 2020, 17:40:10
Hm, das Problem war das ".*:" am Ende. Hab's jetzt gegen "[^/]+:" getauscht, das sollte das korrekte Ergebnis bringen...
Das .* hat dazu geführt, dass Teile des topic-Trees doppelt verwendet wurden, deswegen geht auch rgb nicht.

Wenn man attrTemplate mit weiteren Parametern aufruft, werden die par-Anweisungen dadurch überschrieben.

Sorry, hoffe, das paßt nun.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 29 Februar 2020, 18:13:44
Super. Danke. Klappt alles.

Dann nehm ich das mit dem Fehler in devStateIcon wieder zurück ::), hätte man auch nachlesen können was korrekt ist.

Das mit
Zitat$EVENT direkt mit Perl auswerten
hängt mir einfach noch zu hoch (da warte ich noch auf den Eureka effect, hab mir die vorgeschlagenen verwandten Beispiele aber noch gar nicht im Detail angeschaut), das wär doch hier das gleiche wenn man zu dem vorgeschlagenen effect-setter eine Rückmeldung bauen wollte !?

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 29 Februar 2020, 19:06:57
Hmm,

warum ging es bei mir?
Habe ich noch irgendwo ein Template vom Testen das vom Update nicht überschrieben wird?

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 02 März 2020, 12:19:12
Zu dem effect-setter hier (https://forum.fhem.de/index.php/topic,108737.msg1028382.html#msg1028382) würd ich gerne noch 3 weitere vorschlagen, sofern das im Template erwünscht ist.

speed:colorpicker,BRI,0,1,255 wled/538e36/api http://192.168.188.50/win&SX=$EVTPART1
intensity:colorpicker,BRI,0,1,255 wled/538e36/api http://192.168.188.50/win&IX=$EVTPART1
palette:selectnumbers,0,1,46,0,lin wled/538e36/api http://192.168.188.50/win&FP=$EVTPART1


die zugehörige readingList
wled/538e36/v:.* {$EVENT =~ m,((?<=<sx>).*?(?=<\/sx>)), ? {"speed"=>"$1"} : undef }
wled/538e36/v:.* {$EVENT =~ m,((?<=<ix>).*?(?=<\/ix>)), ? {"intensity"=>"$1"} : undef }
wled/538e36/v:.* {$EVENT =~ m,((?<=<fp>).*?(?=<\/fp>)), ? {"palette"=>"$1"} : undef }


Das ein/ausschalten und die Duration einstellen von Nightlight fänd ich auch noch toll, allerdings hat das beim ersten mal nicht genauso geklappt wie hier (https://github.com/Aircoookie/WLED/wiki/HTTP-request-API) in der Doku beschrieben, da ist was durcheinander denke ich (duration mit delay vertauscht).

Gruß

Thomas
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 02 März 2020, 12:50:30
Hi TomLee,

Das gefällt mir!
Dann hätte ich gern noch FX.
Wäre dann:
effect:selectnumbers,0,1,101,0,lin wled/538e36/api http://192.168.188.50/win&FX=$EVTPART1
wled/538e36/v:.* {$EVENT =~ m,((?<=<fx>).*?(?=<\/fx>)), ? {"effect"=>"$1"} : undef }

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 02 März 2020, 13:09:40
Kann das gerne einpflegen, denke aber, dass wir noch eine Sache berücksichtigen sollten: Wenn ich diese etwas seltsame Form der Datenübertragung aus dem anderen Thread richtig deute, kommt "immer alles" zurück, ganz gleich, ob geändert oder nicht (und dazu in einem eigenen Format, das nicht JSON ist...)? (und: Es kommen immer ganze Zahlen zurück?)

Dann sollten wir das noch etwas dahingehend verfeinern, dass wir auf Änderungen checken, ergäbe als readingList:

wled/538e36/v:.* {$EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? undef : {"speed"=>$1} : undef }
wled/538e36/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? undef : {"intensity"=>$1} : undef }
wled/538e36/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? undef : {"palette"=>$1} : undef }
wled/538e36/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? undef :{"effect"=>"$1"} : undef }


und setList:
speed:colorpicker,BRI,0,1,255 wled/538e36/api http://192.168.188.50/win&SX=$EVTPART1
intensity:colorpicker,BRI,0,1,255 wled/538e36/api http://192.168.188.50/win&IX=$EVTPART1
palette:selectnumbers,0,1,46,0,lin wled/538e36/api http://192.168.188.50/win&FP=$EVTPART1
effect:selectnumbers,0,1,100,0,lin wled/538e36/api http://192.168.188.50/win&FX=$EVTPART1


Dazu evtl. noch eine eventMap und webCmd als Beispiele:

attr DEVICE eventMap /effect 2:Breathe/effect 8:Colorloop/effect 95:Popcorn/
attr DEVICE webCmd rgb:brightness:Breathe:Colorloop
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 02 März 2020, 13:19:57
Hi Beta-User,

ja leider kommt noch kein JSON.
Wird irgendwann kommen.

Zur Zeit finde ich die Idee gut das so zu Lösen wie du beschrieben hast.
FX hat laut Doku 0 - 101.
Eine Eventmap für 102 Effekte wird doch etwas heftig oder?
Aber eine kleine Liste finde ich sinnvoll.
Man kann sich seine lieblings Effekte ja dann noch adden.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 02 März 2020, 13:43:40
Die readinglist mit ReadingsVal hab ich getestet, passt.

Was die  MQTT-Implemetierung angeht einfach hier (https://github.com/Aircoookie/WLED/wiki/MQTT) den ersten Satz lesen und bei mehr Interesse dem Link in dem Satz folgen.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 02 März 2020, 13:46:04
Ah ok,
cool.

Danke für die Info TomLee.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 02 März 2020, 21:30:41
Hab das jetzt mal für mein Schranklicht eingebaut.
Ist echt super. Funktioniert 1A.
Habs noch hübscher gemacht mit Hostname usw.
readingList:

wled/schranklicht/g:.* brightness
wled/schranklicht/c:.* {{"rgb"=>substr("$EVENT",1,6)}}
wled/schranklicht/v:.* api
wled/schranklicht/v:.* {$EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? undef : {"speed"=>$1} : undef }
wled/schranklicht/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? undef : {"intensity"=>$1} : undef }
wled/schranklicht/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? undef : {"palette"=>$1} : undef }
wled/schranklicht/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? undef :{"effect"=>"$1"} : undef }


setList:

on:noArg wled/schranklicht status on
off:noArg wled/schranklicht status off
toggle:noArg wled/schranklicht status t
rgb:colorpicker,RGB wled/schranklicht/col #$EVTPART1
brightness:colorpicker,BRI,0,1,255 wled/schranklicht
speed:colorpicker,BRI,0,1,255 wled/schranklicht/api http://schranklicht/win&SX=$EVTPART1
intensity:colorpicker,BRI,0,1,255 wled/schranklicht/api http://schranklicht/win&IX=$EVTPART1
palette:selectnumbers,0,1,46,0,lin wled/schranklicht/api http://schranklicht/win&FP=$EVTPART1
effect:selectnumbers,0,1,101,0,lin wled/schranklicht/api http://schranklicht/win&FX=$EVTPART1


eventMap und webCmd:

   eventMap   /effect 0:Solid/effect 2:Breathe/effect 63:Pride/effect 48:Police/
   webCmd     rgb:brightness:Solid:Breathe:Pride:Police


Find ich echt super!

Danke und Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 02 März 2020, 21:59:47
Was meinst du mit noch hübscher gemacht usw.. .?

Sehe nix, was schon geposted wurde ?

Meinst du mit Hostname <ds>WLED</ds> ?

Meine Hoffnung war jetzt zu lesen -> Hey, so und so klappt das mit den (bis zu 4 ) nightlight-settern. Thomas du warst bloß zu doof das zu verstehen. :P


Aber warten wir mal ab was die nächsten Updates bezüglich MQTT zeigen.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 02 März 2020, 22:17:55
Sorry, wollte nicht für Verwirrung sorgen.
Kam jetzt erst zum Testen und finde das echt gut.
Ich wollte es nur nochmal sauber hinschreiben. Und anstelle von der http://IP habe ich den Hostnamen den du ja auch vergeben kannst verwendet.

Was meinst du mit Nightlight settern?
Wenn du 4 vordefinierte Nightlight nehmen willst kannst du doch Presets speichern und mit &PL laden.
Das geht auch wunderbar.
Bin selbst gerade am überlegen ob ich zum speichern eines Zustandes lieber mit &PS ein Preset speichere und später mit &PL wieder lade,
oder in FHEM die ganzen werte auslese und danach wieder setze.

Wenn man öfter presets ändert ist nur das Problem dass sie ins ROM geschrieben werden und der irgendwann kaputt geht.
Aber auch das kann man im Coding so anpassen das sie nur im RAM gespeichert werden.
Eigentlich ist &PL und &PS die geschicktere Lösung zum Abspeichern und setzen eines kompletten Sets an Werten.

Oder hab ich da was missverstanden mit den 4 Nighlight Timern?

Gruß,
Stefan

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: sinus61 am 21 April 2020, 14:35:41
Hab auch gerade Mal einen Esp auf Wled umgestellt, das mit dem Template hat gut geklappt, danke für die Arbeit.

Bei den Api Befehlen reicht die Angabe aber auch so:

effect:selectnumbers,0,1,101,0,lin wled/538e36/api FX=$EVTPART1


Etwas mehr ließe sich ja möglicherweise aus der MQTT Steuerung noch rausholen, aber wahrscheinlich wird man ja eh das meiste über das Webinterface einstellen.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: sinus61 am 21 April 2020, 16:32:25
Was mir noch aufgefallen ist, state bleibt ja auf set_on usw stehen und bekommt auch nicht mit wenn man das Gerät über brightness einschaltet, dafür hab ich Mal das eingefügt:

wled/64b5f5/g:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }

Der Status ist im Template auch noch nicht berücksichtigt

wled/64b5f5/status:.* LWT

Unter setList reicht es laut Doku auch so, statt "status on"


on:noArg wled/64b5f5 on
  off:noArg wled/64b5f5 off
  toggle:noArg wled/64b5f5 t
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 21 April 2020, 17:20:47
Habe mal versucht, das in die template-file zu integrieren, bitte um Rückmeldung, ob das so klappt bzw. ob noch was fehlt...
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: sinus61 am 22 April 2020, 17:47:30
Danke, die Api Befehle könnte aber alle angepasst werden, hab das hier mal gemacht und auch noch dimup und dimdown Befehle hinzugefügt.


#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 on\
  off:noArg BASE_ID/DEVNAME off\
  toggle:noArg BASE_ID/DEVNAME t\
  rgb:colorpicker,RGB BASE_ID/DEVNAME/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME\
  speed:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api SX=$EVTPART1\
  intensity:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api IX=$EVTPART1\
  palette:selectnumbers,0,1,46,0,lin BASE_ID/DEVNAME/api FP=$EVTPART1\
  effect:selectnumbers,0,1,101,0,lin BASE_ID/DEVNAME/api FX=$EVTPART1\
  loadPreset:selectnumbers,0,1,3,0,lin BASE_ID/DEVNAME/api PL=$EVTPART1\
  dimup:noArg BASE_ID/DEVNAME/api A=~10\
  dimdown:noArg BASE_ID/DEVNAME/api A=~-10 
attr DEVICE readingList \
  BASE_ID/DEVNAME/status:.* LWT\
  BASE_ID/DEVNAME/g:.* brightness\
  BASE_ID/DEVNAME/g:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }\
  BASE_ID/DEVNAME/c:.* { {"rgb"=>substr("$EVENT",1,6)} }\
  BASE_ID/DEVNAME/v:.* api\
  BASE_ID/DEVNAME/v:.* { $EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? return : {"speed"=>$1} : return; }\
  BASE_ID/DEVNAME/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? return : {"intensity"=>$1} : return }\
  BASE_ID/DEVNAME/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? return : {"palette"=>$1} : return }\
  BASE_ID/DEVNAME/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? return :{"effect"=>"$1"} : return }
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr DEVICE eventMap /effect 0:Solid/effect 2:Breathe/effect 63:Pride/effect 48:Police/
attr DEVICE webCmd rgb:brightness:Solid:Breathe:Pride:Police
attr DEVICE setStateList on off toggle
attr DEVICE 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
set DEVICE attrTemplate speechcontrol_type_light_255
farewell:template has been applied successfully. <br>Note: webCmd and eventMap are just examples; adopt this to your needs.
attr DEVICE model wled_controller
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 22 April 2020, 17:57:52
THX, hatte sowas schon vermutet ::) ...

Ist seit eben im svn!
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: andre07 am 22 Mai 2020, 01:08:24
wie ich sehe gibs wieder neue Funktionen wie effects gleich mal testen nur schade das die Änderungen erst aktiv werden nachdem man das template neu gesetzt hat so muss man halt immer am Ball
bleiben
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 22 Mai 2020, 09:58:17
Zitat von: andre07 am 22 Mai 2020, 01:08:24
[...] nur schade das die Änderungen erst aktiv werden nachdem man das template neu gesetzt hat so muss man halt immer am Ball
bleiben
Na ja, die (gedankliche) Alternative wäre, jeweils "automatisch" das attrTemplate anzuwenden. Mal abgesehen davon, dass das im Moment nicht vorgesehen ist, halte ich das auch nicht für wünschenswert:
- Es ist nicht ausgeschlossen, dass Fehler passieren (ich habe z.B. die wenigsten der Gadgets, für die ich die attrTemplate pflege, und alles immer (theoretisch) auszutesten, geht auch kaum).
- Was attrTemplate liefert, ist für manche auch "nur" ein Startpunkt, um dann weiter zu konfigurieren. Das ist völlig ok, aber es wäre nicht ok, die User-Settings dann jedes Mal zu überschreiben...

Ergo: Wenn es um "neue" Dinge geht, sollte man eben tatsächlich hin und wieder schauen, was es neues gibt oder aktiv mitwirken (wie hier gibt es meistens entsprechende Threads, die auch in den Beschreibungen (?) verlinkt sind...). Dann kommt das ganze "schneller in Form", und danach besteht meistens dann kein Anlaß mehr, irgendwas zu ändern.
(Es sei denn, die API oä. ändert sich, aber dann merkt man ja auch, wenn manches nicht mehr so funktioniert wie vorher).

Just my2ct.

(Aber Danke für das implizite Lob, dass es ganz brauchbar ist, was via attrTemplate so im allg. kommt 8) ).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 22 Mai 2020, 10:18:30
Zitat... nur schade das die Änderungen erst aktiv werden nachdem man das template neu gesetzt hat so muss man halt immer am Ball
bleiben
Man kann bestimmt etwas basteln was auf global:UPDATE reagiert, und anhand das model Attribut "set device attrTemplate model" absetzt.
Bin nur nicht sicher, ob die Templates immer alle Parameter bestimmen koennen, damit kein Dialog geoeffnet werden muss.

Nicht falsch verstehen: das ist keine Empfehlung, weil sinnvoll, nur eine Ueberlegung, ob es technisch machbar ist.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 22 Mai 2020, 10:39:07
Na ja, aber das wäre dann auch eher sehr global und würde potentiell "alles" erfassen, selbst wenn die attrTemplate-file gar nicht geändert wäre - ganz abgesehen davon, dass es dann immer noch schwierig wäre rauszufinden, ob denn nun gerade ein bestimmtes template geändert wurde...

Ich könnte ja ggf. die "Meldekultur" noch verbessern, aber bisher war mir das zu aufwändig.

Das "Problem" der User kann ich aber nachvollziehen: Man sieht nirgends, wann ein einzelnes Template das letzte Mal angefaßt wurde. Man müßte also entweder "auf Verdacht" anwenden oder manuell Checken, ob und was sich ggf. geändert hat.

Dazu mal in den Raum geworfen: Es wäre kein Ding der Unmöglichkeit, (nach und nach bzw. eben bei allen künftigen updates) ggf. Infos zur letzten Änderung (z.B. als "lastupdate:", "date:" oder "version:") einzupflegen. Die Frage wäre dann nur, wie der User an die Info kommt. Das könnte man über einen/mehrere setter ("?lastupdate" bzw. "?lastupdates") erledigen: ?lastupdate gäbe das update-Datum des Model des aktuellen Devices aus, ?lastupdates das aller "model" des aktuellen Device-TYPE? Immer vorausgesetzt, die Info ist überhaupt vorhanden?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 22 Mai 2020, 11:37:31
Vorschlag: Man baut im Befehlsabschnitt des Templates "setreading DEVICE attrTemplateVersion X.YY" ein.
Da der Benutzer diese Befehle nach Template-Auswahl in FHEMWEB sieht, kann er feststellen, ob er die letzte Version hat.
Man sieht auch, wann das Template angewendet wurde.

Das reicht zwar fuer eine automatische Pruefung noch nicht, ich kann aber was einbauen, wenn jemand das haben will.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 22 Mai 2020, 12:29:21
Klingt nach einem Weg :) .

Wie bereits geschrieben, _glaube_ ich, dass ein Automatismus _in der Anwendung_ keine wirklich gute Lösung ist und sowas am Ende eher Frust erzeugen könnte. Aber das mit der Anzeige des update-Datums auf diesem Weg dürften einige User hilfreich finden, und uns Helfern dürfte das auch weiterhelfen. (Hast du auf die Schnelle eine Idee, wie wir das in den aktuellen files direkt und automatisiert reinlasen könnten? Also immer vor attr DEVICE[^\b]* model bla eine Zeile rein mit "set $1 attrTemplateVersion 20200522 or prior" (mit $1 = DEVICE[^\b]*)?)

(Es gab in letzter Zeit allerdings gar nicht mehr so viel Bewegung, eigentlich kommen wir mit dem feature etwas zu spät, um das gleich ins Bewußtsein der User zu bringen...).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 22 Mai 2020, 13:27:04
ZitatHast du auf die Schnelle eine Idee, wie wir das in den aktuellen files direkt und automatisiert reinlasen könnten? Also immer vor attr DEVICE[^\b]* model bla eine Zeile rein mit "set $1 attrTemplateVersion 20200522 or prior" (mit $1 = DEVICE[^\b]*)?)

In vim:
:%s/attr \(.*\) model \(.*\)/attr \1 model \2^Msetreading \1 attrTemplateVersion 20200522 or prior<return>
(wobei ^M mit CTRL-V <return> zu erzeugen ist).

Zitat... eigentlich kommen wir mit dem feature etwas zu spät...
Lieber zu spaet als nie :)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 22 Mai 2020, 14:05:51
Zitat von: rudolfkoenig am 22 Mai 2020, 13:27:04
In vim:
Danke (auch wenn ich vim schon immer "komisch" fand, aber man lernt ja nie aus...).

War revision 22000 :) .
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: heikoh81 am 22 Juni 2020, 23:22:16
Hallo Stefan,

Zitat von: stefanru am 02 März 2020, 21:30:41
Hab das jetzt mal für mein Schranklicht eingebaut.
Ist echt super. Funktioniert 1A.

ich habe mir auch mal WLED 0.1 auf einen Wemos D1 Mini gepackt, funktioniert soweit.
Nun soll das ganze natürlich aus FHEM heraus über MQTT2_Server angesprochen werden (funktioniert bei mir schon mit zahlreichen tasmota-Aktoren).

Ich habe mir deine Code-Beispiele genommen, allerdings reagiert WLED gar nicht auf diese Kommandos.
Ist denn mein MQTT-Topic so korrekt?

WLED01/Statusdisplay/
(d.h. ich ersetze wled/schranklicht/ durch WLED01/Statusdisplay/)

In WLED habe ich unter Config -> Sync Interfaces folgendes eingetragen:
Oder muss das Topic so heißen?
wled/WLED01/Statusdisplay/

Wenn ich mit mqtt.fx mitlausche und im WebIF von WLED z.B. Ein/Ausschalte, erscheint dort nur "Statuslicht":

2020-06-22 23:20:05,736  INFO --- MqttFX ClientModel             : messageArrived() with topic: Statuslicht/g
2020-06-22 23:20:05,737  INFO --- MqttFX ClientModel             : messageArrived() added: message #300 to topic 'Statuslicht/g'
2020-06-22 23:20:05,804  INFO --- MqttFX ClientModel             : messageArrived() with topic: Statuslicht/c
2020-06-22 23:20:05,805  INFO --- MqttFX ClientModel             : messageArrived() added: message #301 to topic 'Statuslicht/c'
2020-06-22 23:20:05,805  INFO --- MqttFX ClientModel             : messageArrived() with topic: Statuslicht/Statuslicht
2020-06-22 23:20:05,805  INFO --- MqttFX ClientModel             : messageArrived() added: message #302 to topic 'Statuslicht/Statuslicht'
2020-06-22 23:20:05,806  INFO --- MqttFX ClientModel             : messageArrived() with topic: Statuslicht/v
2020-06-22 23:20:05,807  INFO --- MqttFX ClientModel             : messageArrived() added: message #303 to topic 'Statuslicht/v'


Viele Grüße,
Heiko
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: fabse am 30 August 2020, 17:14:51
Hallo, gibt es eine Möglichkeit die Segmente zu steuern?

Wenn ja, wie ist da der befehl?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 11 September 2020, 20:18:11
@heikoh81:
Sorry habe das jetzt erst gesehen. Ich hoffe du hast dein Problem gelöst.
Wenn nicht versuch doch das Template das hier für Wled Steuerung erzeugt wurde.
Also du legst ein MQTT2_DEVICE an:
define test mqtt2_device
Dann wählst du im Device bei set  test attrTemplate wled_controller
Dann füllst du alles aus und es sollte gehen.

@fabse:
Du meinst Segmente per MQTT?
Das geht indem du HTTP API sendest.
Also per MQTT dieses:

[mqttDeviceTopic]/api
-> Send an API call (using the HTTP API syntax).

Und für Segmente dann einen der HTTP API Befehle nehmen:
Parameter   Value Range   Description   Since Version
&SM=   0 to 9   Set the main segment (values are reported to XML)   0.9.0
&SS=   0 to 9   Select segment to apply THIS api call to   0.9.0
&SV=   0, 1 or 2   Set segment selected (2 unselects others)   0.9.0
&S=   0 to ledcount-1   Set segment start   0.9.0
&S2=   0 to ledcount   Set segment stop   0.9.0
&GP=   1 to 255   Set segment grouping   0.9.1
&SP=   0 to 255   Set segment spacing   0.9.1
&RV=   0 or 1   Reverse/Flip Segment direction   0.9.1
&SB=   0 to 255   Segment brightness   0.10.0

Steht alles auch im WLED Wiki.
https://github.com/Aircoookie/WLED/wiki

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: mbrak am 16 September 2020, 19:37:37
Hallo in die Runde

Mal ne Frage.. Hat das auch schon einer mit einem normalen Mosquitto Server in FHEM eingebunden und nicht mit dem FHEM internen MQTT2-Server?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 17 September 2020, 09:54:26
Zitat von: mbrak am 16 September 2020, 19:37:37
Mal ne Frage.. Hat das auch schon einer mit einem normalen Mosquitto Server in FHEM eingebunden und nicht mit dem FHEM internen MQTT2-Server?
Gegenfrage: Ziel ist
- MQTT_DEVICE? (=> bitte separaten Thread aufmachen, ist eine ganz andere Baustelle, aber prinzipiell _kann_ man das auch passend konfigurieren.)
- Hilfestellung beim Einsatz von MQTT2_CLIENT? (Um das vorhandene attrTemplate einfach nutzen zu können). Dann bitte nach Lektüre der commandref und des Wiki-Artikels zu diesem IO-Modul ggf. auch einen eigenen Thread aufmachen, auch das ist eine ganz andere Baustelle.

Darfst gerne von hier in den betreffenden neuen Thread verlinken ;) .
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 18 September 2020, 11:42:19
Ja, ich benutze Mosquitto auf Raspberry und in FEHM den MQTT2_CLIENT, läuft wie geschnitten Brot :-)

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: freakadings am 26 Oktober 2020, 21:26:02
Hallo zusammen,
ich habe WLED per mqtt2_device über den mqtt2_client an Moquitto angebunden, nach ein bisschen Verwirrung was das Topic anging läuft auch alles perfekt mit FHEM :)
Danke dafür!

Ich habe jetzt versucht das ganze mit der Homebridge zu nutzen und scheinbar klappt da was mit den Werten nicht:
[10/26/2020, 9:05:47 PM] [FHEM] wled_test-brightness not a number: 0
[10/26/2020, 9:05:47 PM] [FHEM]     caching: On: false (as boolean; from 'off')
[10/26/2020, 9:05:49 PM] [FHEM] wled_test delaying command Brightness with value 100
[10/26/2020, 9:05:49 PM] [FHEM] wled_test: executing set cmd for On with value true
[10/26/2020, 9:05:49 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20on
  2020-10-26 21:05:49 caching: wled_test-state: set_on
  2020-10-26 21:05:49 caching: wled_test-brightness: 204
[10/26/2020, 9:05:49 PM] [FHEM] wled_test-brightness not a number: 204
  2020-10-26 21:05:49 caching: wled_test-state: on
[10/26/2020, 9:05:49 PM] [FHEM]     caching: On: true (as boolean; from 'on')
[10/26/2020, 9:05:50 PM] [FHEM] wled_test: executing set cmd for Brightness with value 100
  2020-10-26 21:05:50 caching: wled_test-brightness: 7d52ff
[10/26/2020, 9:05:50 PM] [FHEM]     caching: Brightness: 100 (as number; from '7d52ff')
[10/26/2020, 9:05:50 PM] [FHEM]   value converted to 7d52ff
[10/26/2020, 9:05:50 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20brightness%207d52ff
  2020-10-26 21:05:50 caching: wled_test-brightness: set
[10/26/2020, 9:05:50 PM] [FHEM] wled_test-brightness not a number: set
  2020-10-26 21:05:51 caching: wled_test-brightness: 7
[10/26/2020, 9:05:51 PM] [FHEM] wled_test-brightness not a number: 7
[10/26/2020, 9:05:53 PM] [FHEM] wled_test delaying command Brightness with value 88
[10/26/2020, 9:05:53 PM] [FHEM] wled_test: executing set cmd for On with value true
[10/26/2020, 9:05:53 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20on
  2020-10-26 21:05:53 caching: wled_test-state: set_on
[10/26/2020, 9:05:53 PM] [FHEM] wled_test delaying command Brightness with value 64
[10/26/2020, 9:05:53 PM] [FHEM] wled_test: executing set cmd for On with value true
[10/26/2020, 9:05:53 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20on
[10/26/2020, 9:05:53 PM] [FHEM] wled_test delaying command Brightness with value 57
[10/26/2020, 9:05:53 PM] [FHEM] wled_test: executing set cmd for On with value true
[10/26/2020, 9:05:54 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20on
[10/26/2020, 9:05:54 PM] [FHEM] wled_test: executing set cmd for Brightness with value 57
  2020-10-26 21:05:54 caching: wled_test-brightness: 472f91
[10/26/2020, 9:05:54 PM] [FHEM]     caching: Brightness: 56 (as number; from '472f91')
[10/26/2020, 9:05:54 PM] [FHEM]   value converted to 472f91
[10/26/2020, 9:05:54 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20brightness%20472f91
  2020-10-26 21:05:55 caching: wled_test-brightness: set
[10/26/2020, 9:05:55 PM] [FHEM] wled_test-brightness not a number: set
  2020-10-26 21:05:55 caching: wled_test-brightness: 216
[10/26/2020, 9:05:55 PM] [FHEM] wled_test-brightness not a number: 216
  2020-10-26 21:05:55 caching: wled_test-state: on
[10/26/2020, 9:05:55 PM] [FHEM]     caching: On: true (as boolean; from 'on')
[10/26/2020, 9:06:53 PM] [FHEM] wled_test: executing set cmd for Saturation with value 53
  2020-10-26 21:06:53 caching: wled_test-rgb: aN
[10/26/2020, 9:06:53 PM] [FHEM] wled_test-rgb not a number: aN
[10/26/2020, 9:06:53 PM] [FHEM] wled_test-rgb not a number: aN
[10/26/2020, 9:06:53 PM] [FHEM]   value converted to aN
[10/26/2020, 9:06:53 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20rgb%20aN
[10/26/2020, 9:06:53 PM] [FHEM] wled_test: executing set cmd for Hue with value 347
[10/26/2020, 9:06:53 PM] [FHEM]   converted value is unchanged
  2020-10-26 21:06:53 caching: wled_test-rgb: set aN
[10/26/2020, 9:06:53 PM] [FHEM] wled_test-rgb not a number: set aN
[10/26/2020, 9:06:53 PM] [FHEM] wled_test-rgb not a number: set aN
  2020-10-26 21:06:53 caching: wled_test-rgb: 00000A
[10/26/2020, 9:06:53 PM] [FHEM]     caching: Hue: 239 (as number; from '00000A')
[10/26/2020, 9:06:53 PM] [FHEM]     caching: Saturation: 100 (as number; from '00000A')
[10/26/2020, 9:06:55 PM] [FHEM] wled_test: executing set cmd for Saturation with value 95
  2020-10-26 21:06:55 caching: wled_test-rgb: aN
[10/26/2020, 9:06:55 PM] [FHEM]   value converted to aN
[10/26/2020, 9:06:55 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20rgb%20aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test-rgb not a number: aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test-rgb not a number: aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test: executing set cmd for Hue with value 303
[10/26/2020, 9:06:55 PM] [FHEM]   converted value is unchanged
  2020-10-26 21:06:55 caching: wled_test-rgb: set aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test-rgb not a number: set aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test-rgb not a number: set aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test: executing set cmd for Saturation with value 100
  2020-10-26 21:06:55 caching: wled_test-rgb: aN
[10/26/2020, 9:06:55 PM] [FHEM]   value converted to aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test-rgb not a number: aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test-rgb not a number: aN
[10/26/2020, 9:06:55 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20rgb%20aN
[10/26/2020, 9:06:55 PM] [FHEM] wled_test: executing set cmd for Hue with value 336
[10/26/2020, 9:06:55 PM] [FHEM]   converted value is unchanged
[10/26/2020, 9:07:04 PM] [FHEM] wled_test delaying command Brightness with value 72
[10/26/2020, 9:07:04 PM] [FHEM] wled_test: executing set cmd for On with value true
[10/26/2020, 9:07:04 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20on
  2020-10-26 21:07:04 caching: wled_test-state: set_on
[10/26/2020, 9:07:05 PM] [FHEM] wled_test: executing set cmd for Brightness with value 72
  2020-10-26 21:07:05 caching: wled_test-brightness: aN
[10/26/2020, 9:07:05 PM] [FHEM]   value converted to aN
[10/26/2020, 9:07:05 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20brightness%20aN
[10/26/2020, 9:07:05 PM] [FHEM] wled_test-brightness not a number: aN
  2020-10-26 21:07:05 caching: wled_test-brightness: set
[10/26/2020, 9:07:05 PM] [FHEM] wled_test-brightness not a number: set
  2020-10-26 21:07:05 caching: wled_test-brightness: 0
  2020-10-26 21:07:05 caching: wled_test-state: off
[10/26/2020, 9:07:05 PM] [FHEM]     caching: On: false (as boolean; from 'off')
[10/26/2020, 9:07:05 PM] [FHEM] wled_test-brightness not a number: 0
  2020-10-26 21:07:05 caching: wled_test-rgb: 00000A
[10/26/2020, 9:07:05 PM] [FHEM]     caching: Hue: 239 (as number; from '00000A')
[10/26/2020, 9:07:05 PM] [FHEM]     caching: Saturation: 100 (as number; from '00000A')
[10/26/2020, 9:07:15 PM] [FHEM] wled_test: executing set cmd for On with value true
[10/26/2020, 9:07:15 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20on
  2020-10-26 21:07:15 caching: wled_test-state: set_on
  2020-10-26 21:07:15 caching: wled_test-brightness: 216
  2020-10-26 21:07:15 caching: wled_test-state: on
[10/26/2020, 9:07:15 PM] [FHEM]     caching: On: true (as boolean; from 'on')
[10/26/2020, 9:07:15 PM] [FHEM] wled_test-brightness not a number: 216
[10/26/2020, 9:07:21 PM] [FHEM] wled_test: executing set cmd for Saturation with value 20
  2020-10-26 21:07:21 caching: wled_test-rgb: aN
[10/26/2020, 9:07:21 PM] [FHEM] wled_test-rgb not a number: aN
[10/26/2020, 9:07:21 PM] [FHEM] wled_test-rgb not a number: aN
[10/26/2020, 9:07:21 PM] [FHEM]   value converted to aN
[10/26/2020, 9:07:21 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20rgb%20aN
[10/26/2020, 9:07:21 PM] [FHEM] wled_test: executing set cmd for Hue with value 222
[10/26/2020, 9:07:21 PM] [FHEM]   converted value is unchanged
  2020-10-26 21:07:21 caching: wled_test-rgb: set aN
[10/26/2020, 9:07:21 PM] [FHEM] wled_test-rgb not a number: set aN
[10/26/2020, 9:07:21 PM] [FHEM] wled_test-rgb not a number: set aN
[10/26/2020, 9:07:22 PM] [FHEM] wled_test delaying command Brightness with value 56
[10/26/2020, 9:07:22 PM] [FHEM] wled_test: executing set cmd for On with value true
[10/26/2020, 9:07:22 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20on
  2020-10-26 21:07:22 caching: wled_test-state: set_on
[10/26/2020, 9:07:22 PM] [FHEM] wled_test delaying command Brightness with value 97
[10/26/2020, 9:07:22 PM] [FHEM] wled_test: executing set cmd for On with value true
[10/26/2020, 9:07:22 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20on
[10/26/2020, 9:07:23 PM] [FHEM] wled_test: executing set cmd for Brightness with value 97
  2020-10-26 21:07:23 caching: wled_test-brightness: aN
[10/26/2020, 9:07:23 PM] [FHEM]   value converted to aN
[10/26/2020, 9:07:23 PM] [FHEM]   executing: http://192.168.178.xxx:xxx/fhem?cmd=set%20wled_test%20brightness%20aN
[10/26/2020, 9:07:23 PM] [FHEM] wled_test-brightness not a number: aN
  2020-10-26 21:07:23 caching: wled_test-brightness: set
[10/26/2020, 9:07:23 PM] [FHEM] wled_test-brightness not a number: set
  2020-10-26 21:07:23 caching: wled_test-brightness: 0
  2020-10-26 21:07:23 caching: wled_test-state: off
[10/26/2020, 9:07:23 PM] [FHEM]     caching: On: false (as boolean; from 'off')
[10/26/2020, 9:07:23 PM] [FHEM] wled_test-brightness not a number: 0



Lustigerweise wird die Lampe auch dunkler, wenn man Siri sagt, dass sie sie heller machen soll?!
Das Attribut homebridgeMapping ist ja per default schon gesetzt, kann es sein dass bei dem Mapping was nicht stimmt?
Liegt das an mir?
Ich habe aber außer der Raumzuweisung und dem Sirinamen nichts geändert.

defmod wled_test MQTT2_DEVICE
attr wled_test DbLogExclude .*
attr wled_test IODev mqtt2_client
attr wled_test alias wled_test
attr wled_test 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
attr wled_test devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr wled_test eventMap /effect 0:Solid/effect 2:Breathe/effect 63:Pride/effect 48:Police/
attr wled_test genericDeviceType light
attr wled_test homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr wled_test icon hue_filled_iris
attr wled_test model wled_controller
attr wled_test readingList wled/badspiegel/status:.* LWT\
  wled/badspiegel/g:.* brightness\
  wled/badspiegel/g:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }\
  wled/badspiegel/c:.* { {"rgb"=>substr("$EVENT",1,6)} }\
  wled/badspiegel/v:.* api\
  wled/badspiegel/v:.* { $EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? return : {"speed"=>$1} : return;; }\
  wled/badspiegel/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? return : {"intensity"=>$1} : return }\
  wled/badspiegel/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? return : {"palette"=>$1} : return }\
  wled/badspiegel/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? return :{"effect"=>"$1"} : return }
attr wled_test room System->Homekit,System->Test
attr wled_test setList on:noArg wled/badspiegel on\
  off:noArg wled/badspiegel off\
  toggle:noArg wled/badspiegel t\
  rgb:colorpicker,RGB wled/badspiegel/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 wled/badspiegel\
  speed:colorpicker,BRI,0,1,255 wled/badspiegel/api SX=$EVTPART1\
  intensity:colorpicker,BRI,0,1,255 wled/badspiegel/api IX=$EVTPART1\
  palette:selectnumbers,0,1,46,0,lin wled/badspiegel/api FP=$EVTPART1\
  effect:selectnumbers,0,1,101,0,lin wled/badspiegel/api FX=$EVTPART1\
  loadPreset:selectnumbers,0,1,3,0,lin wled/badspiegel/api PL=$EVTPART1\
  dimup:noArg wled/badspiegel/api A=~10\
  dimdown:noArg wled/badspiegel/api A=~-10
attr wled_test setStateList on off toggle
attr wled_test siriName Badspiegel
attr wled_test webCmd rgb:brightness:Solid:Breathe:Pride:Police



(Funfact am Rande: Man sollte nicht versuchen über Siri den Effekt "police" aufzurufen...)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 04 Januar 2021, 13:24:05
Mit dem u. a. userReadings erhält man zwei zusätzliche Readings (effectname (aktuell gewählter Effekt) und effectnumber (Anzahl der verfügbaren Effekte)), ich weiß das braucht jeder  ::)

Ich mein festgestellt zu haben das der Controller nicht immer unter dem Hostnamen erreichbar ist, hab aber auch keinen Kondensator und Widerstand verbaut, kann nicht ausschliessen das es daran liegt, über IP hab ich keine Erreichbarkeitsprobleme.

Bin mir nicht sicher ob userReadings mit setreading der richtige Weg ist, klappt aber alles, es gibt Events beim auswählen eines Effekts bei effectname und effectnumber mit setreading.

Wenn man mit periodicCmd in period auf Events reagieren könnte, wär es auch über einen getter umsetzbar und cool.

Schade das man in FHEM-Widget kein Perl verwenden kann, hier wär mit effectnumber sowas möglich das der setter nicht statisch ist:

effect:selectnumbers,0,1,{my $en=ReadingsVal($NAME,"effectnumber","0");$en.",0,lin wled/538e36/api FX=".$EVTPART1}

effectname:effect.* {my $h="http://".InternalVal($NAME,'CID','0')."/json";$h=~s/_/-/g; HttpUtils_NonblockingGet( {url=>"$h", callback=>sub($$$) { my ($hash, $err, $data) = @_; $data =~ m,effects..\[([^[]*?)],;my $s=$1;$s=~s/"//g;$s=~ s/\n//g;my @a= split(/,/ , $s);my $i = ReadingsNum($NAME,"effect","1");;my $an=@a;$a=$a[$i];fhem("setreading $NAME effectname $a;setreading $NAME effectnumber $an")}

Kann das mal wer testen ?

Gruß

Thomas

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 05 Januar 2021, 17:52:54
Hi TomLee,

teste es gerne. Bin mir gerade nicht ganz sicher wo isch das eintragen soll?
Bei userReadings oder als eventMap? Sorry für die blöde Frage.

@frakadings:
Ich habe nur Alexa. Folgendes Mapping wurde bei mir erstellt
homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
Das hast du auch. Wie kannst du damit Effekte steuern?

Das Problem das du beschreibst habe ich auch. Alexa kann zwar an und ausschalten der rest geht nicht richtig.
Seltsame Werte erscheinen im WLED Device:
brightness  set 
effect           0   
intensity    128 
palette          0 
rgb        set aN

Bin mir nicht ganz sicher. Eventuell sollte nur über RGB gesteuert werden.
Wenn ich das ganze HomebridgeMapping entferne und Alexa neu starte dann funktioniert es einwandfrei.
Ich glaube dann wird nur RGB als Steuerungsreading genommen.
An/Aus geht natürlich auch.

Gruß,
Stefan

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 05 Januar 2021, 18:31:30
ja, in userReadings.

Bei mir klappt das mit dem Hostnamen nur eine unbestimmte Zeit lang nach einem restart des Controllers.

Wenn ich die IP nehme klappts immer:

effectname:effect.* {my $h="http://192.168.XXX.XX/json";$h=~s/_/-/g; HttpUtils_NonblockingGet( {url=>"$h", callback=>sub($$$) { my ($hash, $err, $data) = @_; $data =~ m,effects..\[([^[]*?)],;my $s=$1;$s=~s/"//g;$s=~ s/\n//g;my @a= split(/,/ , $s);my $i = ReadingsNum($NAME,"effect","1");;my $an=@a;$a=$a[$i];fhem("setreading $NAME effectname $a;setreading $NAME effectnumber $an")} }) }
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 05 Januar 2021, 18:51:33
Ich nutze eigentlich nur einen Effekt und das auch erst seit letzter Woche, mit Alexa zu steuern bin ich noch gar nicht auf die Idee gekommen.

Hab ich jetzt mal ausprobiert, aber nicht mit alexa-fhem sondern mit dem "Emulator" der unter Config->Sync Interfaces->Alexa Voice Assistant zu aktivieren ist.

Damit klappt ein/aus, Helligkeit und Farbe.

Ich meine wenn man die Helligkeit mit alexa-fhem steuern möchte dann müssten wir einfach nur den brightness-setter in pct umbenennen, test ich aber später auch mal.

Was die Steuerung der Farben mit alexa-fhem angeht, halt ich mich raus das mir zu hoch :P
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 05 Januar 2021, 19:46:53
das mit dem pct-setter war Käse.

Was mir jetzt aufgefallen ist das mit dem homebridgemapping merkwürdigerweise die Sättigung statt brightness gesteuert wird.

Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true

Das hab ich daran bemerkt das sich der Schieberegler bewegt hat rechts vom RGB-Widget als das  "geöffnet" war.

100 % über Alexa/APP gesteuert sind 100% Sättigung, 0 % sind 0% Sättigung  :o
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 06 Januar 2021, 17:03:53
Hi TomLee,

ja das mit der Namensauflösung habe ich bei mir auch.
Das mit brightness und saturation liegt glaube ich daran dass die Übergabe an WLED im Json dann doch nur der RGB String sein sollte.
Wie gesagt ohne Mapping geht es bei mir einwandfrei. Sowohl Farbe als auch Helligkeit.
Ich schätze dass dann nur RGB übergeben wird.
Ich verwende aber auch das WLED Interne Alexa und nicht FHEM.

Habe deine Zeile bei mir als:
userReadings
effectname:effect.* {my $h="http://192.168.69.38/json";$h=~s/_/-/g; HttpUtils_NonblockingGet( {url=>"$h", callback=>sub($$$) { my ($hash, $err, $data) = @_; $data =~ m,effects..\[([^[]*?)],;my $s=$1;$s=~s/"//g;$s=~ s/\n//g;my @a= split(/,/ , $s);my $i = ReadingsNum($NAME,"effect","1");;my $an=@a;$a=$a[$i];fhem("setreading $NAME effectname $a;setreading $NAME effectnumber $an")} }) }
eingetragen.

Was sollte da denn passieren?
Bei mir ist kein Reading dazu gekommen.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 06 Januar 2021, 20:52:40
Nachdem du einen Effekt ausgewählt hast mit dem effect-setter sollten die zwei erwähnten neuen Readings erstellt werden, natürlich musst du FHEMWEB beim ersten mal im Browser aktualisieren, danach sollte sich nach jeder Auswahl eines Effekts das Reading effectname aktualisieren und den aktuell gewählten Effektnamen beinhalten und auch das Reading effectnumber (abhängig von den gesetzten event-* bzw. timestamp.*-Attributen)

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 07 Januar 2021, 00:19:34
Hi TomLee,

ok jetzt verstehe ich.
Ja wenn ich einen Effekt auswähle kann ich nun Effectnumber und Effectname sehen.

Irgendwas läuft aber schief. Die 2 Readings aktualisieren sich ständig.
Und dann hats mir das Wled Device zerlegt.

Verstehe ich auch nicht, aber ich komm nicht mehr drauf. Neu flashen ging zwar, aber der Fehler dass es hängt und nicht mehr zugreifbar ist bleibt.

Ich werde es mal komplett löschen und neu flashen.
Sehr seltsam. Hatte noch nie solch ein Problem damit.
Dein User Reading kann das ja aber auch nicht gewesen sein.

Ich melde mich wieder wenn ich es wieder laufen habe...

Gruß,
Stefan

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stefanru am 07 Januar 2021, 18:58:13
Ok,

habe rausgefunden was los war. Alle Einstellungen waren weg. Sehr seltsam.
@TomLee: Kannst du nochmal schauen ob ich das richtig hatte?
userReadings
effectname:effect.* {my $h="http://192.168.69.38/json";$h=~s/_/-/g; HttpUtils_NonblockingGet( {url=>"$h", callback=>sub($$$) { my ($hash, $err, $data) = @_; $data =~ m,effects..\[([^[]*?)],;my $s=$1;$s=~s/"//g;$s=~ s/\n//g;my @a= split(/,/ , $s);my $i = ReadingsNum($NAME,"effect","1");;my $an=@a;$a=$a[$i];fhem("setreading $NAME effectname $a;setreading $NAME effectnumber $an")} }) }

Hat sich irgendwie seltsam verhalten und ist immer hin und her gepingt.

Gruß,
Stefan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 07 Januar 2021, 19:03:02
Hier mal meine Definition, hab keine Probleme damit:

defmod MQTT2_WLED_TV MQTT2_DEVICE WLED_538e36
attr MQTT2_WLED_TV userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr MQTT2_WLED_TV IODev MQTT2_Server
attr MQTT2_WLED_TV alexaName streifen
attr MQTT2_WLED_TV comment "http://".InternalVal($NAME,'CID','0')."
attr MQTT2_WLED_TV devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr MQTT2_WLED_TV event-on-change-reading brightness,effect,intensity,palette,rgb,speed,state,effectname,effectnumber
attr MQTT2_WLED_TV eventMap /effect 0:Solid/effect 2:Breathe/effect 63:Pride/loadPreset 1:Fire/
attr MQTT2_WLED_TV genericDeviceType light
attr MQTT2_WLED_TV group Wohnzimmer
attr MQTT2_WLED_TV homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_WLED_TV icon hue_filled_iris
attr MQTT2_WLED_TV model wled_controller
attr MQTT2_WLED_TV readingList wled/538e36/status:.* LWT\
  wled/538e36/g:.* brightness\
  wled/538e36/g:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }\
  wled/538e36/c:.* { {"rgb"=>substr("$EVENT",1,6)} }\
  wled/538e36/v:.* api\
  wled/538e36/v:.* { $EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? return : {"speed"=>$1} : return;; }\
  wled/538e36/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? return : {"intensity"=>$1} : return }\
  wled/538e36/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? return : {"palette"=>$1} : return }\
  wled/538e36/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? return :{"effect"=>"$1"} : return }
attr MQTT2_WLED_TV room MQTT2_DEVICE,Wohnzimmer
attr MQTT2_WLED_TV setList on:noArg wled/538e36 on\
  off:noArg wled/538e36 off\
  toggle:noArg wled/538e36 t\
  rgb:colorpicker,RGB wled/538e36/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 wled/538e36\
  speed:colorpicker,BRI,0,1,255 wled/538e36/api SX=$EVTPART1\
  intensity:colorpicker,BRI,0,1,255 wled/538e36/api IX=$EVTPART1\
  palette:selectnumbers,0,1,46,0,lin wled/538e36/api &T=1FP=$EVTPART1\
  effect:selectnumbers,0,1,115,0,lin wled/538e36/api FX=$EVTPART1\
  loadPreset:selectnumbers,0,1,3,0,lin wled/538e36/api PL=$EVTPART1\
  dimup:noArg wled/538e36/api A=~10\
  dimdown:noArg wled/538e36/api A=~-10\
  flash:noArg {my $v=ReadingsVal($NAME,"rgb","FFA000");;ReadingsVal($NAME,"state","off") eq "on"?fhem("set $NAME rgb FFFFFF;;sleep 0.5;;set $NAME rgb $v"):fhem("set $NAME toggle;;set $NAME rgb FFFFFF;;sleep 0.5;;set $NAME toggle")}
attr MQTT2_WLED_TV setStateList on off toggle effect loadPreset dimdown dimup
attr MQTT2_WLED_TV userReadings effectname:effect.* {my $h="http://192.168.188.52/json";;$h=~s/_/-/g;; HttpUtils_NonblockingGet( {url=>"$h", callback=>sub($$$) { my ($hash, $err, $data) = @_;; $data =~ m,effects..\[([^[]*?)],;;my $s=$1;;$s=~s/"//g;;$s=~ s/\n//g;;my @a= split(/,/ , $s);;my $i = ReadingsNum($NAME,"effect","1");;;;my $an=@a;;$a=$a[$i];;fhem("setreading $NAME effectname $a;;setreading $NAME effectnumber $an")} }) }
attr MQTT2_WLED_TV webCmd rgb:brightness:effect:Solid:Breathe:Pride:Fire:flash

setstate MQTT2_WLED_TV on
setstate MQTT2_WLED_TV 2021-01-07 17:09:29 LWT online
setstate MQTT2_WLED_TV 2021-01-07 17:09:29 api <?xml version="1.0" ?><vs><ac>128</ac><cl>255</cl><cl>160</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>45</fx><sx>128</sx><ix>128</ix><fp>0</fp><wv>0</wv><ws>0</ws><ps>1</ps><cy>0</cy><ds>WLED</ds><ss>0</ss></vs>
setstate MQTT2_WLED_TV 2021-01-07 17:09:29 brightness 128
setstate MQTT2_WLED_TV 2021-01-06 00:37:37 effect 45
setstate MQTT2_WLED_TV 2021-01-06 00:37:37 effectname Fire Flicker
setstate MQTT2_WLED_TV 2021-01-06 00:37:37 effectnumber 116
setstate MQTT2_WLED_TV 2021-01-02 20:27:51 intensity 128
setstate MQTT2_WLED_TV 2021-01-02 20:27:51 palette 0
setstate MQTT2_WLED_TV 2021-01-05 19:03:31 pct set
setstate MQTT2_WLED_TV 2021-01-07 17:09:29 rgb FFA000
setstate MQTT2_WLED_TV 2021-01-02 20:27:51 speed 128
setstate MQTT2_WLED_TV 2021-01-07 17:09:29 state on
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 29 Juni 2021, 13:13:03
wie bringe ich den Status dazu mir den Online Status auch anzuzeigen? Wie bei den anderen MQTT2 auch?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 29 Juni 2021, 17:03:52
Es gibt doch das LWT-Reading wie in den "anderen" MQTT2-Devices in irgendeiner Form auch.

Die Frage die ich mir dabei stelle ( ohne mir jetzt den Traffic angeschaut zu haben), warum der WLED-Controller kein offline in dem Zweig wled/<cid>/status "meldet", wenn man die Spannungsversorgung oder das WiFi kappt, wie bei den anderen MQTT2-Devices ?

Auf die Schnelle find ich übrigens den status-Pfad gerade gar nicht dokumentiert ?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 29 Juni 2021, 17:20:32
Zitat von: TomLee am 29 Juni 2021, 17:03:52
Es gibt doch das LWT-Reading wie in den "anderen" MQTT2-Devices in irgendeiner Form auch.
Das Problem wäre dann, dass der ESP kein "echtes LWT" sendet...

Zitat
Die Frage die ich mir dabei stelle ( ohne mir jetzt den Traffic angeschaut zu haben), warum der WLED-Controller kein offline in dem Zweig wled/<cid>/status "meldet", wenn man die Spannungsversorgung oder das WiFi kappt, wie bei den anderen MQTT2-Devices ?
Bei "echtem LWT" ist es so, dass die "offline"-Meldung vom Server (!) erzeugt (genauer: dann ausgeliefert) wird, wenn sich der Client nicht rechtzeitig - wie angekündigt - meldet.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 29 Juni 2021, 17:48:42
ZitatBei "echtem LWT" ist es so, dass die "offline"-Meldung vom Server (!) erzeugt (genauer: dann ausgeliefert) wird, wenn sich der Client nicht rechtzeitig - wie angekündigt - meldet.
Noch etwas genauer :)
Das vom Client hinterlegte LWT wird vom Server publiziert (publish), wenn die Verbindung zum Client unterbrochen ist.
Die Verbindung kann auch vom Server beendet werden, wenn der Client sich nicht an seinem keepalive Versprechen haelt.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 30 Juni 2021, 01:44:32
Sry, das mit dem LWT hatte ich mir nicht richtig angeschaut (eigentlich war ich auf dem Weg zur Dusche und dann schnell, schnell mal am Controller gespielt wegen der Frage).
Es erfolgt doch ein offline nach Zeit X, also erster Fehler war das ich länger hätte warten sollen und zweiter Denkfehler das ich FHEMWEB hätte im Browser aktualisieren müssen (weil ich eine Liste von Readings in eor angegeben habe ohne LWT siehe #101)  ::)

Zu der Frage :
Zitat
wie bringe ich den Status dazu mir den Online Status auch anzuzeigen? Wie bei den anderen MQTT2 auch?

Mit der farbigen Glühlampe könnte man es so lösen (ist nicht von mir, ist angepasst abgekupfert) und gefällt mir nicht, da bei Auswahl einer Farbe Code kurz angezeigt wird statt der Glühlampe (schließe aber nicht aus das mans auch anders/richtig/ohne dieses Verhalten lösen kann):

attr <DEVICENAME> devStateIcon {my $os = ReadingsVal($name,"LWT","offline") eq "online" ? "gruen" : "rot";;\
my $cd = Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" );;\
$cd =~ s/.*:([^:]+):.*/$1/;;\
'<div>'.FW_makeImage("10px-kreis-".$os)."<a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($cd)."</a></div>"}



Oder so, ganz simpel, ohne der farbigen Glühlampe dann halt:
attr <DEVICENAME> devStateIcon online:10px-kreis-gruen offline:10px-kreis-rot
attr <DEVICENAME> stateFormat LWT\
state


Zum ausprobieren den gezeigten Code wie er ist einfach in die Kommandozeile werfen, nur <DEVICENAME> ersetzen.

edit:

das Beispiel mit stateFormat kann man doch nicht einfach so über die Kommandozeile eingeben.
Das dann entweder über das + => Raw-Editor eingeben oder unten in irgendeinem Device über Raw definition den Raw-Editor aufrufen, den kompletten Code entfernen und den gezeigten Code einsetzen und mit execute commands bestätigen.

nochmal edit:

Bei dem Beispiel mit der farbigen Glühlampe kann man die div auch weglassen:

attr <DEVICENAME> devStateIcon {my $os = ReadingsVal($name,"LWT","offline") eq "online" ? "gruen" : "rot";;\
my $cd = Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" );;\
$cd =~ s/.*:([^:]+):.*/$1/;;\
FW_makeImage("10px-kreis-".$os)."<a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($cd)."</a>"}
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 10 September 2021, 13:40:42
Hallo zusammen,

ich würde gerne mein Wled via MQTT2 oder html einen kompletten neuen Satz an Werten übergeben.

Und zwar brightness, effect, intensity, palette, rgb, speed und state also alles, um bestimmte Effekte einzuschalten.


Kann ich das mit einem set Befehl machen?
Wenn ja, wie?
Wenn nein, wie dann? myUtils?

danke
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 10 September 2021, 14:01:23
Hallo,

an bspw. dem setList-Eintrag flash in #101 kannst dir ableiten wie man sowas in setList umsetzen könnte.

Gruß

Thomas
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 10 September 2021, 14:25:03
das habe ich schon gesehen, aber kann es nicht lesen ;)

die setList ist ja im template schon vorhanden:


on:noArg wled/garage on
  off:noArg wled/garage off
  toggle:noArg wled/garage t
  rgb:colorpicker,RGB wled/garage/col #$EVTPART1
  brightness:colorpicker,BRI,0,1,255 wled/garage
  speed:colorpicker,BRI,0,1,255 wled/garage/api SX=$EVTPART1
  intensity:colorpicker,BRI,0,1,255 wled/garage/api IX=$EVTPART1
  palette:selectnumbers,0,1,46,0,lin wled/garage/api FP=$EVTPART1
  effect:selectnumbers,0,1,101,0,lin wled/garage/api FX=$EVTPART1
  loadPreset:selectnumbers,0,1,3,0,lin wled/garage/api PL=$EVTPART1
  dimup:noArg wled/garage/api A=~10
  dimdown:noArg wled/garage/api A=~-10


ich will jetzt folgendes schalten:
brightness 255
effect 11
intensity 125
palette 2
rgb FF0000
speed 240
state on


das ganze will ich auch noch mit 2 anderen Einstellungen machen, also insgesamt 3 voreinstellungen per set MQTT senden.

wie mach ich das?

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 10 September 2021, 15:24:31
So

deinsettername:noArg {fhem("set $NAME brightness 255;set $NAME effect 11;set $NAME intensity 125;set $NAME palette 2;set $NAME rgb FF0000;set $NAME speed 240;set $NAME on")}

?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 10 September 2021, 16:03:34
cool, genau so.

jetzt verstehe ich auch den Beitrag #101

Danke nochmal!
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 05 Dezember 2021, 22:22:20
Dank der von Rudi gemachten Erweiterung in MQTT2_SERVER ist nun die IP Adresse des jeweiligen MQTT2_DEVICE Teil des Internals "<IODev>_CONN".

Rudi hat auch die SetExtensions so erweitert dass man nun den Inhalt von Widgets dynamisch erstellten kann.

Ich habe Beides gleich mal dafür verwendet um bei WLED die vorhandenen "effects" und "palettes" per Namen auswählbar zu machen.
Somit ist es nun möglich die vorhandenen Effekte anhand ihrer Nummer (Setter "effect") oder anhand ihres Namens (Setter "effectname") auszuwählen. Das Gleiche auch mit den vorhandenen Paletten. Beim Setzen anhand der Nummer wird auch das Reading für den Namen richtig gesetzt und umgekehrt.
Leider ist der Code dafür etwas komplexer geworden und erfordert zwei Funktionen in der "99_myUtils.pm".

Hier mal die nötigen Anpassungen:

1. Diese beiden Funktionen in die Datei "99_myUtils.pm" am Ende vor der schliessenden "1;" einfügen:
Code (99_myUtils.pm) Auswählen


2. Nun beim WLED MQTT2_DEVICE diese 4 Zeilen für die Setter (effect,effectname,palette,palettename) im Attribut "setList" ergänzen bzw. ändern:
Code (setList) Auswählen


3. Diese beiden Zeilen im Attribut "userReadings" hinzufügen:
Code (userReadings) Auswählen


Damit nun alles wie gewünscht funktioniert ist es nötig mindestens pro Palette und pro Effekt jeweils 1x eine Palette/Effekt mit ihrer Nummer aufzurufen. Also z.B.:
set <WLED> effect 1; set <WLED> palette 1

Nun können alle Effekte und Paletten mit ihren Namen (Setter "effectname" und "palettename") aufgerufen werden.
Etwas Schwierigkeiten gab es mit dem Effekt "Sparkle+" als Setter, weil das "+" am Ende natürlich in RegEx eine eigene Bedeutung hat. Deshalb habe ich das "+" kurzerhand durch "Plus" ersetzt.
Für die einfachere Bedienung in FHEMWEB kann man sich noch das Attribut "webCmd" setzen auf z.B.:
palettename:effectname:speed:intensity:rgb:brightness

Das Attribut "eventMap" kann man nun löschen.

Ich hoffe das kann noch jemand gebrauchen.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 07 Dezember 2021, 10:22:14
Zitat von: DeeSPe am 05 Dezember 2021, 22:22:20

1. Diese beiden Funktionen in die Datei "99_myUtils.pm" am Ende vor der schliessenden "1;" einfügen:
Code (99_myUtils.pm) Auswählen
sub WLED_getNames {
  my $dev = shift // return;
  my $na = shift // return;
  my $ip = (split("_",InternalVal($dev,"m2s_CONN",undef)))[1] // return;
  my $chash = $defs{$dev};
  my $nas = $na."s";
  HttpUtils_NonblockingGet( {
    url=>"http://$ip/json",
    callback=>sub($$$) {
      my ($hash,$err,$data) = @_;
      if ($data =~ /$nas..\[([^[]*?)]/) {
        my $s = $1;
        $s =~ s/["\n]//g;
        $s =~ s/[\s\&]/_/g;
        $s =~ s/\+/Plus/g;
        my @r = split(/,/,$s);
        readingsBeginUpdate($chash);
        readingsBulkUpdateIfChanged($chash,".".$nas."count",(scalar @r)-1);
        readingsBulkUpdateIfChanged($chash,".".$nas,$s);
        readingsEndUpdate($chash,0);
        readingsSingleUpdate($chash,$na."name",$r[ReadingsNum($dev,$na,0)],1);
      }
    }
  } )
}

sub WLED_setName($$$) {
  my $dev = shift // return;
  my $read = shift // return;
  my $val = shift // return;
  my $arr = ReadingsVal($dev,".".$read."s","") // return;
  my $wled = lc(InternalVal($dev,"CID",""));
  $wled =~ s/_/\//;
  my $top = $wled."/api F";
  $top .= $read eq "effect"?"X=":"P=";
  return $top.$val if ($val =~ /^\d\d?\d?$/);
  my $id;
  my $i = 0;
  for (split(",",$arr)) {
    if ($_ ne $val) {
      $i++;
      next;
    } else {
      $id = $i;
      last;
    }
  }
  return $top.$id;
}



Danke Dan!

kann es sein das in der Zeile
readingsSingleUpdate($chash,$na."name",$r[ReadingsNum($dev,$na,0)],1);

ein Fehler ist?
$r wurde nicht definiert bzw gehört da ein '.'?

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 10:28:07
Zitat von: australien am 07 Dezember 2021, 10:22:14

Danke Dan!

kann es sein das in der Zeile
readingsSingleUpdate($chash,$na."name",$r[ReadingsNum($dev,$na,0)],1);

ein Fehler ist?
$r wurde nicht definiert bzw gehört da ein '.'?

Es funktioniert so wie es soll mit diesem Code.
Oder hast du ein konkretes Problem dass es nicht funktioniert?
Es wurde doch "@r" definiert. Auf Elemente in einem Array greift man dann mit "$r[X]" zu.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 07 Dezember 2021, 10:45:55
Komisch, jetzt schaut es besser aus.
Bei den Auswahlfeldern war nur verschiedener Code vorhanden, jetzt nicht mehr. Aber dafür  im ersten nur mehr Default und im zweiten Solid und Police.
Keine weiteren Effecte vorhanden.

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 10:54:34
Zitat von: australien am 07 Dezember 2021, 10:45:55
Komisch, jetzt schaut es besser aus.
Bei den Auswahlfeldern war nur verschiedener Code vorhanden, jetzt nicht mehr. Aber dafür  im ersten nur mehr Default und im zweiten Solid und Police.
Keine weiteren Effecte vorhanden.

Ich zitiere mich mal selbst als Antwort darauf.
Zitat von: DeeSPe am 05 Dezember 2021, 22:22:20
Damit nun alles wie gewünscht funktioniert ist es nötig mindestens pro Palette und pro Effekt jeweils 1x eine Palette/Effekt mit ihrer Nummer aufzurufen. Also z.B.:
set <WLED> effect 1; set <WLED> palette 1

Gruß
Dan

P.S. Hattest Du auch Dein FHEM aktualisiert?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 07 Dezember 2021, 10:57:35
Gerade ein update durchgeführt und auch der Erstbefehl aus geführt.

ein List meines Gerätes schaut so aus
Internals:
   CID        WLED_garage
   DEF        WLED_garage
   DEVICETOPIC MQTT2_WLED_garage
   FUUID      60ad397f-f33f-fbda-41e4-fb1449c4abcdd91d
   IODev      myMQTT2
   LASTInputDev myMQTT2
   MSGCNT     44
   NAME       MQTT2_WLED_garage
   NR         791
   STATE      off
   TYPE       MQTT2_DEVICE
   myMQTT2_CONN myMQTT2_10.68.0.165_11839
   myMQTT2_MSGCNT 44
   myMQTT2_TIME 2021-12-07 10:55:17
   READINGS:
     2021-12-07 10:23:02   IODev           myMQTT2
     2021-12-07 10:55:16   LWT             online
     2021-12-07 10:55:17   api             <?xml version="1.0" ?><vs><ac>0</ac><cl>255</cl><cl>0</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>11</fx><sx>216</sx><ix>125</ix><fp>2</fp><wv>0</wv><ws>0</ws><ps>0</ps><cy>0</cy><ds>WLED</ds><ss>0</ss></vs>
     2021-09-07 18:48:26   attrTemplateVersion 20200522 or prior
     2021-12-07 10:55:16   brightness      0
     2021-12-07 10:54:37   effect          11
     2021-12-07 10:44:05   effectname      set effect 48
     2021-12-07 10:54:37   intensity       125
     2021-12-07 10:54:37   palette         2
     2021-12-06 18:49:44   palettename     set "Default"))))}
     2021-12-07 10:55:16   rgb             FF0000
     2021-12-07 10:54:37   speed           216
     2021-09-10 16:11:22   spot            set
     2021-12-07 10:55:16   state           off
     2021-09-10 16:08:40   streifen_gruen  set
Attributes:
   alias      MQTT2_WLED_garage
   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/garage/status:.* LWT
  wled/garage/g:.* brightness
  wled/garage/g:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }
  wled/garage/c:.* { {"rgb"=>substr("$EVENT",1,6)} }
  wled/garage/v:.* api
  wled/garage/v:.* { $EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? return : {"speed"=>$1} : return; }
  wled/garage/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? return : {"intensity"=>$1} : return }
  wled/garage/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? return : {"palette"=>$1} : return }
  wled/garage/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? return :{"effect"=>"$1"} : return }
   room       0.2.Garage,MQTT2_DEVICE
   setList    on:noArg wled/garage on
  off:noArg wled/garage off
  toggle:noArg wled/garage t
  rgb:colorpicker,RGB wled/garage/col #$EVTPART1
  brightness:colorpicker,BRI,0,1,255 wled/garage
  speed:colorpicker,BRI,0,1,255 wled/garage/api SX=$EVTPART1
  intensity:colorpicker,BRI,0,1,255 wled/garage/api IX=$EVTPART1
  loadPreset:selectnumbers,0,1,3,0,lin wled/garage/api PL=$EVTPART1
  dimup:noArg wled/garage/api A=~10
  dimdown:noArg wled/garage/api A=~-10
 
effect:{"selectnumbers,0,1,".ReadingsNum($name,".effectscount",5).",0,lin"} {WLED_setName($NAME,"effect",$EVTPART1)}
effectname:{"select,".join(",",sort(split(",",ReadingsVal($name,".effects","Solid,Police"))))} {WLED_setName($NAME,"effect",$EVTPART1)}
palette:{"selectnumbers,0,1,".ReadingsNum($name,".palettescount",5).",0,lin"} {WLED_setName($NAME,"palette",$EVTPART1)}
palettename:{"select,".join(",",sort(split(",",ReadingsVal($name,".palettes","Default"))))}  {WLED_setName($NAME,"palette",$EVTPART1)}

 
  kitt:noArg {fhem("set $NAME brightness 255;set $NAME intensity 125;set $NAME palette 2;set $NAME rgb FF0000;set $NAME speed 216;set $NAME effect 11")}
  streifen_gruen:noArg {fhem("set $NAME brightness 255;set $NAME effect 0;set $NAME intensity 78;set $NAME palette 2;set $NAME rgb 05FF2F;set $NAME speed 225")}
  spot:noArg {fhem("set $NAME brightness 255;set $NAME intensity 30;set $NAME palette 2;set $NAME rgb FFFFFF;set $NAME speed 86;set $NAME effect 85")}
   setStateList on off toggle
   userReadings effectname:effect.* {WLED_getNames($name,"effect")},
palettename:palette.* {WLED_getNames($name,"palette")}
   webCmd     palettename:effectname:speed:intensity:rgb:brightness
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 07 Dezember 2021, 11:32:42
Hab den Vorschlag auch noch nicht zum laufen gebracht.

Was mir bis jetzt aufgefallen ist :

my $ip = (split("_",InternalVal($dev,"m2s_CONN",undef)))[1] // return;

Sollte doch so lauten:

my $ip = (split("_",InternalVal($dev,"MQTT2_Server_CONN",undef)))[1] // return;

Das Internal m2s_CONN heiß bei mir MQTT2_Server_CONN.

Dann klappts aber immer noch nicht.

@Australien

Ich mein in der setList dürfen keine Leerzeilen vorkommen, die musst du definitiv rausnehmen.

edit:

Ach, eben verstehe ich das mit dem Internal, das heißt immer so wie man den MQTT2_SERVER benannt hat.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 07 Dezember 2021, 11:46:23
mit der Umbenennung des m2s_CONN in den eigenen MQTT2 Server gehen jetzt die Paletten, aber die Effecte sind immer nur noch bei Police und Solid.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 11:50:57
Sorry, ich hatte nicht gesehen dass das Internal mit der IP den Namen basierend auf dem IODev hat.
Habe die Funktion "WLED_getNames" nun oben nochmal entsprechend angepasst.
Nun sollte es klappen.

Gruß
Dan

EDIT: Musste noch eine kleine Änderung in WLED_getNames machen.
EDIT2: Musste die Ermittlung der IP Adresse auch noch einmal anpassen.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 07 Dezember 2021, 12:09:50
Ähm, kurz der Hinweis: Ich lese mit Interesse mit, habe aber im Moment noch keine Idee, wie man daraus eine sinnvolle attrTemplate-Erweiterung basteln könnte...

Hinfreich wäre es aber in jedem Fall, wenn man die IP-Adresse auch in einem Reading "verewigen" könnte, dann können es auch Leute nutzen, die MQTT2_CLIENT als IO verwenden, und den Zugriff auf den IODev-Namen könnte man über über eine etwas andere Auswertung dynamisieren. Steinbruch-Schnipsel:
InternalVal('DEVICE','LASTInputDev',AttrVal('DEVICE','IODev',InternalVal('DEVICE','IODev',undef)->{NAME})) }
müßte angepaßt also sowas ergeben:
InternalVal($dev,'LASTInputDev',AttrVal($dev,'IODev',InternalVal($dev,'IODev',undef)->{NAME})) }
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 12:14:51
Zitat von: Beta-User am 07 Dezember 2021, 12:09:50
Ähm, kurz der Hinweis: Ich lese mit Interesse mit, habe aber im Moment noch keine Idee, wie man daraus eine sinnvolle attrTemplate-Erweiterung basteln könnte...

Hinfreich wäre es aber in jedem Fall, wenn man die IP-Adresse auch in einem Reading "verewigen" könnte, dann können es auch Leute nutzen, die MQTT2_CLIENT als IO verwenden, und den Zugriff auf den IODev-Namen könnte man über über eine etwas andere Auswertung dynamisieren. Steinbruch-Schnipsel:
InternalVal('DEVICE','LASTInputDev',AttrVal('DEVICE','IODev',InternalVal('DEVICE','IODev',undef)->{NAME})) }
müßte angepaßt also sowas ergeben:
InternalVal($dev,'LASTInputDev',AttrVal($dev,'IODev',InternalVal($dev,'IODev',undef)->{NAME})) }


Ich hatte auch schon überlegt wie das in ein AttrTemplate zu gießen wäre. Bisher bin ich aber nicht auf eine Lösung gekommen wie man durch AttrTemplate die benötigten Funktionen in die "99_myUtils.pm" bekommt. Oder hast Du da eine Idee?
Bei MQTT2 steht das IODev doch im Reading IODev. So habe ich es jetzt zumindest im Code umgesetzt.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 07 Dezember 2021, 12:50:38
Readings sind uU. trügerisch, insbes. was IODev angeht (siehe andere Diskussion dazu).

myUtils-Code dazu zur Verfügung zu stellen ist kein Problem, das passiert an anderer Stelle auch "ständig"... (ebus, Sauger, z2m-Thermostate, sonos2mqtt...). Allerdings gleich die Warnung: Jedenfalls ich werde den nicht so "dreckig" einchecken ;D , wenn, dann muss der auf ein "akzeptables Qualitäts-Level" wie in etwa die anderen Beispiele auch, die in https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/ zu finden sind :P .
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 07 Dezember 2021, 13:25:24
Weniger sauber oder nicht solange das nicht vertemplated  ::) worden ist, gehört die Variablendeklaration von $chash wieder ergänzt die bei der letzten Änderung untergegangen ist.

my $chash = $defs{$dev};
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 13:29:06
Oh, das wusste ich bisher nicht dass man Code so für AttrTemplate zur Verfügung stellen kann.
Was meinst Du mit "dreckig" und "akzeptables Qualitäts-Level"? Dass ich den Code in so eine Datei auslagern soll?
Denn ich habe mir beim Code schreiben Mühe gegeben und finde ihn alles andere als "dreckig".

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 13:31:20
Zitat von: TomLee am 07 Dezember 2021, 13:25:24
Weniger sauber oder nicht solange das nicht vertemplated  ::) worden ist, gehört die Variablendeklaration von $chash wieder ergänzt die bei der letzten Änderung untergegangen ist.

my $chash = $defs{$dev};

Danke für den Hinweis.
Habe ich wohl versehentlich vorhin beim ändern der $ip Variablen mit rausgelöscht.
Ist wieder eingefügt. ;)

Gruß
Dan

P.S. Danke für's Testen und Probleme finden.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 07 Dezember 2021, 13:37:56
Zitat von: DeeSPe am 07 Dezember 2021, 13:29:06
Oh, das wusste ich bisher nicht dass man Code so für AttrTemplate zur Verfügung stellen kann.
Dann mal Willkommen an Bord :) .

Zitat
Was meinst Du mit "dreckig" und "akzeptables Qualitäts-Level"? Dass ich den Code in so eine Datei auslagern soll?
Denn ich habe mir beim Code schreiben Mühe gegeben und finde ihn alles andere als "dreckig".
War nicht persönlich gemeint, und das sieht auch prinzipiell "ganz ok" aus, erfüllt aber nicht diese beiden "essentials" (aus meiner Warte):
- gepackaged
- perlcritic meckert höchstens bei Kleinigkeiten auf Level 3 rum (Pflaster sind nur erlaubt, was den package-Namen angeht; hier sollte das ohne weitere Meckereien gehen, "verhauen lassen" geht kostenlos online unter perlcritic.com)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 07 Dezember 2021, 14:45:05
Zitat von: DeeSPe am 07 Dezember 2021, 13:31:20


P.S. Danke für's Testen und Probleme finden.

Wieso steht eigentlich bei setList
effectname:{"select,".join(",",sort(split(",",ReadingsVal($name,".effects","Solid,Police"))))} {WLED_setName($NAME,"effect",$EVTPART1)}
"Solid,Police", dass sind die einzigen Effecte die ich sehe!?
Also warum die im ReadinsVal sind, ist mir schon klar, aber warum wird sonst nichts gefunden, bei den Paletten funktioniert es.


Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 14:54:18
Zitat von: australien am 07 Dezember 2021, 14:45:05
Wieso steht eigentlich bei setList
effectname:{"select,".join(",",sort(split(",",ReadingsVal($name,".effects","Solid,Police"))))} {WLED_setName($NAME,"effect",$EVTPART1)}
"Solid,Police", dass sind die einzigen Effecte die ich sehe!?
Also warum die im ReadinsVal sind, ist mir schon klar, aber warum wird sonst nichts gefunden, bei den Paletten funktioniert es.

Das ist nur als Fallback angegeben damit das neu entstandene Dropdown schon einen Inhalt hat bevor man 1x einen Effekt per Nummer ausgewählt hat.
Hast Du denn schon 1x einen Effekt per Nummer aufgerufen (z.B. "set <WLED> effect 10")? Denn nur so entsteht der richtige Inhalt der Dropdowns.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 14:56:12
Zitat von: Beta-User am 07 Dezember 2021, 13:37:56
Dann mal Willkommen an Bord :) .
War nicht persönlich gemeint, und das sieht auch prinzipiell "ganz ok" aus, erfüllt aber nicht diese beiden "essentials" (aus meiner Warte):
- gepackaged
- perlcritic meckert höchstens bei Kleinigkeiten auf Level 3 rum (Pflaster sind nur erlaubt, was den package-Namen angeht; hier sollte das ohne weitere Meckereien gehen, "verhauen lassen" geht kostenlos online unter perlcritic.com)

Ich versuche mal Deine Punkte umzusetzen und gebe Dir dann wieder Bescheid.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: australien am 07 Dezember 2021, 14:58:12
Zitat von: DeeSPe am 07 Dezember 2021, 14:54:18
Das ist nur als Fallback angegeben damit das neu entstandene Dropdown schon einen Inhalt hat bevor man 1x einen Effekt per Nummer ausgewählt hat.
Hast Du denn schon 1x einen Effekt per Nummer aufgerufen (z.B. "set <WLED> effect 10")? Denn nur so entsteht der richtige Inhalt der Dropdowns.

Gruß
Dan

Ich hatte es mehrmals, wie beschrieben, mit
set  MQTT2_WLED_garage effect 1; set  MQTT2_WLED_garage palette 1
gemacht, kein Erfolg.
Nun hab ich es mit
set  MQTT2_WLED_garage effect 11
alleine probiert, siehe da, alles da!

Warum, keine Ahnung, aber ist so.

Sorry für meine Nachfragen und danke für die Hilfe!
Robert
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 07 Dezember 2021, 17:18:43
Kommt bei irgendwem der hier mitliest und WLED auch nutzt in dem Info-Objekt des JSON die IP mit ?
Ich nutze noch 0.12.0, da kommt zwar lip mit ist aber leer "lip":"" und ip gibts gar nicht.

Bei irgendeiner Version muss sie ja mal dabei gewesen sein:
Info-Objekt (https://kno.wled.ge/interfaces/json-api/#info-object)
ZitatNo value may be changed by means of this API.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 17:39:41
Zitat von: TomLee am 07 Dezember 2021, 17:18:43
Ich nutze noch 0.12.0, da kommt zwar lip mit ist aber leer "lip":"" und ip gibts gar nicht.

Ist bei mir auch so.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 07 Dezember 2021, 18:22:42
Was für eine Version nutzt du denn ?

Es steht zwar nix dazu in der Doku, aber es wär auch toll (ich brauchs nicht) die Presets mit dem vergebenen Namen setzen zu können, in dem state-Objekt kommt zwar die ID mit, aber nicht der Name, - Wunschdenken on - in der neuesten Version vlt. doch aber noch nicht dokumentiert ?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 07 Dezember 2021, 18:33:47
Ich nutze 0.13.0-b5. Ist die letzte Beta.
Wollte die Presets natürlich auch gern per Namen aufrufbar machen aber hier sind sie auch nicht mit Namen enthalten.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: KernSani am 07 Dezember 2021, 23:25:48
Gerade meinen WLED zusammengelötet, Template eingespielt, geärgert dass Effekte und Paletten nur als Zahlen kommen, diesen Post gefunden. Funktioniert :-) Klasse Erweiterung, Dan!
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 08 Dezember 2021, 14:31:56
@Beta-User:
Ich habe soeben mal das AttrTemplate für WLED angepasst:
#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
{ Svn_GetFile("contrib/AttrTemplate/99_attrT_WLED_Utils.pm", "FHEM/99_attrT_WLED_Utils.pm", sub(){ CommandReload(undef, "99_attrT_WLED_Utils") }) }
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 on\
  off:noArg BASE_ID/DEVNAME off\
  toggle:noArg BASE_ID/DEVNAME t\
  rgb:colorpicker,RGB BASE_ID/DEVNAME/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME\
  speed:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api SX=$EVTPART1\
  intensity:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api IX=$EVTPART1\
  effect:{"selectnumbers,0,1,".ReadingsNum($name,".effectscount",5).",0,lin"} BASE_ID/DEVNAME/api FX=$EVTPART1\
  effectname:{"select,".join(",",sort(split(",",ReadingsVal($name,".effects","Solid,Police"))))} {WLED_setName($NAME,"effect",$EVTPART1)}\
  palette:{"selectnumbers,0,1,".ReadingsNum($name,".palettescount",5).",0,lin"} BASE_ID/DEVNAME/api FP=$EVTPART1\
  palettename:{"select,".join(",",sort(split(",",ReadingsVal($name,".palettes","Default,Party"))))}  {WLED_setName($NAME,"palette",$EVTPART1)}\
  loadPreset:selectnumbers,0,1,3,0,lin BASE_ID/DEVNAME/api PL=$EVTPART1\
  dimup:noArg BASE_ID/DEVNAME/api A=~10\
  dimdown:noArg BASE_ID/DEVNAME/api A=~-10
attr DEVICE readingList \
  BASE_ID/DEVNAME/status:.* LWT\
  BASE_ID/DEVNAME/g:.* brightness\
  BASE_ID/DEVNAME/g:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }\
  BASE_ID/DEVNAME/c:.* { {"rgb"=>substr("$EVENT",1,6)} }\
  BASE_ID/DEVNAME/v:.* api\
  BASE_ID/DEVNAME/v:.* { $EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? return : {"speed"=>$1} : return; }\
  BASE_ID/DEVNAME/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? return : {"intensity"=>$1} : return }\
  BASE_ID/DEVNAME/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? return : {"palette"=>$1} : return }\
  BASE_ID/DEVNAME/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? return :{"effect"=>"$1"} : return }
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE devStateIcon {Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" )}
attr DEVICE webCmd rgb:brightness:effectname:speed:intensity:palettename:loadPreset
attr DEVICE webCmdLabel RGB:Brightness\
:Effect:Speed:Intensity\
:Palette:Preset
attr DEVICE userReadings effectname:effect.* {WLED_getNames($name,"effect")},\
palettename:palette.* {WLED_getNames($name,"palette")}
attr DEVICE setStateList on off toggle
attr DEVICE 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
set DEVICE attrTemplate speechcontrol_type_light_255
farewell:template has been applied successfully. <br>Note: webCmd is just an example; adopt this to your needs.
attr DEVICE model wled_controller
setreading DEVICE attrTemplateVersion 20211208 or prior


Und eine entsprechende Modul Datei für den Code erstellt (siehe Anhang), inkl. der gewünschten Anpassungen.

Ist das so passend? Oder fehlt noch etwas?

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 08 Dezember 2021, 14:52:09
 :) Werd's einchecken, obwohl bis auf einen "4-er" noch Potential besteht:
ZitatTotal violations:     8
Severity 5:            0
Severity 4:            2
Severity 3:            6
PS:
Einfach-Quotes würden es in der Regel auch tun, und
".".$nas."count"
würde ich vermutlich eher so notieren:
".${nas}count"
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 08 Dezember 2021, 15:03:14
Okay, ich werde mal noch weiter an der Kritik arbeiten. ;)

Irgendwas stimmt noch nicht mit dem Aufruf der Funktionen.
Habe mal meine Funktionsdatei eingespielt und neu gestartet, aber statt des Namens kommt nun im entsprechenden Reading:
Error evaluating WLED1 userReading effectname: Undefined subroutine &main::WLED_getNames called at (eval 12375) line 1.

Wie muss ich denn jetzt die Funktionen aus meiner .pm aufrufen?
Sorry, kenne mich mit Packaging noch nicht aus.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 08 Dezember 2021, 15:08:34
Okay, habe es selbst herausgefunden wie die Funktionen aufzurufen sind.
Ich ändere das mal überall und gebe dann ein Update.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 08 Dezember 2021, 16:57:40
Zitat von: DeeSPe am 08 Dezember 2021, 15:08:34
Ich ändere das mal überall und gebe dann ein Update.

Stimmst du mir zu setstateList um loadPreset, dimdown und dimup zu ergänzen ?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 08 Dezember 2021, 17:12:04
Zitat von: TomLee am 08 Dezember 2021, 16:57:40
Stimmst du mir zu setstateList um loadPreset, dimdown und dimup zu ergänzen ?
...irritiert schau...
Warum das denn? Nach meiner Auffassung sollten in setStateList nur Infos stehen, die den "Hauptschalter" repräsentieren. Oder gibt das irgendwie Probleme mit den settern bei den Readings?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 08 Dezember 2021, 17:18:32
Weil in den Readings dazu immer nur set stehen würde, weil da ja nix zurückkommt ?

defmod MQTT2_WLED_TV MQTT2_DEVICE WLED_538e36
attr MQTT2_WLED_TV userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr MQTT2_WLED_TV IODev MQTT2_Server
attr MQTT2_WLED_TV alexaName streifen
attr MQTT2_WLED_TV comment "http://".InternalVal($NAME,'CID','0')."\
effect:selectnumbers,0,1,115,0,lin wled/538e36/api FX=$EVTPART1\
effectname:effect.* {my $h="http://192.168.188.95/json";;$h=~s/_/-/g;; HttpUtils_NonblockingGet( {url=>"$h", callback=>sub($$$) { my ($hash, $err, $data) = @_;; $data =~ m,effects..\[([^[]*?)],;;my $s=$1;;$s=~s/"//g;;$s=~ s/\n//g;;my @a= split(/,/ , $s);;my $i = ReadingsNum($NAME,"effect","1");;;;my $an=@a;;$a=$a[$i];;fhem("setreading $NAME effectname $a;;setreading $NAME effectnumber $an")} }) }
attr MQTT2_WLED_TV devStateIcon {my $os = ReadingsVal($name,"LWT","offline") eq "online" ? "gruen" : "rot";;\
my $cd = Color::devStateIcon( $name, "rgb", "rgb", "brightness", "state" );;\
$cd =~ s/.*:([^:]+):.*/$1/;;\
FW_makeImage('10px-kreis-'.$os)."<a href='/fhem?cmd.dummy=set $name toggle&XHR=1'>".FW_makeImage($cd).'</a>'}
attr MQTT2_WLED_TV event-on-change-reading brightness,effect,intensity,palette,rgb,speed,state,effectname,effectnumber,ircode,LWT,palettename
attr MQTT2_WLED_TV event-on-update-reading ircode
attr MQTT2_WLED_TV eventMap /effect 0:Solid/effect 2:Breathe/effect 63:Pride/loadPreset 1:Fire/
attr MQTT2_WLED_TV genericDeviceType light
attr MQTT2_WLED_TV group Wohnzimmer
attr MQTT2_WLED_TV homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
attr MQTT2_WLED_TV icon hue_filled_iris
attr MQTT2_WLED_TV model wled_controller
attr MQTT2_WLED_TV readingList wled/538e36/status:.* LWT\
  wled/538e36/g:.* brightness\
  wled/538e36/g:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }\
  wled/538e36/c:.* { {"rgb"=>substr("$EVENT",1,6)} }\
  wled/538e36/v:.* api\
  wled/538e36/v:.* { $EVENT =~ m,(?<=<sx>)([\d]+)(?=<\/sx>), ? $1 eq ReadingsVal($NAME,"speed","unknown") ? return : {"speed"=>$1} : return;; }\
  wled/538e36/v:.* {$EVENT =~ m,(?<=<ix>)([\d]+)(?=<\/ix>), ? $1 eq ReadingsVal($NAME,"intensity","unknown") ? return : {"intensity"=>$1} : return }\
  wled/538e36/v:.* {$EVENT =~ m,(?<=<fp>)([\d]+)(?=<\/fp>), ? $1 eq ReadingsVal($NAME,"palette","unknown") ? return : {"palette"=>$1} : return }\
  wled/538e36/v:.* {$EVENT =~ m,(?<=<fx>)([\d]+)(?=<\/fx>), ? $1 eq ReadingsVal($NAME,"effect","unknown") ? return :{"effect"=>"$1"} : return }\
WLED_538e36:wled/538e36/ircode:.* ircode
attr MQTT2_WLED_TV room MQTT2_DEVICE,Privat->OG->Wohnzimmer
attr MQTT2_WLED_TV setList on:noArg wled/538e36 on\
off:noArg wled/538e36 off\
toggle:noArg wled/538e36 t\
rgb:colorpicker,RGB wled/538e36/col #$EVTPART1\
brightness:colorpicker,BRI,0,1,255 wled/538e36\
speed:colorpicker,BRI,0,1,255 wled/538e36/api SX=$EVTPART1\
intensity:colorpicker,BRI,0,1,255 wled/538e36/api IX=$EVTPART1\
palette:selectnumbers,0,1,46,0,lin wled/538e36/api &T=1FP=$EVTPART1\
effect:knob,min:0,max:119,width:70,height:70,step:1,lineCap:round,angleOffset:180,cursor:3,thickness:.3 wled/538e36/api FX=$EVTPART1   \
loadPreset:selectnumbers,0,1,3,0,lin wled/538e36/api PL=$EVTPART1\
dimup:noArg wled/538e36/api A=~10\
dimdown:noArg wled/538e36/api A=~-10\
flash:noArg {my $v=ReadingsVal($NAME,"rgb","FFA000");;ReadingsVal($NAME,"state","off") eq "on"?fhem("set $NAME rgb FFFFFF;;sleep 0.5;;set $NAME rgb $v"):fhem("set $NAME toggle;;set $NAME rgb FFFFFF;;sleep 0.5;;set $NAME toggle")}\
effect:{"selectnumbers,0,1,".ReadingsNum($name,".effectscount",5).",0,lin"} {WLED_setName($NAME,"effect",$EVTPART1)}\
effectname:{"select,".join(",",sort(split(",",ReadingsVal($name,".effects","Solid,Police"))))} {WLED_setName($NAME,"effect",$EVTPART1)}\
palette:{"selectnumbers,0,1,".ReadingsNum($name,".palettescount",5).",0,lin"} {WLED_setName($NAME,"palette",$EVTPART1)}\
palettename:{"select,".join(",",sort(split(",",ReadingsVal($name,".palettes","Default"))))}  {WLED_setName($NAME,"palette",$EVTPART1)}
attr MQTT2_WLED_TV setStateList on off toggle loadPreset dimdown dimup
attr MQTT2_WLED_TV stateFormat LWT\ state
attr MQTT2_WLED_TV userReadings effectname:effect.* {WLED_getNames($name,"effect")},\
palettename:palette.* {WLED_getNames($name,"palette")}
attr MQTT2_WLED_TV webCmd rgb:brightness:effectname:speed:loadPreset:palettename:intensity
attr MQTT2_WLED_TV webCmdLabel RGB:Brightness\
:Effect:Speed:Preset\
:Palette:Intensity

setstate MQTT2_WLED_TV online\ on
setstate MQTT2_WLED_TV 2021-12-07 12:46:21 .effects Solid,Blink,Breathe,Wipe,Wipe_Random,Random_Colors,Sweep,Dynamic,Colorloop,Rainbow,Scan,Scan_Dual,Fade,Theater,Theater_Rainbow,Running,Saw,Twinkle,Dissolve,Dissolve_Rnd,Sparkle,Sparkle_Dark,SparklePlus,Strobe,Strobe_Rainbow,Strobe_Mega,Blink_Rainbow,Android,Chase,Chase_Random,Chase_Rainbow,Chase_Flash,Chase_Flash_Rnd,Rainbow_Runner,Colorful,Traffic_Light,Sweep_Random,Running_2,Aurora,Stream,Scanner,Lighthouse,Fireworks,Rain,Tetrix,Fire_Flicker,Gradient,Loading,Police,Police_All,Two_Dots,Two_Areas,Circus,Halloween,Tri_Chase,Tri_Wipe,Tri_Fade,Lightning,ICU,Multi_Comet,Scanner_Dual,Stream_2,Oscillate,Pride_2015,Juggle,Palette,Fire_2012,Colorwaves,Bpm,Fill_Noise,Noise_1,Noise_2,Noise_3,Noise_4,Colortwinkles,Lake,Meteor,Meteor_Smooth,Railway,Ripple,Twinklefox,Twinklecat,Halloween_Eyes,Solid_Pattern,Solid_Pattern_Tri,Spots,Spots_Fade,Glitter,Candle,Fireworks_Starburst,Fireworks_1D,Bouncing_Balls,Sinelon,Sinelon_Dual,Sinelon_Rainbow,Popcorn,Drip,Plasma,Percent,Ripple_Rainbow,Heartbeat,Pacifica,Candle_Multi,_Solid_Glitter,Sunrise,Phased,Twinkleup,Noise_Pal,_Sine,Phased_Noise,Flow,Chunchun,Dancing_Shadows,Washing_Machine,Candy_Cane,Blends,TV_Simulator,Dynamic_Smooth
setstate MQTT2_WLED_TV 2021-12-07 12:46:21 .effectscount 117
setstate MQTT2_WLED_TV 2021-12-07 12:46:38 .palettes Default,*_Random_Cycle,*_Color_1,*_Colors_1_2,*_Color_Gradient,*_Colors_Only,Party,Cloud,Lava,Ocean,Forest,Rainbow,Rainbow_Bands,Sunset,Rivendell,Breeze,Red___Blue,Yellowout,Analogous,Splash,Pastel,Sunset_2,Beech,Vintage,Departure,Landscape,Beach,Sherbet,Hult,Hult_64,Drywet,Jul,Grintage,Rewhi,Tertiary,Fire,Icefire,Cyane,Light_Pink,Autumn,Magenta,Magred,Yelmag,Yelblu,Orange___Teal,Tiamat,April_Night,Orangery,C9,Sakura,Aurora,Atlantica,C9_2,C9_New,Temperature,Aurora_2
setstate MQTT2_WLED_TV 2021-12-07 12:46:38 .palettescount 55
setstate MQTT2_WLED_TV 2021-12-05 10:18:24 IODev MQTT2_Server
setstate MQTT2_WLED_TV 2021-12-08 16:52:23 LWT online
setstate MQTT2_WLED_TV 2021-12-08 16:52:23 api <?xml version="1.0" ?><vs><ac>112</ac><cl>255</cl><cl>160</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>52</fx><sx>6</sx><ix>56</ix><fp>8</fp><wv>0</wv><ws>0</ws><ps>0</ps><cy>0</cy><ds>WLED_TV</ds><ss>0</ss></vs>
setstate MQTT2_WLED_TV 2021-12-08 16:52:23 brightness 112
setstate MQTT2_WLED_TV 2021-09-10 15:22:58 deinsettername set
setstate MQTT2_WLED_TV 2021-12-08 16:48:25 dimdown set
setstate MQTT2_WLED_TV 2021-12-08 16:47:30 dimup set
setstate MQTT2_WLED_TV 2021-12-08 16:52:23 effect 52
setstate MQTT2_WLED_TV 2021-12-08 16:52:23 effectname Circus
setstate MQTT2_WLED_TV 2021-09-10 22:48:36 effectnumber 118
setstate MQTT2_WLED_TV 2021-12-08 16:21:18 intensity 56
setstate MQTT2_WLED_TV 2021-12-08 16:42:51 ircode 0x71fe45b1
setstate MQTT2_WLED_TV 2021-12-08 16:47:56 loadPreset set 1
setstate MQTT2_WLED_TV 2021-12-08 16:49:54 palette 8
setstate MQTT2_WLED_TV 2021-12-08 16:49:55 palettename Lava
setstate MQTT2_WLED_TV 2021-12-08 16:52:23 rgb FFA000
setstate MQTT2_WLED_TV 2021-12-08 09:12:39 speed 6
setstate MQTT2_WLED_TV 2021-12-08 16:52:23 state on

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 08 Dezember 2021, 17:32:03
Das mag jetzt irritirend sein das die Readings in dem List vorhanden sind, ich hab sie bloss noch nicht gelöscht seit vorhin, als ich bevor ich schrieb nochmal getestet hatte warum ich die Namen in setstatList eingetragen hatte.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 08 Dezember 2021, 17:33:13
Ja. Und?
Besser, wie wenn der state mit was gefüllt wird, was da nicht hingehört (mAn.) ;) . Kann man notfalls mit einem periodicCmd löschen, wenn's einem nicht gefällt :) .
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 08 Dezember 2021, 17:43:46
Na ja, das steht ja nur solange drin bis wieder was in state landet.

Beim ValetudoRE-Template ist das auch so umgesetzt, Otto denkt dann wsl. so wie ich.


ZitatKann man notfalls mit einem periodicCmd löschen, wenn's einem nicht gefällt :) .

Da seh ich lieber "zufällig" mal eines der 3 Rückgabewerte der setter in state, wie drei unnötig angelegte Reading, die mal da sind und mal nicht.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 08 Dezember 2021, 18:20:09
Zitat von: TomLee am 08 Dezember 2021, 16:57:40
Stimmst du mir zu setstateList um loadPreset, dimdown und dimup zu ergänzen ?

Für dimdown und dimup stimme ich Dir zu, das braucht kein eigenes Reading und in "state" wird es sofort nach dem Setzen wieder mit "on/off" ersetzt.
Für loadPreset habe ich nun im AttrTemplate ein eigenes Reading mit eingebaut. Das Reading "loadPreset" wird also wie bisher erst mit "set X" gefüllt und danach dann aber auf die Nummer des gesetzten Presets gesetzt.

@Beta-User:
Hier nun das fertige AttrTemplate:
entfernt

Und im Anhang die Moduldatei.
Bis auf einen Eintrag aus Perlcritic habe ich alles beherzigt. Ich weiß einfach nicht was er mir mit "Always unpack @_ first at line 40, column 1. See page 178 of PBP." sagen möchte bzw. wie ich es weg bekommen soll.
Ich würde mich freuen wenn Du das so einchecken könntest.

Danke.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 08 Dezember 2021, 23:00:04
Ich habe mich nochmal durch die API Doku von WLED gelesen und noch ein paar weitere Setter eingebaut.
Auch das Auflösen der Effekte- und Palettennamen über "userReadings" war nicht ganz glücklich. Bei mir kam es immer wieder zu dem Problem dass teilweise die Namen nicht aufgelöst wurden.

Ich habe darum das AttrTemplate und die Moduldatei im vorherigen Beitrag noch einmal etwas umgebaut und auf den aktuellen Stand gebracht.

Zusätzlich habe ich "loadPreset" geändert in "preset" und "brightness" in "bri".
Und es gibt ein userReading für "pct".

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 08 Dezember 2021, 23:28:30
Was ist denn für dich der Hintergrund das brightness jetzt in bri umbenannt werden sollte ?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: KernSani am 09 Dezember 2021, 00:33:43
Ich habe bei mir die setlist noch ergänzt um:

apiraw wled/dced1e/api $EVTPART1
seg wled/dced1e/api {"seg":{"i":[$EVTPART1,[$EVTPART2]]}}

"apiraw" um die API direkt anzusprechen und "seg" um einzelne LEDs mit einem Farbwert zu versorgen. Für mich persönlich ganz hilfreich... 
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 09 Dezember 2021, 09:17:29
Zitat von: TomLee am 08 Dezember 2021, 23:28:30
Was ist denn für dich der Hintergrund das brightness jetzt in bri umbenannt werden sollte ?

Ich habe mich dabei nur an anderen Lichtern orientiert. Bei meinen Hue Lichtern heißt das Reading z.B. auch "bri" (0-255).
Auch gibt es bei Hue Lichtern das Reading "pct" (0-100), andere Lichtmodule setzen das auch als Reading "dim" (0-100) um.
Eigentlich sollte es laut Doku auch "hue" (0-65535) und "sat" (0-255) geben, das hat bei mir aber nicht geklappt abzurufen.

Zitat von: KernSani am 09 Dezember 2021, 00:33:43
Ich habe bei mir die setlist noch ergänzt um:

apiraw wled/dced1e/api $EVTPART1
seg wled/dced1e/api {"seg":{"i":[$EVTPART1,[$EVTPART2]]}}

"apiraw" um die API direkt anzusprechen und "seg" um einzelne LEDs mit einem Farbwert zu versorgen. Für mich persönlich ganz hilfreich... 
Das ist auch nicht schlecht. Werde es wohl eher weniger brauchen (ich nehme lieber Presets), habe es aber trotzdem mal bei mir ergänzt.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 09 Dezember 2021, 09:39:28
Ein paar kurze Anmerkungen:
- Wenn das Ding "nativ" bri/brightness 0-255 "spricht", würde ich gar nicht erst nicht umrechnen, machen wir bei anderen Leuchten auch nicht (wer will/muss, kann ja, aber es ist für die Funktionalität an sich nicht essentiell). Was den Namen angeht, würde mir weiterhin "brightness" besser gefallen, das wäre afaik auch der eher "standardisierte" Readingname (zumindest innerhalb der MQTT2-Welt).

- Funktioniert das mit der IP-Adresse auch mit MQTT2_CLIENT? Wenn nein, wäre mein Vorschlag, dazu noch im Hintergrund eine ReadingsVal()-Abfrage einzubauen, damit diese "Zielgruppe" einfach einmalig ein "setreading" ausführen kann, um das Ding "voll" nutzen zu können. Sonst müßte ich vermutlich ein 2., einfaches attrTemplate anbieten.

- hue und sat wären natürlich die "Krönung". Ist das ein allgemeines firmware-Problem oder kann das ggf. einfach nur der konkret eingesetzte Controller-Baustein nicht? Im ersteren Fall sollten wir das erst mal raus lassen, wenn es "manchmal" geht, könnte man ein Einheits-attrTemplate mit den settern machen und einen comment setzen.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 09 Dezember 2021, 10:16:01
Nachtrag: Da wir sowieso den "v"-Topic in myUtils auswerten: Wäre es nicht sinnvoll, eine "one for all"-myUtils-Lösung zu basteln? Wenn aus der myUtils ein Hash zurückgegeben wird, versteht MQTT2_DEVICE das als Reading=>Value-Paare ;) .
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 09 Dezember 2021, 11:53:11
Zum Testen (wenn möglich erst mal auf einem Testsystem, bitte!):

#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 and https://forum.fhem.de/index.php/topic,98880.0.html for template development).
order:W_01
{ Svn_GetFile("contrib/AttrTemplate/99_attrT_WLED_Utils.pm", "FHEM/99_attrT_WLED_Utils.pm", sub(){ CommandReload(undef, "99_attrT_WLED_Utils") }) }
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 on\
  off:noArg BASE_ID/DEVNAME off\
  toggle:noArg BASE_ID/DEVNAME t\
  rgb:colorpicker,RGB BASE_ID/DEVNAME/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME\
  dimup:noArg BASE_ID/DEVNAME/api A=~10\
  dimdown:noArg BASE_ID/DEVNAME/api A=~-10\
  speed:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api SX=$EVTPART1\
  intensity:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api IX=$EVTPART1\
  effect:{"selectnumbers,0,1,".ReadingsNum($name,".effectscount",5).",0,lin"} BASE_ID/DEVNAME/api FX=$EVTPART1\
  effectname:{"select,".join(",",sort(split(",",ReadingsVal($name,".effects","Solid,Police"))))} {FHEM::attrT_WLED_Utils::WLED_setName($NAME,"effect",$EVTPART1)}\
  effect_next:noArg BASE_ID/DEVNAME/api FX=~1\
  effect_prev:noArg BASE_ID/DEVNAME/api FX=~-1\
  effect_random:noArg BASE_ID/DEVNAME/api FX=r\
  effect_reset:noArg BASE_ID/DEVNAME/api FX=0\
  palette:{"selectnumbers,0,1,".ReadingsNum($name,".palettescount",5).",0,lin"} BASE_ID/DEVNAME/api FP=$EVTPART1\
  palettename:{'select,'.join(',',sort(split(',',ReadingsVal($name,'.palettes','Default,Party'))))}  {FHEM::attrT_WLED_Utils::WLED_setName($NAME,"palette",$EVTPART1)}\
  palette_next:noArg BASE_ID/DEVNAME/api FP=~1\
  palette_prev:noArg BASE_ID/DEVNAME/api FP=~-1\
  palette_random:noArg BASE_ID/DEVNAME/api FP=r\
  palette_reset:noArg BASE_ID/DEVNAME/api FP=0\
  preset:selectnumbers,0,1,3,0,lin BASE_ID/DEVNAME/api PL=$EVTPART1\
  apiraw BASE_ID/DEVNAME/api $EVTPART1\
  seg BASE_ID/DEVNAME/api {"seg":{"i":[$EVTPART1,[$EVTPART2]]}}
attr DEVICE readingList \
  BASE_ID/DEVNAME/status:.* LWT\
  BASE_ID/DEVNAME/g:.* brightness\
  BASE_ID/DEVNAME/g:.* {$EVENT ? {state=>'on'} : {state=>'off'}}\
  BASE_ID/DEVNAME/c:.* {{rgb=>substr("$EVENT",1,6)}}\
  BASE_ID/DEVNAME/v:.* {FHEM::attrT_WLED_Utils::WLED_getNames($NAME,$EVENT)}
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE devStateIcon {Color::devStateIcon( $name, 'rgb', 'rgb', 'brightness', 'state' )}
attr DEVICE webCmd rgb:brightness:effectname:speed:intensity:palettename:preset
attr DEVICE webCmdLabel RGB:Brightness\
:Effect:Speed:Intensity\
:Palette:Preset
attr DEVICE setStateList on off toggle dimdown dimup effect_prev effect_next effect_random palette_prev palette_next palette_random palette_reset effect_reset
attr DEVICE 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
set DEVICE attrTemplate speechcontrol_type_light_255
farewell:template has been applied successfully, additional code has been downloaded. <br>Note: webCmd and eventMap are just examples; adopt this to your needs.
attr DEVICE model wled_controller
setreading DEVICE attrTemplateVersion 20211209


Zu dem noch:
ZitatBis auf einen Eintrag aus Perlcritic habe ich alles beherzigt. Ich weiß einfach nicht was er mir mit "Always unpack @_ first at line 40, column 1. See page 178 of PBP." sagen möchte bzw. wie ich es weg bekommen soll.
Darauf war das hier gemünzt gewesen:
Zitatobwohl bis auf einen "4-er" noch Potential besteht

Das "Problem" ist hier die anonyme sub als callback, die Perlcritic wohl nicht "sieht" und dann auf das "@_" anspringt... Eventuell könnte man das noch beseitigen, wenn man dann shift nimmt oder die Funktion in eine Variable packt (@TomLee: "trim30"), aber vermutlich würde dann deswegen gemeckert oder es wäre unnötig kompliziert ;D ...

EDIT: ein "bri" war mir noch durchgerutscht
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 09 Dezember 2021, 12:35:58
Find das hochinteressant mit deinem Vorschlag, beschäftigt mich auch, bis ich aber nur ansatzweise mal einen Durchblick hab, seid ihr hiermit schon lange durch, es fängt schon damit an das ich nicht weiß an was es hängt bei der Rückgabe der Referenz in den Zeilen 61,62 und 72 wenn ich die myUtils speichern möchte.

Global symbol "%cleaned" requires explicit package name (did you forget to declare "my %cleaned"?) at ./FHEM/myUtilsTemplate.pm line 61. Global symbol "%cleaned" requires explicit package name (did you forget to declare "my %cleaned"?) at ./FHEM/myUtilsTemplate.pm line 62. Global symbol "%cleaned" requires explicit package name (did you forget to declare "my %cleaned"?) at ./FHEM/myUtilsTemplate.pm line 72.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 09 Dezember 2021, 12:38:11
Danke!!! Das sieht doch schon ganz gut aus.
Allerdings wurde der Code bei mir nicht akzeptiert (wie bei dir TomLee).
Ich habe den mal berichtigt und noch 1-2 andere Stellen gerade gezogen.
Bei mir wird der Code nun ohne Meckern angenommen und funktioniert auch wie er soll.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 09 Dezember 2021, 13:17:14
 :) Dann kommt das also demnächst...

[OT] @DeeSPe:
Wg.
Zitat von: DeeSPe am 09 Dezember 2021, 12:57:56
Bei den modulspezifischen Attributen sollte das eigentlich klappen, nur nicht bei den userattr.
Man kann das ganze mit "data-pattern=" sogar an "fremden" Devices hinterlegen, auch mit "wildcards". Beispiel (der Attribut-Prefix kann vom User festgelegt werden):
<a id="RHASSPY-attr-Mapping" data-pattern=".*Mapping"></a><b>rhasspyMapping</b>
Voraussetzung ist bei "fremden" Modulen dann aber, dass klar ist, zu welchem Modul die userattr gehören (in HOMEMODE ggf. ca. #1599). Es gibt dazu (die id-Geschichte) auch einen Thread im Developer-Bereich.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 09 Dezember 2021, 15:17:41
Zitat von: Beta-User am 09 Dezember 2021, 13:17:14
[OT] @DeeSPe:
Wg. Man kann das ganze mit "data-pattern=" sogar an "fremden" Devices hinterlegen, auch mit "wildcards". Beispiel (der Attribut-Prefix kann vom User festgelegt werden):
<a id="RHASSPY-attr-Mapping" data-pattern=".*Mapping"></a><b>rhasspyMapping</b>
Voraussetzung ist bei "fremden" Modulen dann aber, dass klar ist, zu welchem Modul die userattr gehören (in HOMEMODE ggf. ca. #1599). Es gibt dazu (die id-Geschichte) auch einen Thread im Developer-Bereich.

Danke, das wusste ich bisher noch nicht. Dann probiere ich das demnächst auch mal umzusetzen.

Nochmal hierzu:
Zitat von: Beta-User am 09 Dezember 2021, 09:39:28
Ein paar kurze Anmerkungen:
- Wenn das Ding "nativ" bri/brightness 0-255 "spricht", würde ich gar nicht erst nicht umrechnen, machen wir bei anderen Leuchten auch nicht (wer will/muss, kann ja, aber es ist für die Funktionalität an sich nicht essentiell). Was den Namen angeht, würde mir weiterhin "brightness" besser gefallen, das wäre afaik auch der eher "standardisierte" Readingname (zumindest innerhalb der MQTT2-Welt).

- Funktioniert das mit der IP-Adresse auch mit MQTT2_CLIENT? Wenn nein, wäre mein Vorschlag, dazu noch im Hintergrund eine ReadingsVal()-Abfrage einzubauen, damit diese "Zielgruppe" einfach einmalig ein "setreading" ausführen kann, um das Ding "voll" nutzen zu können. Sonst müßte ich vermutlich ein 2., einfaches attrTemplate anbieten.

- hue und sat wären natürlich die "Krönung". Ist das ein allgemeines firmware-Problem oder kann das ggf. einfach nur der konkret eingesetzte Controller-Baustein nicht? Im ersteren Fall sollten wir das erst mal raus lassen, wenn es "manchmal" geht, könnte man ein Einheits-attrTemplate mit den settern machen und einen comment setzen.

- Wenn das in der MQTT Welt so ist, dann sollte das natürlich so bleiben.

- Von MQTT2_CLIENT habe ich keine Ahnung, bin wie gesagt sehr neu in der MQTT Welt.

- Mit hue und sat habe ich nochmal rumgespielt. Das Setzen der Werte scheint zu gehen, aber sie sind in keiner API enthalten (v0.13.0-b5) um sie auszulesen. Auch stimmen die gesetzten Hue Werte nicht mit denen auf dem Hue Slider überein. Ich sehe gerade es gibt jetzt eine v0.13.0-b6, mal testen - gibt 2 neue Effekte.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 09 Dezember 2021, 19:14:27
Zitat von: DeeSPe am 09 Dezember 2021, 15:17:41
Ich sehe gerade es gibt jetzt eine v0.13.0-b6, mal testen - gibt 2 neue Effekte.

Kann keine 2 neuen Effekte finden! Die Anzahl ist auch die selbe.
In den APIs scheint es auch nichts neues zu geben.

@Beta-User:
Warte mal bitte noch ein paar Tage mit dem Einchecken. Ich habe im Modul noch ein paar Optimierungen vorgenommen und möchte die noch ein Wenig testen.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: stera am 19 Dezember 2021, 23:08:29
Hallo zusammen,

ich bin noch nicht so fit, was attrTemplate angeht. Wie bekomme ich denn das aktuelle Template geladen.

Fhem Update habe ich gemacht, versucht eine Datei wled_controller.template anzulegen. Danach das System neu gestartet, aber in der Liste ist nur das vom 20200522  (attrTemplateVersion 20200522 or prior).

Gruß,
Stefan

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: ComputerZOO am 20 Dezember 2021, 10:43:37
Moin.
Ich stehe da gerade etwas auf dem RegEx-Schlauch, ich würde ganz gerne ALLE drei definierten Farben (state: --> col:) und die Software-Version (info: --> ver:) in ein Reading übernehmen, bekomme es aber auf biegen und brechen nicht hin die Daten aus dem JSON zu "regexen" (extrahieren).
{
  "state": {
    "on": true,
    "bri": 127,
    "transition": 7,
    "ps": -1,
    "pl": -1,
    "nl": {
      "on": false,
      "dur": 60,
      "fade": true,
      "tbri": 0
    },
    "udpn": {
      "send": false,
      "recv": true
    },
    "seg": [{
      "start": 0,
      "stop": 20,
      "len": 20,
      "col": [
        [255, 160, 0],
        [0, 0, 0],
        [0, 0, 0]
      ],
      "fx": 0,
      "sx": 127,
      "ix": 127,
      "pal": 0,
      "sel": true,
      "rev": false,
      "cln": -1
    }]
  },
  "info": {
    "ver": "0.8.4",
    "vid": 1903252,
    "leds": {
      "count": 20,
      "rgbw": true,
      "pin": [2],
      "pwr": 0,
      "maxpwr": 65000,
      "maxseg": 1
    },
    "name": "WLED Light",
    "udpport": 21324,
    "live": false,
    "fxcount": 80,
    "palcount": 47,
    "arch": "esp8266",
    "core": "2_4_2",
    "freeheap": 13264,
    "uptime": 17985,
    "opt": 127,
    "brand": "WLED",
    "product": "DIY light",
    "btype": "src",
    "mac": "60019423b441"
  },
  "effects": [
    "Solid", "Blink", "Breathe", "Wipe", "Wipe Random", "Random Colors", "Sweep", "Dynamic", "Colorloop", "Rainbow",
    "Scan", "Dual Scan", "Fade", "Chase", "Chase Rainbow", "Running", "Saw", "Twinkle", "Dissolve", "Dissolve Rnd",
    "Sparkle", "Dark Sparkle", "Sparkle+", "Strobe", "Strobe Rainbow", "Mega Strobe", "Blink Rainbow", "Android", "Chase", "Chase Random",
    "Chase Rainbow", "Chase Flash", "Chase Flash Rnd", "Rainbow Runner", "Colorful", "Traffic Light", "Sweep Random", "Running 2", "Red & Blue","Stream",
    "Scanner", "Lighthouse", "Fireworks", "Rain", "Merry Christmas", "Fire Flicker", "Gradient", "Loading", "In Out", "In In",
    "Out Out", "Out In", "Circus", "Halloween", "Tri Chase", "Tri Wipe", "Tri Fade", "Lightning", "ICU", "Multi Comet",
    "Dual Scanner", "Stream 2", "Oscillate", "Pride 2015", "Juggle", "Palette", "Fire 2012", "Colorwaves", "BPM", "Fill Noise", "Noise 1",
    "Noise 2", "Noise 3", "Noise 4", "Colortwinkle", "Lake", "Meteor", "Smooth Meteor", "Railway", "Ripple"
  ],
  "palettes": [
    "Default", "Random Cycle", "Primary Color", "Based on Primary", "Set Colors", "Based on Set", "Party", "Cloud", "Lava", "Ocean",
    "Forest", "Rainbow", "Rainbow Bands", "Sunset", "Rivendell", "Breeze", "Red & Blue", "Yellowout", "Analogous", "Splash",
    "Pastel", "Sunset 2", "Beech", "Vintage", "Departure", "Landscape", "Beach", "Sherbet", "Hult", "Hult 64",
    "Drywet", "Jul", "Grintage", "Rewhi", "Tertiary", "Fire", "Icefire", "Cyane", "Light Pink", "Autumn",
    "Magenta", "Magred", "Yelmag", "Yelblu", "Orange & Teal", "Tiamat", "April Night"
  ]
}


Ich habe es schon (erfolglos) mit:
$data =~ m,ver..\".*?\",;
versucht (bei der Version).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 20 Dezember 2021, 12:32:08
Zitat von: stera am 19 Dezember 2021, 23:08:29
ich bin noch nicht so fit, was attrTemplate angeht. Wie bekomme ich denn das aktuelle Template geladen.
Hi. Entweder du benennst das "neue" (geringfügig) um, dann kannst du mit der separaten file arbeiten, oder du ersetzt das alte attrTemplate in der file mqtt2.template.

Zitat von: ComputerZOO am 20 Dezember 2021, 10:43:37
Ich habe es schon (erfolglos) mit:
$data =~ m,ver..\".*?\",;
versucht (bei der Version).
Mal abgesehen davon, dass unklar ist, wo der JSON herkommt und ob nicht json2nameValue() die bessere Lösung wäre:
ver...\"(.*)\"
Würde dazu https://regex101.com/ konsultieren, und die Variablen musst du dann m.E. eher mit "my $data = $1" usw. zuweisen.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 12:51:10
ZitatMal abgesehen davon, dass unklar ist, wo der JSON herkommt und ob nicht json2nameValue() die bessere Lösung wäre:

https://kno.wled.ge/interfaces/json-api/ (https://kno.wled.ge/interfaces/json-api/)

ZitatStarting from version 0.8.4, WLED implements a powerful JSON API over HTTP. It is accessible using the /json subpage.

So (https://forum.fhem.de/index.php/topic,98880.msg1118377.html#msg1118377) (mit dem dort zu sehenden Gebastel) hatte ich mir bis vor kurzem den gewählten Effektnamen in das Device geholt gehabt.

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 12:58:37
Jetzt der Teil:

...
my $chash = $defs{$dev};
  HttpUtils_NonblockingGet({
    url=>"http://$ip/json",
    callback=>sub($$$){
      my ($hash,$err,$data) = @_;
      WLED_setReadings($dev,"effect",$1) if $data =~ m/effects..\[([^[]*?)]/x;
      WLED_setReadings($dev,"palette",$1) if $data =~ m/palettes..\[([^[]*?)]/x;
    }
  });
  return defined $event ? $cleaned : undef;
}

sub WLED_setReadings {
  my $dev = shift // return;
  my $na = shift // return;
  my $data = shift;
  my $nas = $na.'s';
  my $chash = $defs{$dev};
  $data =~ s/["\n]//gx;
  $data =~ s/[\s\&]/_/gx;
  $data =~ s/\+/Plus/gx;
  my @r = split(",",$data);
  readingsBeginUpdate($chash);
  readingsBulkUpdateIfChanged($chash,".${nas}count",(scalar @r)-1);
  readingsBulkUpdateIfChanged($chash,".$nas",$data);
  readingsEndUpdate($chash,0);
  readingsSingleUpdate($chash,$na.'name',$r[ReadingsNum($dev,$na,0)],1);
  return;
}
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: ComputerZOO am 20 Dezember 2021, 13:47:46
Zitat von: Beta-User am 20 Dezember 2021, 12:32:08
...Mal abgesehen davon, dass unklar ist, wo der JSON herkommt...

Der JSON kommt beim Aufruf von http://WLED-IP/json

Werde die Tage mal mit json2nameValue() spielen...
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 20 Dezember 2021, 13:52:01
Zitat von: TomLee am 20 Dezember 2021, 12:51:10
So (https://forum.fhem.de/index.php/topic,98880.msg1118377.html#msg1118377) (mit dem dort zu sehenden Gebastel) hatte ich mir bis vor kurzem den gewählten Effektnamen in das Device geholt gehabt.

Im Prinzip ist die Version von mir auf Basis dieses Codes entstanden. Ich habe das nur weiter optimiert.
Bei mir habe ich seit einigen Tagen ein Version laufen die sehr gut funktioniert. Den Code und das entsprechende AttrTemplate werde ich später am heutigen Tage mit Euch teilen. Das ist jetzt soweit alles von offensichtlichen Fehlern bereinigt und etliche Tage getestet. Einen offiziellem Einchecken steht von meiner Seite aus dann nichts entgegen.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 20 Dezember 2021, 15:42:48
Hier meine finale Version des AttrTemplate für WLED:
#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
{ Svn_GetFile('contrib/AttrTemplate/99_attrT_WLED_Utils.pm', 'FHEM/99_attrT_WLED_Utils.pm', sub(){ CommandReload(undef, '99_attrT_WLED_Utils') }) }
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 on\
  off:noArg BASE_ID/DEVNAME off\
  toggle:noArg BASE_ID/DEVNAME t\
  rgb:colorpicker,RGB BASE_ID/DEVNAME/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api A=$EVTPART1\
  dimup:noArg BASE_ID/DEVNAME/api A=~10\
  dimdown:noArg BASE_ID/DEVNAME/api A=~-10\
  speed:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api SX=$EVTPART1\
  intensity:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api IX=$EVTPART1\
  effect:{'selectnumbers,0,1,'.ReadingsNum($name,'.effectscount',5).',0,lin'} BASE_ID/DEVNAME/api FX=$EVTPART1\
  effectname:{'select,'.join(',',sort(split(',',ReadingsVal($name,'.effects','Solid,Police'))))} {FHEM::attrT_WLED_Utils::WLED_set($NAME,'effect',$EVTPART1)}\
  effect_next:noArg BASE_ID/DEVNAME/api FX=~1\
  effect_prev:noArg BASE_ID/DEVNAME/api FX=~-1\
  effect_random:noArg BASE_ID/DEVNAME/api FX=r\
  effect_reset:noArg BASE_ID/DEVNAME/api FX=0\
  palette:{'selectnumbers,0,1,'.ReadingsNum($name,'.palettescount',5).',0,lin'} BASE_ID/DEVNAME/api FP=$EVTPART1\
  palettename:{'select,'.join(',',sort(split(',',ReadingsVal($name,'.palettes','Default,Party'))))}  {FHEM::attrT_WLED_Utils::WLED_set($NAME,'palette',$EVTPART1)}\
  palette_next:noArg BASE_ID/DEVNAME/api FP=~1\
  palette_prev:noArg BASE_ID/DEVNAME/api FP=~-1\
  palette_random:noArg BASE_ID/DEVNAME/api FP=r\
  palette_reset:noArg BASE_ID/DEVNAME/api FP=0\
  preset:selectnumbers,0,1,15,0,lin BASE_ID/DEVNAME/api PL=$EVTPART1\
  apiraw BASE_ID/DEVNAME/api $EVTPART1\
  seg BASE_ID/DEVNAME/api {'seg':{'i':[$EVTPART1,[$EVTPART2]]}}
attr DEVICE readingList \
  BASE_ID/DEVNAME/status:.* LWT\
  BASE_ID/DEVNAME/g:.* brightness\
  BASE_ID/DEVNAME/g:.* {$EVENT ? {state => 'on'} : {state => 'off'}}\
  BASE_ID/DEVNAME/c:.* {{rgb => substr($EVENT,1,6)}}\
  BASE_ID/DEVNAME/v:.* {FHEM::attrT_WLED_Utils::WLED_get($NAME,$EVENT)}
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE devStateIcon {ReadingsVal($name,'LWT','offline') eq 'offline' ? '.*:message_attention@red' : Color::devStateIcon($name,'rgb','rgb','brightness','state')}
attr DEVICE webCmd rgb:brightness:effectname:speed:intensity:palettename:preset
attr DEVICE webCmdLabel RGB:Brightness\
:Effect:Speed:Intensity\
:Palette:Preset
attr DEVICE setStateList on off toggle dimdown dimup effect_prev effect_next effect_random palette_prev palette_next palette_random palette_reset effect_reset
attr DEVICE 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
set DEVICE attrTemplate speechcontrol_type_light_255
farewell:template has been applied successfully. <br>Note: webCmd and eventMap are just examples; adopt this to your needs.
attr DEVICE model wled_controller
setreading DEVICE attrTemplateVersion 20211220 or prior


Die dazu passende Moduldatei befindet sich im Anhang.

@Beta-User: Sofern von Dir für gut erachtet könnte diese Version dann Einzug ins SVN halten.

Danke.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 15:52:10
Zitat von: ComputerZOO am 20 Dezember 2021, 13:47:46
Werde die Tage mal mit json2nameValue() spielen...

Frage an die Experten, kann sein das ich auch völlig daneben liege, theoretisch könnte man doch beliebigen Perlcode hinter dem Topic in der rL eines Devices ausführen, wichtig ist doch nur das j2nv die Referenz auf den Hash zurückgibt ?

Wenn ich sowas versuche, startet FHEM neu:

wled/538e36/g:.* {HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub($$$){my ($hash,$err,$data) = @_;json2namevalue($data,"",$JSONMAP,"ver|col");}})}

Mit json2reading erhalte ich die gewünschten Readings problemlos:

{HttpUtils_NonblockingGet({
    url=>"http://192.168.188.95/json",
    callback=>sub($$$){
      my ($hash,$err,$data) = @_;;
      json2reading($defs{Device1},$data,"",undef,"","ver|col");;'done'
    }})}


Wenn es mit j2nv nicht gehen sollte, ist es möglich mit dem vierten Parameter von j2r die Readingnamen anzupassen, wenn ja wie genau ?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 20 Dezember 2021, 16:16:18
Wieso nicht mit dem dritten Parameter und $JSONMAP? Der wird via EvalSpecials übergeben (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/10_MQTT2_DEVICE.pm#L185).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 16:50:22
Ist mir zu hoch wie das jetzt gemeint ist.

Vlt. erstmal ganz langsam und vorne angefangen.

Warum stürzt Fhem ab bei der Variante mit j2nv in der RL ?
Die Parameter sind mMn. korrekt angegeben und mit dem Attribut jsonMap könnte man umbenennen.

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 20 Dezember 2021, 16:56:13
Warum FHEM abschmiert sollte im Log stehen, ich würde darauf tippen, dass j2nv() "in der Luft" hängt, weil es dazu gemacht ist, einen Hash zurückzugeben, und nicht, ein Device zu füllen (das ist ein zeitlich entkoppelter callback, wenn ich das nicht komplett missverstehe).

Aber den Hash aus dem Internal JSONMAP gibt MQTT2_DEVICE in die Evaluierung des Perl-Codes weiter, wenn man die "Variable" $JSONMAP reinschreibt. Das ist nicht auf j2nv() begrenzt, sondern generischer Natur.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 16:56:49
OK, wenn man j2nv richtig schreibt stürzt Fhem nicht mehr ab, die gewünschten Readings bleiben aber aus.

wled/538e36/c:.* {HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub($$$){my ($hash,$err,$data) = @_;json2nameValue($data,"",$JSONMAP,"ver|col");}})}
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 17:09:59
Zitat von: Beta-User am 20 Dezember 2021, 16:56:13
... weil es dazu gemacht ist, einen Hash zurückzugeben, und nicht, ein Device zu füllen

Nee , Referenz, keinen Hash und mit der Begrifflichkeit füllen komm ich wieder nicht ganz mit.
Mit füllen verstehe ich Readings erstellen, irgendwie korreliert das doch mit der Aussage von damals:


Zitat von: rudolfkoenig am 07 August 2020, 15:49:17
Ich meine ja: json2nameValue liefert eine Referenz auf ein "flaches" Hash zurueck, was aus "Name"=>"Wert" Paaren besteht.
Es dient nicht dazu, JSON in Perl Datenstrukturen zu verwandeln, sondern um JSON Daten nach FHEM Readings bzw. Events zu konvertieren.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 20 Dezember 2021, 17:14:23
OK, es gibt die Referenz auf einen Hash zurück. Hier aber innerhalb eines "callback", also einer Funktion, die zeitlich entkoppelt irgendwann was zurückliefert, aber eben nicht mehr innerhalb des aufrufenden Codes, der dann wüßte, was er mit der Referenz auf einen Hash anstellen soll. Die irgendwann später (wohin) abgelieferte Referenz weiß nicht mehr, was mit ihr geschehen soll...

Und ja, mit "Füllen" war Reading aus der Referenz ableiten gemeint.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 20 Dezember 2021, 17:22:48
Ich bin nicht sicher, dass ich das Problem verstehe (ich habe den Faden seit eine Weile verloren), aber waere nicht json2reading() was fuer euch?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 17:27:53
ZitatHier aber innerhalb eines "callback", also einer Funktion, die zeitlich entkoppelt irgendwann was zurückliefert, aber eben nicht mehr innerhalb des aufrufenden Codes, der dann wüßte, was er mit der Referenz auf einen Hash anstellen soll. Die irgendwann später (wohin) abgelieferte Referenz weiß nicht mehr, was mit ihr geschehen soll...

Danke, für die Erklärung, so irgendwie hatte ich mir das zuvor zusammengereimt das es sein würde.




Dann halt mit json2reading, dazu hab ich die Erklärung dann aber nicht verstanden, zu wenig Verständnis anhand des gezeigten Code abzuleiten wie das anzugehen wäre die Namen anzupassen
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 17:33:05
Zitat von: rudolfkoenig am 20 Dezember 2021, 17:22:48
Ich bin nicht sicher, dass ich das Problem verstehe (ich habe den Faden seit eine Weile verloren), aber waere nicht json2reading() was fuer euch?

In #161 steht der JSON, in #168 mein Ansatz ( der auch funzt), jetzt nur noch ordentliche Namen bitte. :P
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 20 Dezember 2021, 17:47:42
ZitatDann halt mit json2reading, dazu hab ich die Erklärung dann aber nicht verstanden, zu wenig Verständnis anhand des gezeigten Code abzuleiten wie das anzugehen wäre die Namen anzupassen
Statt
json2nameValue($data,"",$JSONMAP,"ver|col")
koennte man
my $hash = $defs{<DEVICENAME>};; json2reading($hash, $data, "", $hash->{JSONMAP},undef,"ver|col")
probieren.

Der zweite JSONMAP ist deswegen so komisch, weil ich nicht sicher bin, ob die Variable $JSONMAP beim Ausfuehrung des Callbacks zu Verfuegung steht.
Kann das jemand pruefen?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 18:06:44
 :) Thx


Die Frage ist welchen Topicpfad wählt man um den Code auszuführen und welche Namen.
Das interessiert mich aber recht wenig, weil ich das nicht brauche und ungerne mit Licht beschäftige.


Hier der Code der bei mir klappt:

wled/538e36/c:.* {HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub($$$){my ($hash,$err,$data) = @_;my $hash = $defs{$NAME}; json2reading($hash, $data, "", $hash->{JSONMAP},undef,"ver|col");}})}

@ComputerZoo

Du wolltest das haben, mit dem Attribut jsonMap kann man die Readingnamen anpassen, mach mal Vorschläge.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 18:38:27
Natürlich hab ich nicht ins Log geschaut gehabt, auch wenn die Readings angelegt wurden gibts diese Meldung im Log:

2021.12.20 18:31:32 1: PERL WARNING: "my" variable $hash masks earlier declaration in same scope at (eval 46622) line 1.
2021.12.20 18:31:32 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub($$$){my ($hash,$err,$data) = @_;;my $hash = $defs{$NAME};; json2reading($hash, $data, "", $hash->{JSONMAP},undef,"ver|col");;}})}
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 18:44:05
So klappts auch ohne Meldung:

wled/538e36/c:.* {HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub($$$){my ($hash,$err,$data) = @_; json2reading($defs{$NAME}, $data, "", $hash->{JSONMAP},undef,"ver|col");}})}
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rudolfkoenig am 20 Dezember 2021, 18:51:19
Es wuerde mich wundern, wenn $hash->{JSONMAP} das Richtige referenziert.

Mein Vorschlag:
wled/538e36/c:.* {HttpUtils_NonblockingGet({url=>"http://192.168.188.95/json",callback=>sub(){json2reading($defs{$NAME},$_[2],"",$defs{$NAME}{JSONMAP},undef,"ver|col");}})}

Wobei wenn $NAME funktioniert, dann sollte auch $JSONMAP direkt funktionieren.
(Sorry fuer den Hickhack, aber ein Testsystem aufzusetzen ist mir zu aufwendig).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 20 Dezember 2021, 19:04:50
Keine Meldung im Log, die Readings werden geschrieben, jsonMap funktioniert auch.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 21 Dezember 2021, 10:04:09
Zitat von: DeeSPe am 20 Dezember 2021, 15:42:48
@Beta-User: Sofern von Dir für gut erachtet könnte diese Version dann Einzug ins SVN halten.
...ist drin. Habe nur noch sehr kleine Kleinigkeiten angepaßt :) .
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 21 Dezember 2021, 12:16:03
Zitat von: Beta-User am 21 Dezember 2021, 10:04:09
...ist drin. Habe nur noch sehr kleine Kleinigkeiten angepaßt :) .

Merci!

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 21 Dezember 2021, 16:26:37
Während ich mich vorhin mit etwas ganz anderem beschäftigt habe ist mir aufgefallen dass das ermitteln der IP viel simpler zu bewerkstelligen sein könnte.

my $ip = InternalVal($dev,$io.'_CONN',ReadingsVal($dev,'ip', undef)) =~ m/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/x ? $1 : return defined $event ? $c : undef;


=>

my $ip = InternalVal(InternalVal($dev,$io.'_CONN','none'),'PEER','none') // return defined $event ? $c : undef;

einfach nur auslesen, wäre doch auch eine Variante oder nicht ?  ;D 8) :P


Den Ersatzwert mit ReadingsVal($dev,'ip', undef) versteh ich nicht, das Reading gibts doch nicht und wird auch nicht irgendwo geschrieben.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 21 Dezember 2021, 16:29:27
Die Regex sichert ab, dass was "sinnvolles" da steht, und das Reading gibt es zwar nicht, aber man kann es mit "setreading" setzen.

(Falls sich jemand fragt, wofür man das "braucht": es steht bereits hier im Thread ;) )
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 21 Dezember 2021, 17:04:09
ZitatDie Regex sichert ab, dass was "sinnvolles" da steht,

Du meinst wenn die MQTT2_Server-Verbindung nicht aktiv/definiert ist ? ja dann hinkt der Vorschlag.

Zitatund das Reading gibt es zwar nicht, aber man kann es mit "setreading" setzen.

Ja ist es vergessen worden zu schreiben ? So steht einfach nur die Abfrage eines Readings im Ersatzwert das es gar nicht gibt ?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 21 Dezember 2021, 17:15:23
Zitat von: TomLee am 21 Dezember 2021, 17:04:09
Ja ist es vergessen worden zu schreiben ? So steht einfach nur die Abfrage eines Readings im Ersatzwert das es gar nicht gibt ?
Vorschläge zur Verbesserung der Doku (= attrTemplate-Text, in diesem Fall) nehme ich gerne entgegen...
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 21 Dezember 2021, 17:38:28
ZitatVorschläge zur Verbesserung der Doku (= attrTemplate-Text, in diesem Fall) nehme ich gerne entgegen...

Das Reading ip im Device reicht mMn. völlig aus so wie man das aus anderen Devices auch gewohnt ist, ich verstehe nicht was es da zu dokumentieren gibt / wo wir aneinander vorbeireden.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 21 Dezember 2021, 17:43:35
a) Na ja, du schreibst zurecht: in der Regel gibt es das Reading nicht.

b) Nutzt man MQTT2_SERVER braucht man es nicht, weil die IP-Adresse aus den vorhandenen Daten abgeleitet werden kann.

c) Man braucht es nur in einem Fall, aber dann muss man es händisch setzen.

So jedenfalls mein Verständnis.

Der Fall c) ist nicht dokumentiert, oder?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 21 Dezember 2021, 17:55:20
Zitatc) Man braucht es nur in einem Fall, aber dann muss man es händisch setzen.

So jedenfalls mein Verständnis.

Der Fall c) ist nicht dokumentiert, oder?

Ich hab jetzt nochmal alle Beiträge überflogen in diesem Faden in denen ip vorkommt, ich steh weiterhin auf dem Schlauch was diesen einen geheimnisvollen  ;D Fall angeht, sry ich verstehs nicht.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 21 Dezember 2021, 17:57:40
M2C als IO...
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: ComputerZOO am 30 Dezember 2021, 12:22:55
Zitat von: TomLee am 20 Dezember 2021, 18:06:44
@ComputerZoo

Du wolltest das haben, mit dem Attribut jsonMap kann man die Readingnamen anpassen, mach mal Vorschläge.

:o :o :o
Wir kommen der Sache schon näher...
tele/$DEVICETOPIC/c:.* { { "color"=>substr("$EVENT", 1, 6)} }
erstellt mir ja das Reading für die (primäre) Farbe.
Jetzt wäre es natürlich schön, wenn es ähnlich dazu eine color2nd und color3rd geben würde die direkt den umgerechneten HEX-Wert beinhalten.
(Ich habe dazu hier im Forum mal diesen Code adaptiert:###############################################################################################
#
# wandelt Dezimale Werte in Hexadezimale Farbwerte um.
# dec2hex("0-255 0-255 0-255");
# z.B. "255, 0, 255" oder "255 0 255" ergibt als Rückgabewert ff00ff
#
sub dec2hex($;$) {
my ($color, $format) = @_;
my $dividerChar = " ";
$dividerChar = "," if ($color =~ /\,/);
$format = "lc" if (!$format);
my ($redValue, $greenValue, $blueValue) = split($dividerChar, $color);
customLog("./log/dec2hex.log", 3, "color: ".$color." red: ".$redValue." green: ".$greenValue." blue: ".$blueValue);
$redValue = sprintf("%02x", $redValue);
$greenValue = sprintf("%02x", $greenValue);
$blueValue = sprintf("%02x", $blueValue);
return "$redValue$greenValue$blueValue" if ($format eq "lc");
return uc($redValue).uc($greenValue).uc($blueValue) if ($format eq "uc");
}
und in der 99_myUtils.pm für verschiedene Dinge eingebunden).

Alternativ wäre es natürlich schön, wenn Aircoookie diese Werte direkt als MQTT-Topic zurückgeben würde...

EDIT: Sehe gerade das es sich bei der (übergebenen, primären) Farbe ja um ein eigenes Topic handelt...
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: AET_FHEM am 07 Januar 2022, 23:03:37
Hallo,

hab da an kleines Problem ich will WLED mit MQTT
einzelne Segmente ansteuern

--> ich habe eine LED über eine wand wo in der Mitte eine Tür ist jetzt will ich wenn an der Tür der Rollladen auf oder zu geht genau in diesem Segment dualscan rot/grün, aber unabhängig von links und rechts

seg 0 = 0-55
seg 1 = 55-85
seg 2 = 85-150

jetzt kann ich die Segmente zwar ändern also Farbe und Effekt Geschwindigkeit bekomm ich geändert aber wie schalte ich die Segmente an und aus?

/win&SM=1&SS=1&S2=85&FX=11&R=0&G=0&B=255&W=0&SX=100

SM=     das Segment 1 aktivieren
SS=      Segment 1 aktivieren für Änderungen
S2=      ende vom Segment ... ?! => brauch ich das --> die Segmente sind doch schon Konfiguriert
FX=      Effekt DualScan
R=        rot
G=        grün
B=        blau
W=       weiß
SX=      Geschwindigkeit

hat mir jemand an Beispiel wie ich die Segmente einzeln schalten kann?!

Grüße
AET
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: AET_FHEM am 14 Januar 2022, 06:50:23
Habs hin bekommen läuft bei mir jetzt mit den json befehlen geht das!
diese kann man auch ganz einfach herauskopieren wenn man in der web Oberfläche den gewünschten Effekt und Farbe Geschwindigkeit einstellt und dann hinter die ip "/json/state" schreibt dann wird einem für jedes Segment der json code angezeigt!

Ich habe dann meine WLED in FHEM um die api Schnittstelle erweitert jetzt kann ich die befehle ganz einfach über FHEM absetzen!
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: masterpete23 am 14 Januar 2022, 14:55:35
Zitat von: AET_FHEM am 14 Januar 2022, 06:50:23
...

Ich habe dann meine WLED in FHEM um die api Schnittstelle erweitert jetzt kann ich die befehle ganz einfach über FHEM absetzen!
Wie genau hast du das gemacht?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: rico5588 am 08 Februar 2022, 19:42:17
Hallo,

ich bin auch sehr begeistert von dem was hier entwickelt wurde, echt genial.
Könnte mir jemand Helfen beim Befehl helfen? Was muss man eingeben um Bsp. nur LED 1 anzuschalten und auf Farbe FFFFFF zu setzen.
Danke.
set MQTT2_WLED.... seg 1 FFFFFF  ???? (geht nicht)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Icebear am 14 März 2022, 22:32:29
Hallo,
ich benutze das Template mit Google Home. Leider gelingt es mir nicht, das Brightness funktioniert. Der aktuelle Wert wird nicht angezeigt und ist auch nicht wählbar.

Und hat es wer hinbekommen, das ich ein Preset wählbar machen kann ?

lg.
Holger
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 15 März 2022, 09:40:20
Zitat von: Icebear am 14 März 2022, 22:32:29
Und hat es wer hinbekommen, das ich ein Preset wählbar machen kann ?
Zwar keine unmittelbare Antwort auf deine Fragen...

Wäre es nicht sinnvoll, statt der "preset.*"-Setter "scene"-Befehle anzubieten (anaog HUEDevice)? Zumindest RHASSPY würde daraus sprechbare Anweisungen generieren können...

(Dass brightness von der "großen Lösung" nicht als setter erkannt wird, finde ich seltsam).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: lucca111 am 18 April 2022, 09:20:00
Hallo und frohe Ostern erstmal,

ich habe 4 Verschiedene WLED-Ketten jetzt erfolgreich über MQTT in mein FHEM Project einbinden Können.
Das funktionierte mit dem mqtt2.template super gut. In der Weboberfläche von WLED gibt es einen Sync Button
den ich gerne über FHEM schalten möchte. Ist das irgendwie möglich?



gruß Lucca
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: lucca111 am 19 April 2022, 19:04:04

Ich bin nicht immer der schnellste aber habe es endlich selbst gefunden.
Für die Cracks hier natürlich kein Ding aber für alle Rookies die wie ich kämpfen ...

set "myWLED" apiraw SN=1  (sync send einschalten)
set "myWLED" apiraw SN=0  (sync send ausschalten)


Quelle: https://github.com/Aircoookie/WLED/wiki/HTTP-request-API/016cb11efcf27dbd9d288d2c57b262b233a14b1f (https://github.com/Aircoookie/WLED/wiki/HTTP-request-API/016cb11efcf27dbd9d288d2c57b262b233a14b1f)




Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 30 September 2022, 21:56:13
Kann mir irgendwer zeigen wie man eine transition-Zeit beim einschalten mitgibt, ich verstehs/komm bis jetzt nicht drauf und weiter.

Gruß

Thomas
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 01 Oktober 2022, 10:46:42
Man kann einen default Wert unter LED-Preferences-->Transitions->Transition Time angeben, wäre auch OK für mich, bleibt trotzdem die Frage bei mir ob man über das MQTT2-Device diesen Wert überschreiben/mitgeben kann. Aus der Doku werd ich, wie gesagt, nicht schlauer.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: ComputerZOO am 20 Oktober 2022, 00:03:11
Zitat von: TomLee am 30 September 2022, 21:56:13
Kann mir irgendwer zeigen wie man eine transition-Zeit beim einschalten mitgibt, ich verstehs/komm bis jetzt nicht drauf und weiter.

Gruß

Thomas

Hi, ich übergebe den Wert im setList folgendermaßen:
off-timer:selectnumbers,0,1,120,0,lin tele/$DEVICETOPIC/api NT=0&NL=$EVTPART1&NF=1
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 22 Oktober 2022, 14:51:41
Spricht was dagegen die IP, zur weiteren Verwendung bspw. in der DeviceOverview, im Template in ein Reading zu schreiben ?

99_attrT_WLED_Utils.pm:
Zitat
...
  my $io = InternalVal($dev,'LASTInputDev',AttrVal($dev,'IODev',InternalVal($dev,'IODev',undef)->{NAME})) // return defined $event ? $c : undef;
  my $ip = InternalVal($dev,$io.'_CONN',ReadingsVal($dev,'ip', undef)) =~ m/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/x ? $1 : return defined $event ? $c : undef;
  HttpUtils_NonblockingGet({
    url=>"http://$ip/json",
    callback=>sub($$$){
      my ($hash,$err,$data) = @_;
      WLED_setReadings($dev,$data,$ip);
    }
  });
  return defined $event ? $c : undef;
}

sub WLED_setReadings {
  my $dev  = shift // return;
  my $data = shift // return;
  my $ip = shift // return;
  my $fx   = $data =~  m/effects..\[([^[]*?)]/x ? WLED_subst($1) : '';
  my $pl   = $data =~ m/palettes..\[([^[]*?)]/x ? WLED_subst($1) : '';
  my $hash = $defs{$dev};
  my @f    = split m{,}, $fx;
  my @p    = split m{,}, $pl;
  readingsBeginUpdate($hash);
  readingsBulkUpdate($hash,'effectname',$f[ReadingsNum($dev,'effect',0)]);
  readingsBulkUpdate($hash,'palettename',$p[ReadingsNum($dev,'palette',0)]);
  readingsBulkUpdate($hash,'ip',$ip);
  readingsEndUpdate($hash,1);
  readingsBeginUpdate($hash);
  readingsBulkUpdateIfChanged($hash,'.effectscount',(scalar @f)-1);
  readingsBulkUpdateIfChanged($hash,'.effects',$fx);
  readingsBulkUpdateIfChanged($hash,'.palettescount',(scalar @p)-1);
  readingsBulkUpdateIfChanged($hash,'.palettes',$pl);
  readingsEndUpdate($hash,0);
  return;
...
}
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: psycho160 am 23 Oktober 2022, 20:05:32
Hi,

wenn ich übers WLED Template mit dem Brightness-Schieberegler die Helligkeit verstelle bekomme ich im Fhem Log folgenden Eintrag:

PERL WARNING: Argument "set 200" isn't numeric in numeric lt (<) at FHEM/Color.pm line 508.

Mir ist aufgefallen, dass das Reading für den Bruchteil einer Sekunde den Wert "set 200" annimmt und dann sofort auf 200 wechselt. 200 ist in meinem Beispiel der Wert den der Schieberegler übergibt. Im WLED wird die gewünschte Helligkeit aber korrekt übernommen.

Kann man das kurzzeitige "set" aus dem Reading irgendwie blockieren?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 24 Oktober 2022, 11:22:05
Zitat von: psycho160 am 23 Oktober 2022, 20:05:32
Kann man das kurzzeitige "set" aus dem Reading irgendwie blockieren?
Nicht wirklich geschickt. Aber man kann Color.pm patchen: https://forum.fhem.de/index.php/topic,123614.msg1182727.html#msg1182727
(Ich muss justme1968 dazu nochmal anhauen).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: psycho160 am 24 Oktober 2022, 11:27:36
ZitatAber man kann Color.pm patchen: https://forum.fhem.de/index.php/topic,123614.msg1182727.html#msg1182727

Stimmt ist der gleiche Fehler, hatte ich mit der Suche nicht gefunden. Hoffe dein Patch findet seinen Weg ins Modul  ;) ::)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Keichi am 19 Dezember 2022, 09:43:21
Ich weiß nicht ob ich es einfach nur überlesen habe oder Blind bin. Aber wie bekomme ich eigentlich die Aktuellen Werte von WLED ausgelesen, wenn ich sie mit einen DOIF ändern will und danach zurück zu den Einstellungen die ich vorher gesetzt hatte?

Edit: Ich habs nun so mit nen DOIF gelöst: define di_aqi_medium DOIF ([MYSENSOR_2:PM10:avg60] < 90) (set MQTT2_WLED_tischlampe apiraw &PS=250) (set MQTT2_WLED_tischlampe apiraw &GP=1&CL=#ffe100&FP=0&FX=100) (set MQTT2_WLED_tischlampe apiraw &PL=250)
attr di_aqi_medium wait 0,5,5
#   CFGFN     
#   DEF        ([MYSENSOR_2:PM10:avg60] < 90) (set MQTT2_WLED_tischlampe apiraw &PS=250) (set MQTT2_WLED_tischlampe apiraw &GP=1&CL=#ffe100&FP=0&FX=100) (set MQTT2_WLED_tischlampe apiraw &PL=250)


Sprich ich speichere den aktuellen State über die API in Preset 250, geb ihn 5sek zeit dafür, mach das was ich machen will und switch dann zurück auf das gespeicherte Preset. Ist zwar nicht schön aber funktioniert wunderbar.

Übrigens ist in RGB Wert nen Bug drin, wenn man mehrende Segmente benutz, so wie ich bei dieser Installation. Es ändert die Farbe generell nur für das erste segment statt alle, weswegen ich es über das Group Listing gelöst habe.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: nussa am 16 Januar 2023, 09:56:20
Hallo Alle,
@DeeSPe danke für dein Template.
mir ist aufgefallen, dass palette und effect nur funktioniert, wenn /Device/Topic keine Großbuchstaben hat.

lg Andreas
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 16 Januar 2023, 11:03:30
Zitat von: nussa am 16 Januar 2023, 09:56:20
Hallo Alle,
@DeeSPe danke für dein Template.
mir ist aufgefallen, dass palette und effect nur funktioniert, wenn /Device/Topic keine Großbuchstaben hat.

lg Andreas

Wie ist dir das aufgefallen?
Im Code wird nirgends etwas an Groß-/Kleinschreibung verändert.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: nussa am 16 Januar 2023, 13:15:46
Hallo,
ich habe mich gewundert warum ich keine Effekte oder die paletten umstellen konnte.

ich hatte als mqtt topic wlen/WZ1

als ich mit dem mqtt explorer mitgeschaut habe, ist mir aufgefallen, dass das topic wled/wz1/api=FX=67 gechickt wird, wenn ich z.B. "set MQTT2_wled_WZ1 effectname Colorwaves" sende.
mit dem set effect 67 wird richtig wled/WZ1/api=FX=67 geschickt und es geht.

das einfachste war WZ1 auf wz1 zu ändern, dann klappt es.

anbei ein bildschirmfoto vom mqtt explorer.

lg Andreas

Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 16 Januar 2023, 13:37:17
Zitat von: nussa am 16 Januar 2023, 13:15:46
ich hatte als mqtt topic wlen/WZ1

als ich mit dem mqtt explorer mitgeschaut habe, ist mir aufgefallen, dass das topic wled/wz1/api=FX=67 gechickt wird, wenn ich z.B. "set MQTT2_wled_WZ1 effectname Colorwaves" sende.
mit dem set effect 67 wird richtig wled/WZ1/api=FX=67 geschickt und es geht.

das einfachste war WZ1 auf wz1 zu ändern, dann klappt es.

Das scheint aber kein Problem vom Template zu sein, sondern eher ein spezifisches MQTT_(SERVER|CLIENT) Problem?
Kenne mich damit aber zu wenig aus.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 16 Januar 2023, 13:42:20
Zitat von: DeeSPe am 16 Januar 2023, 13:37:17
Das scheint aber kein Problem vom Template zu sein, sondern eher ein spezifisches MQTT_(SERVER|CLIENT) Problem.
Hmm, wenn man die Daten richtig anliefert, werden die ja auch richtig übermittelt, oder habe ich das falsch interpretiert?

Glaube eher, dass es an dem lc in https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/99_attrT_WLED_Utils.pm#L102 liegt ;) .
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 16 Januar 2023, 13:47:55
Zitat von: Beta-User am 16 Januar 2023, 13:42:20
Glaube eher, dass es an dem lc in https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/99_attrT_WLED_Utils.pm#L102 liegt ;) .

Ist mir wohl beim Überfliegen entfallen.
Wenn ich mir das so angucke weiß ich gar nicht wirklich warum das "lc" da überhaupt drin ist.

@nussa:
Könntest Du mal probieren ob es klappt wenn Du Zeile 102 so abänderst?
my $wled = InternalVal($dev,'CID',undef) // return;

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: nussa am 16 Januar 2023, 17:05:38
Hallo Dan,
das wars, funktioniert!
danke!!

lg Andreas
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 16 Januar 2023, 18:22:52
Zitat von: nussa am 16 Januar 2023, 17:05:38
Hallo Dan,
das wars, funktioniert!
danke!!

lg Andreas

Ja super!
Leider funktioniert es damit bei mir nicht mehr! :D
Eine Lösung die für alle funktioniert wäre aber besser!

Ich habe die WLED_set Funktion noch einmal überarbeitet wie sie nun hoffentlich bei uns beiden funktionieren sollte.
Könntest Du bitte testweise mal die komplette Funktion durch diese hier ersetzen und noch einmal testen?
sub WLED_set {
  my $dev  = shift // return;
  my $read = shift // return;
  my $val  = shift // return;
  my $cid = InternalVal($dev,'CID',undef) // return;
  my @wled = split('_',$cid);
  my $arr  = ReadingsVal($dev,'.'.$read.'s',undef) // return WLED_get($dev);
  my $top  = lc($wled[0]).'/'.$wled[1].'/api F';
  $top .= $read eq 'effect'?'X=':'P=';
  my $id;
  my $i = 0;
  for (split(',',$arr)){
    if ($_ ne $val) {
      $i++;
      next;
    } else {
      $id = $i;
      last;
    }
  }
  return defined $id ? $top.$id : undef;
}


Bei mir klappt's damit wieder wie vorher und bei Dir sollte es nun auch mit einem groß geschriebenen Topic funktionieren.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: nussa am 17 Januar 2023, 08:05:00
Guten Morgen,
funktioniert bei mir.

lg Andreas
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 17 Januar 2023, 11:38:41
Zitat von: nussa am 17 Januar 2023, 08:05:00
Guten Morgen,
funktioniert bei mir.

lg Andreas

Danke fürs Testen Andreas.

@Beta-User:
Könntest Du bitte bei Gelegenheit die Funktion so abändern und einchecken?
Zitat von: DeeSPe am 16 Januar 2023, 18:22:52
sub WLED_set {
  my $dev  = shift // return;
  my $read = shift // return;
  my $val  = shift // return;
  my $cid = InternalVal($dev,'CID',undef) // return;
  my @wled = split('_',$cid);
  my $arr  = ReadingsVal($dev,'.'.$read.'s',undef) // return WLED_get($dev);
  my $top  = lc($wled[0]).'/'.$wled[1].'/api F';
  $top .= $read eq 'effect'?'X=':'P=';
  my $id;
  my $i = 0;
  for (split(',',$arr)){
    if ($_ ne $val) {
      $i++;
      next;
    } else {
      $id = $i;
      last;
    }
  }
  return defined $id ? $top.$id : undef;
}


Vielen Dank.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 17 Januar 2023, 12:20:13
Zitat@Beta-User:
Könntest Du bitte bei Gelegenheit die Funktion so abändern und einchecken?

Und den Vorschlag aus #206 die IP in ein Reading zu schreiben ?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 17 Januar 2023, 13:19:55
Zitat von: TomLee am 17 Januar 2023, 12:20:13
Und den Vorschlag aus #206 die IP in ein Reading zu schreiben ?

Klar, kann man auch machen! Sorry, hatte da nicht mehr dran gedacht.
Aber eigentlich steht ja die IP schon im Internal "IODev_CONN", dort allerdings noch mit Pre- und Suffix.
Von mir aus kann die IP aber auch noch in ein Reading geschrieben werden. Dann würde ich das Reading allerdings nur neu schreiben wenn es sich auch geändert hat, denn es ist ja im Normalfall nicht davon auszugehen dass sich die IP bei jedem Abruf ändert.

Zitatsub WLED_get {
  my $dev = shift // return;
  my $event = shift // undef;
  my $c;
  my $h = {
    sx => 'speed',
    ix => 'intensity',
    fp => 'palette',
    fx => 'effect',
    ps => 'preset'
  };
  for (keys %{$h}) {
    next if $event !~ m/(?<=<$_>)([\d]+)(?=<\/$_>)/x;
    if ($1 != ReadingsNum($dev,$h->{$_},-2)){
      $c->{$h->{$_}} = $1;
    }
  }
  my $io = InternalVal($dev,'LASTInputDev',AttrVal($dev,'IODev',InternalVal($dev,'IODev',undef)->{NAME})) // return defined $event ? $c : undef;
  my $ip = InternalVal($dev,$io.'_CONN',ReadingsVal($dev,'ip', undef)) =~ m/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/x ? $1 : return defined $event ? $c : undef;
  HttpUtils_NonblockingGet({
    url=>"http://$ip/json",
    callback=>sub($$$){
      my ($hash,$err,$data) = @_;
      WLED_setReadings($dev,$data,$ip);
    }
  });
  return defined $event ? $c : undef;
}

sub WLED_setReadings {
  my $dev  = shift // return;
  my $data = shift // return;
  my $ip   = shift // return;
  my $fx   = $data =~  m/effects..\[([^[]*?)]/x ? WLED_subst($1) : '';
  my $pl   = $data =~ m/palettes..\[([^[]*?)]/x ? WLED_subst($1) : '';
  my $hash = $defs{$dev};
  my @f    = split(',',$fx);
  my @p    = split(',',$pl);
  readingsBeginUpdate($hash);
  readingsBulkUpdate($hash,'effectname',$f[ReadingsNum($dev,'effect',0)]);
  readingsBulkUpdate($hash,'palettename',$p[ReadingsNum($dev,'palette',0)]);
  readingsEndUpdate($hash,1);
  readingsBeginUpdate($hash);
  readingsBulkUpdateIfChanged($hash,'.effectscount',(scalar @f)-1);
  readingsBulkUpdateIfChanged($hash,'.effects',$fx);
  readingsBulkUpdateIfChanged($hash,'.palettescount',(scalar @p)-1);
  readingsBulkUpdateIfChanged($hash,'.palettes',$pl);
  readingsBulkUpdateIfChanged($hash,'ip',$ip);
  readingsEndUpdate($hash,0);
  return;
}

@Beta-User:
Anbei mal die komplette geänderte Datei.

Gruß
Dan
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 17 Januar 2023, 13:36:33
Hmm, vielleicht noch ein paar (zu?) schnelle Gedanken von meiner Seite:
- Wenn man die IP über die Connection ausliest, setzt das zwingend einen MQTT2_SERVER voraus und funktioniert mit MQTT2_CLIENT nicht (was ich vermutlich in einer Woche vergessen haben werde). Von daher würde ich eher dazu neigen, die IP beim Anwenden des attrTemplate auszulesen (versuchsweise), oder eben alternativ vom User eingeben zu lassen. Speichern dann als Reading*?
- Das mit der Groß- und Kleinschreibung ist auch irgendwie seltsam; eigentlich wäre es besser, auch diese Angabe direkt im attrTemplate ermitteln zu lassen (M2C kennt die CID nicht...), und dann wieder irgendwo zwischenzuspeichern. Da das Teil des Topics ist, wäre ggf. auch $DEVICETOPIC ein möglicher Speicherort.

*Da M2D zwischenzeitlich auch die Option bietet, mehrere deviceTopics anzugeben, könnte man so auch die IP in ein Attribut verlagern. Stellt sich nur die Frage des "Regel-/Ausnahmeverhältnisses". Da anscheinend bisher die Zahl der M2C-Nutzer in der Minderheit ist, würde man mit dem Internal anfangen, und wenn das nichts liefert, deviceTopic anzapfen?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 17 Januar 2023, 16:33:19
Ist es so in der Art gemeint ?
Zitat#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
{ Svn_GetFile('contrib/AttrTemplate/99_attrT_WLED_Utils.pm', 'FHEM/99_attrT_WLED_Utils.pm', sub(){ CommandReload(undef, '99_attrT_WLED_Utils') }) }
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') }
par:IP;Insert Controller-IP ;{ InternalVal(AttrVal('MQTT2_wled_55da2c','IODev',InternalVal('MQTT2_wled_55da2c','IODev',undef)->{NAME}),'TYPE',undef) ne 'MQTT2_SERVER' ? undef : 1 }
attr DEVICE icon ICON
attr DEVICE setList\
  on:noArg BASE_ID/DEVNAME on\
  off:noArg BASE_ID/DEVNAME off\
  toggle:noArg BASE_ID/DEVNAME t\
  rgb:colorpicker,RGB BASE_ID/DEVNAME/col #$EVTPART1\
  brightness:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api A=$EVTPART1\
  dimup:noArg BASE_ID/DEVNAME/api A=~10\
  dimdown:noArg BASE_ID/DEVNAME/api A=~-10\
  speed:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api SX=$EVTPART1\
  intensity:colorpicker,BRI,0,1,255 BASE_ID/DEVNAME/api IX=$EVTPART1\
  effect:{'selectnumbers,0,1,'.ReadingsNum($name,'.effectscount',5).',0,lin'} BASE_ID/DEVNAME/api FX=$EVTPART1\
  effectname:{'select,'.join(',',sort(split(',',ReadingsVal($name,'.effects','Solid,Police'))))} {FHEM::attrT_WLED_Utils::WLED_set($NAME,'effect',$EVTPART1)}\
  effect_next:noArg BASE_ID/DEVNAME/api FX=~1\
  effect_prev:noArg BASE_ID/DEVNAME/api FX=~-1\
  effect_random:noArg BASE_ID/DEVNAME/api FX=r\
  effect_reset:noArg BASE_ID/DEVNAME/api FX=0\
  palette:{'selectnumbers,0,1,'.ReadingsNum($name,'.palettescount',5).',0,lin'} BASE_ID/DEVNAME/api FP=$EVTPART1\
  palettename:{'select,'.join(',',sort(split(',',ReadingsVal($name,'.palettes','Default,Party'))))}  {FHEM::attrT_WLED_Utils::WLED_set($NAME,'palette',$EVTPART1)}\
  palette_next:noArg BASE_ID/DEVNAME/api FP=~1\
  palette_prev:noArg BASE_ID/DEVNAME/api FP=~-1\
  palette_random:noArg BASE_ID/DEVNAME/api FP=r\
  palette_reset:noArg BASE_ID/DEVNAME/api FP=0\
  preset:selectnumbers,0,1,15,0,lin BASE_ID/DEVNAME/api PL=$EVTPART1\
  apiraw BASE_ID/DEVNAME/api $EVTPART1\
  seg BASE_ID/DEVNAME/api {'seg':{'i':[$EVTPART1,[$EVTPART2]]}}
attr DEVICE readingList \
  BASE_ID/DEVNAME/status:.* LWT\
  BASE_ID/DEVNAME/g:.* brightness\
  BASE_ID/DEVNAME/g:.* {$EVENT ? {state => 'on'} : {state => 'off'}}\
  BASE_ID/DEVNAME/c:.* {{rgb => substr($EVENT,1,6)}}\
  BASE_ID/DEVNAME/v:.* {FHEM::attrT_WLED_Utils::WLED_get($NAME,$EVENT)}
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE devStateIcon {ReadingsVal($name,'LWT','offline') eq 'offline' ? '.*:message_attention@red' : Color::devStateIcon($name,'rgb','rgb','brightness','state')}
attr DEVICE webCmd rgb:brightness:effectname:speed:intensity:palettename:preset
attr DEVICE webCmdLabel RGB:Brightness\
:Effect:Speed:Intensity\
:Palette:Preset
attr DEVICE setStateList on off toggle dimdown dimup effect_prev effect_next effect_random palette_prev palette_next palette_random palette_reset effect_reset
attr DEVICE 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
set DEVICE attrTemplate speechcontrol_type_light_255
setreading DEVICE ip IP
farewell:template has been applied successfully. <br>Note: webCmd and eventMap are just examples; adopt this to your needs.
attr DEVICE model wled_controller
setreading DEVICE attrTemplateVersion 20211220
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 17 Januar 2023, 16:39:43
In der Art schon, im Detail sollte dann schon eine IP kommen und keine 1 ;) ... (Ähnlich dem, was in dem Code steht, wobei "undef" vermutlich kein guter default ist).
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 17 Januar 2023, 16:40:14
Upps, Denkfehler mit dem setreading wenn es ein MQTT2_SERVER ist und auf Anhieb keine Idee wie man das setreading dann nicht ausführt  ::)
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 17 Januar 2023, 17:11:00
Zitat von: TomLee am 17 Januar 2023, 16:40:14
... Anhieb keine Idee wie man das setreading dann nicht ausführt  ::)

Doch 2-3 Minuten nachdem ich das geschrieben hatte:

Irgendwie dacht ich der Code aus der Utils soll dann am Ende das Reading schreiben  8)

Also ganz einfach direkt im Template auch bei Verwendung von MQTT2_SERVER die IP mit setreading setzen ? :

par:IP;Insert Controller-IP ;{ my $ip =InternalVal('DEVICE',InternalVal('DEVICE','LASTInputDev',AttrVal('DEVICE','IODev',InternalVal('DEVICE','IODev',undef)->{NAME})).'_CONN',ReadingsVal('DEVICE','ip', undef)) =~ m/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/x ? $1 : return undef;InternalVal(AttrVal('DEVICE','IODev',InternalVal('DEVICE','IODev',undef)->{NAME}),'TYPE',undef) ne 'MQTT2_SERVER' ? undef : $ip }
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 17 Januar 2023, 17:23:36
Zitat von: TomLee am 17 Januar 2023, 17:11:00
Also ganz einfach direkt im Template auch bei Verwendung von MQTT2_SERVER die IP mit setreading setzen ? :
Ja, oder eben noch eine RADIO-Option einbauen und den Teil bei M2S überspringen?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 17 Januar 2023, 18:05:35
ZitatJa, oder eben noch eine RADIO-Option einbauen und den Teil bei M2S überspringen?

Weiß nicht ob ich dich richtig verstehe, du meinst ein Optionsfeld für die Frage nach "Do you want to assign a Reading IP"  bei Verwendung von MQTT2_CLIENT  und bei M2S gleich im Template die IP setzen ?
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 17 Januar 2023, 21:50:00
Hab mich mit der RADIO-Option nicht wirklich beschäftigt seit dem daß das letzte mal Thema war, wenn ich das jetzt aber so mal kurz wieder angeschaut habe und glaube zu verstehen, drängt sich mir jetzt die Frage auf, ob man es nicht einfach dem User überlässt, ob er ein ip-Reading haben möchte oder nicht ?
Wie wäre es mit einer "Option" bei beiden IODevs ? Bei M2C hat man die Wahl eine IP anzugeben bei Auswahl der Option und bei M2S  wird bei Auswahl der Option das Reading einfach aus dem Internal .*_CONN "geschrieben" ?


Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 18 Januar 2023, 11:21:22
Hmm, nach etwas Nachdenken über den Code:
- Ist M2S im Spiel, gibt es das Internal und alles ist gut, auf das Reading wird ja im Code nur ersatzweise zugegriffen;
- Ist M2C als IO im Einsatz, braucht man das Reading, und zwar möglichst aktuell => update per Code, solange M2S im Einsatz ist ist sinnvoll, falls nie M2S im Einsatz war, ist es wichtig, die Botschaft an den Mann zu bringen, dass man das Reading braucht => abfragen.

Werde daher das Ganze mehr oder weniger in der jetzigen Form bei Gelegenheit einchecken.
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 25 Januar 2023, 21:56:42
Habe jetzt mal was eingecheckt, aber nachdem der Komplettcode jetzt nicht mehr da war, bin ich unsicher, ob das jetzt so paßt oder nicht...
Titel: Antw:[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: DeeSPe am 25 Januar 2023, 22:31:40
Zitat von: Beta-User am 25 Januar 2023, 21:56:42
Habe jetzt mal was eingecheckt, aber nachdem der Komplettcode jetzt nicht mehr da war, bin ich unsicher, ob das jetzt so paßt oder nicht...

Sieht m.E. gut aus.
Danke Dir!

Gruß
Dan
Titel: Aw: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 06 Juli 2023, 13:42:41
Wenn es OK ist es (https://forum.fhem.de/index.php?msg=1280697) so umzusetzen, hätte ich das erste Mal :P,  den Versuch, einen Patch für die mqtt2.template anzubieten (hoffentlich hab ich nix übersehen):
Titel: Aw: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 07 Juli 2023, 15:37:16
Index: FHEM/lib/AttrTemplate/mqtt2.template
===================================================================
--- FHEM/lib/AttrTemplate/mqtt2.template    (Revision 27732)
+++ FHEM/lib/AttrTemplate/mqtt2.template    (Arbeitskopie)
@@ -5306,7 +5306,8 @@
   palette_reset:noArg BASE_ID/DEVNAME/api FP=0\
   preset:selectnumbers,0,1,15,0,lin BASE_ID/DEVNAME/api PL=$EVTPART1\
   apiraw BASE_ID/DEVNAME/api $EVTPART1\
-  seg BASE_ID/DEVNAME/api {'seg':{'i':[$EVTPART1,[$EVTPART2]]}}
+  seg BASE_ID/DEVNAME/api {'seg':{'i':[$EVTPART1,[$EVTPART2]]}}\
+  seg_name_0 {$EVENT =~ s/^$EVTPART0.//;return qq(BASE_ID/DEVNAME/api {"seg":[{"id":0,"n":"$EVENT"]}})}
 attr DEVICE readingList \
   BASE_ID/DEVNAME/status:.* LWT\
   BASE_ID/DEVNAME/g:.* brightness\
@@ -5319,13 +5320,13 @@
 attr DEVICE webCmdLabel RGB:Brightness\
 :Effect:Speed:Intensity\
 :Palette:Preset
-attr DEVICE setStateList on off toggle dimdown dimup effect_prev effect_next effect_random palette_prev palette_next palette_random palette_reset effect_reset
+attr DEVICE setStateList ignore
 attr DEVICE 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
 set DEVICE attrTemplate speechcontrol_type_light_255
 setreading DEVICE ip IPADDRESS
 farewell:template has been applied successfully. Note: webCmd and eventMap are just examples; adopt this to your needs.
 attr DEVICE model wled_controller
-setreading DEVICE attrTemplateVersion 20230125
+setreading DEVICE attrTemplateVersion 20230708
Titel: Aw: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 12 Juli 2023, 06:01:03
THX, eingecheckt.

Allerdings verstehe ich das "ignore" in setStateList nicht so ganz und habe da die Basisbefehle (on/off/toggle) drin gelassen. Einwände?
Titel: Aw: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 12 Juli 2023, 21:17:25
Zitat... habe da die Basisbefehle (on/off/toggle) drin gelassen. Einwände?

Wir hatten da aber nicht nur die Basisbefehle drin, sondern alle setter ergänzt zu denen nix zurückkommt.

Hab das noch in Erinnerung das du da gemeckert hast, mir (und DeeSPe sah das ja auch so) passt es aber nicht das es dann die Readings gibt wo dann nur das set_... drin steht.


Mit ignore spart man sich die Liste zu pflegen/ergänzen.

ZitatIf this attribute is set to ignore, then a set command will not affect any reading in the device.
Titel: Aw: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 13 Juli 2023, 06:43:28
THX, hatte ich nicht mehr auf dem Schirm, sorry.
Titel: Aw: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: TomLee am 16 Juli 2023, 11:26:41
Mir fällt das jetzt an einer anderen Definition auf und ich geb zu alle Readings zu verhindern nicht optimal ist.

Man müsste angeben können ignoriere alle, bis auf die Basisbefehle.
Titel: Aw: [Gelöst] MQTT für WLED, rgb reading mit # klappt nicht
Beitrag von: Beta-User am 17 Juli 2023, 08:53:07
Zitat von: TomLee am 16 Juli 2023, 11:26:41Mir fällt das jetzt an einer anderen Definition auf und ich geb zu alle Readings zu verhindern nicht optimal ist.

Man müsste angeben können ignoriere alle, bis auf die Basisbefehle.
Hmmmm, ich glaube das Problem erfühlen zu können, aber dazu fällt mir in der Tat keine einfache Lösung ein. Im Zweifel sollte man mit zu vielen Readings leben und ggf. einen periodicCmd definieren, der die überflüssigen regelmäßig entsorgt?

Ansonsten mal Rudi anstupsen, vielleicht fällt ihm was zielführendes ein (aber vermutlich nicht ohne ein "plakatives Beispiel" (das auch noch repräsentativ ist))?!?