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

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

Vorheriges Thema - Nächstes Thema

Beta-User

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).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Upps, Denkfehler mit dem setreading wenn es ein MQTT2_SERVER ist und auf Anhieb keine Idee wie man das setreading dann nicht ausführt  ::)

TomLee

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 }

Beta-User

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?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

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 ?

TomLee

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" ?



Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

TomLee

#234
Wenn es OK ist es so umzusetzen, hätte ich das erste Mal :P,  den Versuch, einen Patch für die mqtt2.template anzubieten (hoffentlich hab ich nix übersehen):

TomLee

#235
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

Beta-User

THX, eingecheckt.

Allerdings verstehe ich das "ignore" in setStateList nicht so ganz und habe da die Basisbefehle (on/off/toggle) drin gelassen. Einwände?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

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.

Beta-User

THX, hatte ich nicht mehr auf dem Schirm, sorry.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

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.