diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index b77988cb4..99ef5f687 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -1690,6 +1690,27 @@ FW_makeDeviceLine($$$$$) FW_pO ""; } +sub +FW_sortIndex($) +{ + my ($d) = @_; + return $d if(!$attr{$d}); + + my $val = $attr{$d}{sortby}; + if($val) { + return $val =~ m/^{.*}/ ? AnalyzePerlCommand($FW_chash, $val) : lc($val); + } + + if($FW_room) { + $val = $attr{$d}{"alias_$FW_room"}; + return $val if($val); + } + + $val = $attr{$d}{"alias"}; + return $val if($val); + return $d; +} + ######################## # Show the overview of devices in one room # room can be a room, all or Unsorted @@ -1717,7 +1738,7 @@ FW_showRoom() if($modules{$defs{$dev}{TYPE}}{FW_atPageEnd}) { $usuallyAtEnd{$dev} = 1; if(!AttrVal($dev, "group", undef)) { - $sortIndex{$dev} = lc(AttrVal($dev,"sortby",FW_alias($dev))); + $sortIndex{$dev} = FW_sortIndex($dev); push @atEnds, $dev; next; } @@ -1725,7 +1746,7 @@ FW_showRoom() next if(!$FW_types{$dev}); # FHEMWEB connection, missed due to caching foreach my $grp (split(",", AttrVal($dev, "group", $FW_types{$dev}))) { next if($FW_hiddengroup{$grp}); - $sortIndex{$dev} = lc(AttrVal($dev,"sortby",FW_alias($dev))); + $sortIndex{$dev} = FW_sortIndex($dev); $group{$grp}{$dev} = 1; } } @@ -3641,7 +3662,8 @@ FW_widgetOverride($$)