Hallo Otto,
mir ist noch etwas aufgefallen. Als Favoriten werden nur die Radiostationen übernommen, nicht aber die Sonos eigenen Sender. Hat das einen bestimmten Grund?
Ich habe in meiner Datei die Funktion sub sonos2mqtt_getList etwas erweitert, damit eben auch die Sonos eigenen Sender mit in die Favoriten übernommen werden.
Aus if ( $_->{'TrackUri'} =~ /x-sonosapi-stream/) habe ich if ( $_->{'TrackUri'} =~ /x-sonosapi-stream/ or $_->{'TrackUri'} =~ /x-sonosapi-radio/) gemacht.
Die komplette Funktion anbei.
# return a list of Titles from the favorite json Arrays
# the Favorites Array will be filtered and returns only Radio stations
sub sonos2mqtt_getList
{
my $name = shift // return '';
my $reading = shift || 'Favorites';
my @out;
use JSON;
use HTML::Entities;
use Encode qw(encode decode);
my $enc = 'UTF8';
my $decoded = decode_json(ReadingsVal($name,$reading,''));
my @arr = @{$decoded->{'Result'}};
for (@arr) {
my $dec = encode($enc, decode_entities($_->{'Title'}));
$dec =~ s/\s/./g;
if ($reading eq 'Favorites') {
if ( $_->{'TrackUri'} =~ /x-sonosapi-stream/ or $_->{'TrackUri'} =~ /x-sonosapi-radio/){
push @out,$dec;
}
} else {push @out,$dec;}
}
return join(',', @out);
}