diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template index 2e98d0272..304e49e1c 100644 --- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template +++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template @@ -5244,6 +5244,7 @@ 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:IPADDRESS;Insert Controller-IP ;{ my $ip =InternalVal('DEVICE',InternalVal('DEVICE','LASTInputDev',AttrVal('DEVICE','IODev',InternalVal('DEVICE','IODev',undef)->{NAME})).'_CONN',ReadingsVal('DEVICE','ip', '')); $ip=~ m/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/x ? $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\ @@ -5286,9 +5287,10 @@ attr DEVICE webCmdLabel RGB:Brightness\ 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 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 20211220 +setreading DEVICE attrTemplateVersion 20230125 diff --git a/fhem/contrib/AttrTemplate/99_attrT_WLED_Utils.pm b/fhem/contrib/AttrTemplate/99_attrT_WLED_Utils.pm index 5c7cb9eb7..4af5558fe 100644 --- a/fhem/contrib/AttrTemplate/99_attrT_WLED_Utils.pm +++ b/fhem/contrib/AttrTemplate/99_attrT_WLED_Utils.pm @@ -60,7 +60,7 @@ sub WLED_get { url=>"http://$ip/json", callback=>sub($$$){ my ($hash,$err,$data) = @_; - WLED_setReadings($dev,$data); + WLED_setReadings($dev,$data,$ip); } }); return defined $event ? $c : undef; @@ -69,6 +69,7 @@ sub WLED_get { sub WLED_setReadings { my $dev = shift // return; my $data = shift // return; + my $ip = shift; my $fx = $data =~ m/effects..\[([^[]*?)]/x ? WLED_subst($1) : ''; my $pl = $data =~ m/palettes..\[([^[]*?)]/x ? WLED_subst($1) : ''; my $hash = $defs{$dev}; @@ -83,6 +84,7 @@ sub WLED_setReadings { readingsBulkUpdateIfChanged($hash,'.effects',$fx); readingsBulkUpdateIfChanged($hash,'.palettescount',(scalar @p)-1); readingsBulkUpdateIfChanged($hash,'.palettes',$pl); + readingsBulkUpdateIfChanged($hash,'ip',$ip) if defined $ip; readingsEndUpdate($hash,0); return; } @@ -99,10 +101,10 @@ sub WLED_set { my $dev = shift // return; my $read = shift // return; my $val = shift // return; - my $wled = lc(InternalVal($dev,'CID',undef)) // return; + my $cid = InternalVal($dev,'CID',undef) // return; + my @wled = split('_',$cid); my $arr = ReadingsVal($dev,'.'.$read.'s',undef) // return WLED_get($dev); - $wled =~ s/_/\//; - my $top = $wled.'/api F'; + my $top = lc($wled[0]).'/'.$wled[1].'/api F'; $top .= $read eq 'effect'?'X=':'P='; my $id; my $i = 0;