Ich hab mal noch etwas versucht devStateIcon zu verstehen und etwas rumgebastelt:
etwas nach meinem Gusto Strukturiert...
leavegroup eingebaut
Laufschrift statt Einkürzung auf 30 Zeichen
kein currentTrack_Title wenn er nicht existiert (bei mir öfters bei Radio)
<marquee> wird als abgekündigt gehandelt - aber ich habe nichts vergleichbar einfaches gefunden. Tipps?
{
my $wpix = '250px';
my $groupname = ReadingsVal($name,'groupName','0');
my $sgroupname = (split(' ',ReadingsVal($name,'groupName','')))[0];
my $uuidtoname = (devspec2array('DEF='.ReadingsVal($name,'coordinatorUuid','0')))[0];
my $vol = ReadingsVal($name,'volume','');
my $img = ReadingsVal($name,'currentTrack_AlbumArtUri','');
my $mystate = $name eq $uuidtoname
? ReadingsVal($name,'state','FEHLER') : ReadingsVal($uuidtoname,'state','');
my $playpic = $mystate eq 'PLAYING'
? 'rc_PAUSE@red' : $mystate eq 'PAUSED_PLAYBACK'
? 'rc_PLAY@green' : $mystate eq 'STOPPED'
? 'rc_PLAY@green' : $mystate eq 'TRANSITIONING'
? 'rc_PLAY@blue' : $mystate eq 'set_next'
? 'rc_NEXT@blue' : $mystate eq 'set_previous'
? 'rc_PREVIOUS@blue': $mystate eq 'set_volumeUp'
? 'rc_VOLUP@blue' : $mystate eq 'set_volumeDown'
? 'rc_VOLDOWN@blue' : $mystate eq 'set_mute'
? 'rc_MUTE@blue' : 'rc_PLAY@yellow';
my $mutecmd = ReadingsVal($name,'mute','0') eq 'false'?'on':'off';
my $mutepic = $mutecmd eq 'on'?'rc_MUTE':'rc_VOLUP';
my $show = 'FEHLER';
my $currentTrack_Artist = ReadingsVal($name,'currentTrack_Artist','FEHLER');
my $currentTrack_Title = ReadingsVal($name,'currentTrack_Title','FEHLER');
if ($currentTrack_Title =~ 'x-sonosapi-stream:'){$currentTrack_Title=''};
my $currentTrack = $mystate eq 'TRANSITIONING'
? 'Puffern...' : $currentTrack_Artist.' - '.$currentTrack_Title;
my $nextTrack_Artist = ReadingsVal($name,'nextTrack_Artist','FEHLER');
my $nextTrack_Title = ReadingsVal($name,'nextTrack_Title','FEHLER');
my $nextTrack = $nextTrack_Artist.' - '.$nextTrack_Title;
my $previouspic = 'rc_PREVIOUS';
my $nextpic = 'rc_NEXT';
my $voldownpic = 'rc_VOLDOWN';
my $voluppic = 'rc_VOLUP';
my $leavegrouppic = 'rc_LEFT';
my $showlg = ReadingsVal($name,"name","0") ne $groupname ? "<a href=\"/fhem?cmd.dummy=set $name leaveGroup&XHR=1\">".FW_makeImage($leavegrouppic)."</a>" : "";
if (($mystate eq 'PLAYING')
|| ($mystate eq 'TRANSITIONING' )
|| ($mystate eq 'set_next' )
|| ($mystate eq 'set_previous' )
|| ($mystate eq 'set_volumeUp' )
|| ($mystate eq 'set_volumeDown' )
|| ($mystate eq 'set_mute' )) {
my $shownp = ReadingsVal($name,'name','') eq $sgroupname
? "<a href=\"/fhem?cmd.dummy=set $name previous&XHR=1\">".FW_makeImage($previouspic)."</a>
<a href=\"/fhem?cmd.dummy=set $name next&XHR=1\">".FW_makeImage($nextpic)."</a>" : "";
$show = "$showlg <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($playpic)."</a>
<a href=\"/fhem?cmd.dummy=set $name volumeDown&XHR=1\">".FW_makeImage($voldownpic)."</a>
$shownp
<a href=\"/fhem?cmd.dummy=set $name volumeUp&XHR=1\">".FW_makeImage($voluppic)."</a>
<a href=\"/fhem?cmd.dummy=set $name mute $mutecmd&XHR=1\">".FW_makeImage($mutepic)."</a><br>";
if (ReadingsVal($name,'name','') eq $sgroupname) {
$show = ReadingsVal($name,'currentTrack_TrackUri','') =~ 'spdif'
? 'TV': ReadingsVal($name,'enqueuedMetadata_UpnpClass','FEHLER') ne 'object.item.audioItem.audioBroadcast'
? "$show<marquee style='width: $wpix'>Aktueller Track: $currentTrack<br>Nächster Track: $nextTrack</marquee>"
: "$show<marquee style='width: $wpix'>Radio: $currentTrack</marquee>"
}
elsif (ReadingsVal($name,'name','') ne $groupname) {
$show = "$show Master: $sgroupname"}
}
else {
$show = $name eq $uuidtoname
? "$showlg <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($playpic)."</a>"
: "$showlg <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($playpic)."</a><br>Master: $sgroupname"
}
"<div>
<table>
<tr>
<td><div style='display: inline-block; margin-right: 5px; border: 1px solid lightgray;
height: 4.00em; width: 4.00em; background-image: url($img); background-size: contain;'></div></td>
<td>$show</td>
</tr>
</table>
</div>"
}