Compare commits
10 Commits
4c3f195a15
...
testing
Author | SHA1 | Date | |
---|---|---|---|
390338a080 | |||
2bfdbd9c05 | |||
2883b6de26 | |||
96a492a78f | |||
3acc0dc955 | |||
3a71f505f5 | |||
3c7aab77fb | |||
bce2a7a6ad | |||
7915a96de4 | |||
ce554402f6 |
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Developed with Kate
|
# Developed with Kate
|
||||||
#
|
#
|
||||||
# (c) 2017 Copyright: Marko Oldenburg (leongaultier at gmail dot com)
|
# (c) 2017-2018 Copyright: Marko Oldenburg (leongaultier at gmail dot com)
|
||||||
# All rights reserved
|
# All rights reserved
|
||||||
#
|
#
|
||||||
# Special thanks goes to comitters:
|
# Special thanks goes to comitters:
|
||||||
@ -38,7 +38,7 @@ use JSON qw(decode_json);
|
|||||||
use Encode qw(encode_utf8);
|
use Encode qw(encode_utf8);
|
||||||
|
|
||||||
|
|
||||||
my $version = "0.2.0";
|
my $version = "1.0.3";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -433,8 +433,13 @@ sub HEOSGroup_Parse($$) {
|
|||||||
my $decode_json;
|
my $decode_json;
|
||||||
my $code;
|
my $code;
|
||||||
|
|
||||||
|
|
||||||
|
$decode_json = eval{decode_json(encode_utf8($json))};
|
||||||
|
if($@){
|
||||||
|
Log3 $name, 3, "HEOSGroup ($name) - JSON error while request: $@";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$decode_json = decode_json(encode_utf8($json));
|
|
||||||
Log3 $name, 4, "HEOSGroup ($name) - ParseFn wurde aufgerufen";
|
Log3 $name, 4, "HEOSGroup ($name) - ParseFn wurde aufgerufen";
|
||||||
|
|
||||||
if( defined($decode_json->{gid}) ) {
|
if( defined($decode_json->{gid}) ) {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Developed with Kate
|
# Developed with Kate
|
||||||
#
|
#
|
||||||
# (c) 2017 Copyright: Marko Oldenburg (leongaultier at gmail dot com)
|
# (c) 2017-2018 Copyright: Marko Oldenburg (leongaultier at gmail dot com)
|
||||||
# All rights reserved
|
# All rights reserved
|
||||||
#
|
#
|
||||||
# Special thanks goes to comitters:
|
# Special thanks goes to comitters:
|
||||||
@ -61,12 +61,12 @@ my $missingModul = "";
|
|||||||
eval "use Net::Telnet;1" or $missingModul .= "Net::Telnet ";
|
eval "use Net::Telnet;1" or $missingModul .= "Net::Telnet ";
|
||||||
eval "use JSON;1" or $missingModul .= "JSON ";
|
eval "use JSON;1" or $missingModul .= "JSON ";
|
||||||
eval "use Encode;1" or $missingModul .= "Encode ";
|
eval "use Encode;1" or $missingModul .= "Encode ";
|
||||||
eval "use IO::Socket::Multicast;1" or $missingModul .= "IO::Socket::Multicast ";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
my $version = "1.0.0";
|
my $version = "1.0.3";
|
||||||
|
|
||||||
|
|
||||||
my %heosCmds = (
|
my %heosCmds = (
|
||||||
'enableChangeEvents' => 'system/register_for_change_events?enable=',
|
'enableChangeEvents' => 'system/register_for_change_events?enable=',
|
||||||
@ -95,7 +95,7 @@ my %heosCmds = (
|
|||||||
'setMute' => 'player/set_mute?',
|
'setMute' => 'player/set_mute?',
|
||||||
'setGroupMute' => 'group/set_mute?',
|
'setGroupMute' => 'group/set_mute?',
|
||||||
'playNext' => 'player/play_next?',
|
'playNext' => 'player/play_next?',
|
||||||
'playPrev' => 'player/play_prev?',
|
'playPrev' => 'player/play_previous?',
|
||||||
'playPresetStation' => 'browse/play_preset?',
|
'playPresetStation' => 'browse/play_preset?',
|
||||||
'playInput' => 'browse/play_input?',
|
'playInput' => 'browse/play_input?',
|
||||||
'playStream' => 'browse/play_stream?',
|
'playStream' => 'browse/play_stream?',
|
||||||
@ -216,7 +216,7 @@ sub HEOSMaster_Define($$) {
|
|||||||
InternalTimer( gettimeofday()+15, 'HEOSMaster_FirstRun', $hash, 0 ) if( ($hash->{HOST}) );
|
InternalTimer( gettimeofday()+15, 'HEOSMaster_FirstRun', $hash, 0 ) if( ($hash->{HOST}) );
|
||||||
}
|
}
|
||||||
|
|
||||||
$modules{HEOSPlayer}{defptr}{$host} = $hash;
|
$modules{HEOSMaster}{defptr}{$host} = $hash;
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,7 +230,7 @@ sub HEOSMaster_Undef($$) {
|
|||||||
HEOSMaster_Close($hash);
|
HEOSMaster_Close($hash);
|
||||||
delete $modules{HEOSMaster}{defptr}{$hash->{HOST}};
|
delete $modules{HEOSMaster}{defptr}{$hash->{HOST}};
|
||||||
|
|
||||||
Log3 $name, 3, "HEOSPlayer ($name) - device $name deleted";
|
Log3 $name, 3, "HEOSMaster ($name) - device $name deleted";
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -366,7 +366,7 @@ sub HEOSMaster_Open($) {
|
|||||||
my $password = HEOSMaster_ReadPassword($hash,$name);
|
my $password = HEOSMaster_ReadPassword($hash,$name);
|
||||||
|
|
||||||
|
|
||||||
Log3 $name, 4, "HEOSMaster ($name) - Baue Socket Verbindung auf";
|
Log3 $name, 4, "HEOSMaster ($name) - Build socket connection";
|
||||||
|
|
||||||
my $socket = new Net::Telnet ( Host=>$host,
|
my $socket = new Net::Telnet ( Host=>$host,
|
||||||
Port => $port,
|
Port => $port,
|
||||||
@ -464,7 +464,7 @@ sub HEOSMaster_Read($) {
|
|||||||
|
|
||||||
|
|
||||||
Log3 $name, 4, "HEOSMaster ($name) - ReadFn gestartet";
|
Log3 $name, 4, "HEOSMaster ($name) - ReadFn gestartet";
|
||||||
$len = sysread($hash->{CD},$buf,1024); # die genaue Puffergröße wird noch ermittelt
|
$len = sysread($hash->{CD},$buf,1024);
|
||||||
|
|
||||||
if( !defined($len) || !$len ) {
|
if( !defined($len) || !$len ) {
|
||||||
|
|
||||||
@ -475,7 +475,7 @@ sub HEOSMaster_Read($) {
|
|||||||
|
|
||||||
unless( defined $buf) {
|
unless( defined $buf) {
|
||||||
|
|
||||||
Log3 $name, 3, "HEOSMaster ($name) - Keine Daten empfangen";
|
Log3 $name, 3, "HEOSMaster ($name) - no data received";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,8 +516,12 @@ sub HEOSMaster_ProcessRead($$) {
|
|||||||
|
|
||||||
$hash->{LAST_RECV} = time();
|
$hash->{LAST_RECV} = time();
|
||||||
Log3 $name, 5, "HEOSMaster ($name) - Decoding JSON message. Length: " . length($json) . " Content: " . $json;
|
Log3 $name, 5, "HEOSMaster ($name) - Decoding JSON message. Length: " . length($json) . " Content: " . $json;
|
||||||
#my $obj = JSON->new->utf8(0)->decode($json); Änderung unter großem Vorbehalt wegen Sorge was Umlaute an geht!!!
|
|
||||||
my $obj = decode_json($json);
|
my $obj = eval{decode_json($json)};
|
||||||
|
if($@){
|
||||||
|
Log3 $name, 3, "HEOSMaster ($name) - JSON error while request: $@";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(defined($obj->{heos})) {
|
if(defined($obj->{heos})) {
|
||||||
|
|
||||||
@ -551,7 +555,11 @@ sub HEOSMaster_ResponseProcessing($$) {
|
|||||||
unless( defined($json));
|
unless( defined($json));
|
||||||
|
|
||||||
Log3 $name, 4, "HEOSMaster ($name) - JSON detected!";
|
Log3 $name, 4, "HEOSMaster ($name) - JSON detected!";
|
||||||
$decode_json = decode_json(encode_utf8($json));
|
$decode_json = eval{decode_json(encode_utf8($json))};
|
||||||
|
if($@){
|
||||||
|
Log3 $name, 3, "HEOSMaster ($name) - JSON error while request: $@";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
return Log3 $name, 3, "HEOSMaster ($name) - decode_json has no Hash"
|
return Log3 $name, 3, "HEOSMaster ($name) - decode_json has no Hash"
|
||||||
unless(ref($decode_json) eq "HASH");
|
unless(ref($decode_json) eq "HASH");
|
||||||
@ -829,17 +837,6 @@ sub HEOSMaster_ResponseProcessing($$) {
|
|||||||
$ret =~ s/\n/<br>/g;
|
$ret =~ s/\n/<br>/g;
|
||||||
$ret = "<pre>$ret</pre>" if( $ret =~ m/ / );
|
$ret = "<pre>$ret</pre>" if( $ret =~ m/ / );
|
||||||
$ret = "<html>$ret</html>";
|
$ret = "<html>$ret</html>";
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
#$ret =~ s/<a[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/a>//g;
|
|
||||||
#$ret =~ s/<img[^>]*>\n//g;
|
|
||||||
#$ret =~ s/<div[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/div>//g;
|
|
||||||
#$ret =~ s/<h2[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/h2>//g;
|
|
||||||
#$ret .= "\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
asyncOutput( $hash->{helper}{blocking}{$idx}{cl}, $ret );
|
asyncOutput( $hash->{helper}{blocking}{$idx}{cl}, $ret );
|
||||||
@ -887,10 +884,6 @@ sub HEOSMaster_ResponseProcessing($$) {
|
|||||||
my $ret = '';
|
my $ret = '';
|
||||||
|
|
||||||
$ret .= sprintf( "%-35s %-10s %s\n", 'Fav', 'type', 'title' );
|
$ret .= sprintf( "%-35s %-10s %s\n", 'Fav', 'type', 'title' );
|
||||||
#foreach my $item (@{ $hash->{helper}{searchresult}}) {
|
|
||||||
|
|
||||||
# $ret .= HEOSMaster_MakePlayLink($hash->{helper}{blocking}{name}, 'input', $message{sid}, $item, sprintf( "%-35s %-10s %s\n", "x", $item->{type}, $item->{name} ) );
|
|
||||||
#}
|
|
||||||
|
|
||||||
$ret .= "\n\n";
|
$ret .= "\n\n";
|
||||||
|
|
||||||
@ -1080,7 +1073,6 @@ sub HEOSMaster_ParseMsg($$) {
|
|||||||
foreach my $c (split //, $buffer) {
|
foreach my $c (split //, $buffer) {
|
||||||
if($open == $close && $open > 0) {
|
if($open == $close && $open > 0) {
|
||||||
$tail .= $c;
|
$tail .= $c;
|
||||||
#Log3 $name, 5, "HEOSMaster ($name) - $open == $close && $open > 0";
|
|
||||||
|
|
||||||
} elsif(($open == $close) && ($c ne '{')) {
|
} elsif(($open == $close) && ($c ne '{')) {
|
||||||
|
|
||||||
@ -1107,8 +1099,7 @@ sub HEOSMaster_ParseMsg($$) {
|
|||||||
$msg = '';
|
$msg = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#Log3 $name, 5, "HEOSMaster ($name) - return msg: $msg and tail: $tail";
|
|
||||||
return ($msg,$tail);
|
return ($msg,$tail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,12 +2,13 @@
|
|||||||
#
|
#
|
||||||
# Developed with Kate
|
# Developed with Kate
|
||||||
#
|
#
|
||||||
# (c) 2017 Copyright: Marko Oldenburg (leongaultier at gmail dot com)
|
# (c) 2017-2018 Copyright: Marko Oldenburg (leongaultier at gmail dot com)
|
||||||
# All rights reserved
|
# All rights reserved
|
||||||
#
|
#
|
||||||
# Special thanks goes to comitters:
|
# Special thanks goes to comitters:
|
||||||
# - Olaf Schnicke Thanks for many many Code
|
# - Olaf Schnicke Thanks for many many Code
|
||||||
# - Dieter Hehlgans Thanks for Commandref
|
# - Dieter Hehlgans Thanks for Commandref
|
||||||
|
# - laurello Thanks for variable $aid
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# This script is free software; you can redistribute it and/or modify
|
# This script is free software; you can redistribute it and/or modify
|
||||||
@ -39,7 +40,7 @@ use Encode qw(encode_utf8);
|
|||||||
use URI::Escape;
|
use URI::Escape;
|
||||||
#use Data::Dumper;
|
#use Data::Dumper;
|
||||||
|
|
||||||
my $version = "0.2.0";
|
my $version = "1.0.5";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -83,6 +84,7 @@ sub HEOSPlayer_Initialize($) {
|
|||||||
"disable:1 ".
|
"disable:1 ".
|
||||||
"mute2play:1 ".
|
"mute2play:1 ".
|
||||||
"channelring:1 ".
|
"channelring:1 ".
|
||||||
|
"add2qopt:1,2,3,4 ". #playNow,playNext,addToEnd,replaceAndPlay #lau -->
|
||||||
$readingFnAttributes;
|
$readingFnAttributes;
|
||||||
|
|
||||||
foreach my $d(sort keys %{$modules{HEOSPlayer}{defptr}}) {
|
foreach my $d(sort keys %{$modules{HEOSPlayer}{defptr}}) {
|
||||||
@ -246,7 +248,6 @@ sub HEOSPlayer_Get($$@) {
|
|||||||
|
|
||||||
my $param = shift( @args );
|
my $param = shift( @args );
|
||||||
$param = '' if( !$param );
|
$param = '' if( !$param );
|
||||||
#$param = substr($param,1) if( $param && $param =~ '^|' );
|
|
||||||
|
|
||||||
if ( $param eq '' ) {
|
if ( $param eq '' ) {
|
||||||
|
|
||||||
@ -277,7 +278,6 @@ sub HEOSPlayer_Get($$@) {
|
|||||||
|
|
||||||
$ret .= HEOSPlayer_MakePlayLink($me->{cl}->{TYPE}, $hash->{NAME}, "1029", "heos_service", "Warteschlange", "https://production.ws.skyegloup.com:443/media/images/service/logos/musicsource_logo_playlists.png", 128, 32);
|
$ret .= HEOSPlayer_MakePlayLink($me->{cl}->{TYPE}, $hash->{NAME}, "1029", "heos_service", "Warteschlange", "https://production.ws.skyegloup.com:443/media/images/service/logos/musicsource_logo_playlists.png", 128, 32);
|
||||||
|
|
||||||
#$ret .= "\n\n";
|
|
||||||
|
|
||||||
if( $me->{cl}->{TYPE} eq 'FHEMWEB' ) {
|
if( $me->{cl}->{TYPE} eq 'FHEMWEB' ) {
|
||||||
|
|
||||||
@ -287,21 +287,6 @@ sub HEOSPlayer_Get($$@) {
|
|||||||
$ret =~ s/\n/<br>/g;
|
$ret =~ s/\n/<br>/g;
|
||||||
$ret = "<pre>$ret</pre>" if( $ret =~ m/ / );
|
$ret = "<pre>$ret</pre>" if( $ret =~ m/ / );
|
||||||
$ret = "<html>$ret</html>";
|
$ret = "<html>$ret</html>";
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
#$ret =~ s/<h3[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/h3>/\n\n/g;
|
|
||||||
#$ret =~ s/<h5[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/h5>/\n/g;
|
|
||||||
#$ret =~ s/<hr>//g;
|
|
||||||
#$ret =~ s/<a[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/a>//g;
|
|
||||||
#$ret =~ s/<img[^>]*>//g;
|
|
||||||
#$ret =~ s/<div[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/div>//g;
|
|
||||||
#$ret .= "\n";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
@ -309,7 +294,6 @@ sub HEOSPlayer_Get($$@) {
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
my ($sid,$cid) = split /,/,$param;
|
my ($sid,$cid) = split /,/,$param;
|
||||||
#$param=~/^(-?\d+),?(.*)$/;
|
|
||||||
|
|
||||||
if ( $sid eq "1025" ) {
|
if ( $sid eq "1025" ) {
|
||||||
|
|
||||||
@ -404,15 +388,6 @@ sub HEOSPlayer_Get($$@) {
|
|||||||
$ret =~ s/\n/<br>/g;
|
$ret =~ s/\n/<br>/g;
|
||||||
$ret = "<pre>$ret</pre>" if( $ret =~ m/ / );
|
$ret = "<pre>$ret</pre>" if( $ret =~ m/ / );
|
||||||
$ret = "<html>$ret</html>";
|
$ret = "<html>$ret</html>";
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
#$ret =~ s/<a[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/a>//g;
|
|
||||||
#$ret =~ s/<img[^>]*>\n//g;
|
|
||||||
#$ret =~ s/<div[^>]*>//g;
|
|
||||||
#$ret =~ s/<\/div>//g;
|
|
||||||
#$ret .= "\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
asyncOutput( $me->{cl}, $ret );
|
asyncOutput( $me->{cl}, $ret );
|
||||||
@ -630,6 +605,7 @@ sub HEOSPlayer_Set($$@) {
|
|||||||
|
|
||||||
my $mid;
|
my $mid;
|
||||||
my $cid = $args[0];
|
my $cid = $args[0];
|
||||||
|
my $aid = AttrVal($name, 'add2qopt', 4); #lau -->
|
||||||
my @path = split(",", $args[0]) if ( @args != 0 && $args[0] =~ /,/ );
|
my @path = split(",", $args[0]) if ( @args != 0 && $args[0] =~ /,/ );
|
||||||
$cid = $path[0] if ( scalar @path > 0);
|
$cid = $path[0] if ( scalar @path > 0);
|
||||||
$mid = $path[1] if ( scalar @path > 1);
|
$mid = $path[1] if ( scalar @path > 1);
|
||||||
@ -647,13 +623,15 @@ sub HEOSPlayer_Set($$@) {
|
|||||||
if ( $cmd eq 'playPlaylist' ) {
|
if ( $cmd eq 'playPlaylist' ) {
|
||||||
|
|
||||||
$heosCmd = $cmd;
|
$heosCmd = $cmd;
|
||||||
$action = "sid=1025&cid=$cid&aid=4";
|
$action = "sid=1025&cid=$cid&aid=$aid"; #lau -->
|
||||||
|
#$action = "sid=1025&cid=$cid&aid=4"; #lau <--
|
||||||
|
|
||||||
} elsif ( $cmd eq 'playPlaylistItem' ) {
|
} elsif ( $cmd eq 'playPlaylistItem' ) {
|
||||||
return "usage: playPlaylistItem name,nr" if ( scalar @path < 2);
|
return "usage: playPlaylistItem name,nr" if ( scalar @path < 2);
|
||||||
|
|
||||||
$heosCmd = 'playPlaylist';
|
$heosCmd = 'playPlaylist';
|
||||||
$action = "sid=1025&cid=$cid&mid=$mid&aid=4";
|
$action = "sid=1025&cid=$cid&mid=$mid&aid=$aid"; #lau -->
|
||||||
|
#$action = "sid=1025&cid=$cid&mid=$mid&aid=4"; #lau <--
|
||||||
|
|
||||||
} elsif ( $cmd eq 'deletePlaylist' ) {
|
} elsif ( $cmd eq 'deletePlaylist' ) {
|
||||||
|
|
||||||
@ -683,6 +661,7 @@ sub HEOSPlayer_Set($$@) {
|
|||||||
|
|
||||||
my $param = shift( @args );
|
my $param = shift( @args );
|
||||||
my ($sid,$cid,$mid) = split /,/,$param;
|
my ($sid,$cid,$mid) = split /,/,$param;
|
||||||
|
my $aid = AttrVal($name, 'add2qopt', 4); #lau -->
|
||||||
return "usage: $cmd sid[,cid][,mid]" unless( defined $sid || $sid eq "" );
|
return "usage: $cmd sid[,cid][,mid]" unless( defined $sid || $sid eq "" );
|
||||||
|
|
||||||
if ( $sid eq "1024" ) {
|
if ( $sid eq "1024" ) {
|
||||||
@ -690,16 +669,20 @@ sub HEOSPlayer_Set($$@) {
|
|||||||
|
|
||||||
#Server abspielen
|
#Server abspielen
|
||||||
$heosCmd = 'playPlaylist';
|
$heosCmd = 'playPlaylist';
|
||||||
$action = "sid=$sid&cid=$cid&aid=4";
|
$action = "sid=$sid&cid=$cid&aid=$aid"; #lau -->
|
||||||
$action = "sid=$sid&cid=$cid&mid=$mid&aid=4" if ( defined($mid) );
|
$action = "sid=$sid&cid=$cid&mid=$mid&aid=$aid" if ( defined($mid) ); #lau -->
|
||||||
|
#$action = "sid=$sid&cid=$cid&aid=4"; #lau <--
|
||||||
|
#$action = "sid=$sid&cid=$cid&mid=$mid&aid=4" if ( defined($mid) ); #lau <--
|
||||||
|
|
||||||
} elsif ( $sid eq "1025" ) {
|
} elsif ( $sid eq "1025" ) {
|
||||||
return "usage: $cmd sid,cid[,mid]" unless( defined($cid) );
|
return "usage: $cmd sid,cid[,mid]" unless( defined($cid) );
|
||||||
|
|
||||||
#Playlist abspielen
|
#Playlist abspielen
|
||||||
$heosCmd = 'playPlaylist';
|
$heosCmd = 'playPlaylist';
|
||||||
$action = "sid=$sid&cid=$cid&aid=4";
|
$action = "sid=$sid&cid=$cid&aid=$aid"; #lau -->
|
||||||
$action = "sid=$sid&cid=$cid&mid=$mid&aid=4" if ( defined($mid) );
|
$action = "sid=$sid&cid=$cid&mid=$mid&aid=$aid" if ( defined($mid) ); #lau -->
|
||||||
|
#$action = "sid=$sid&cid=$cid&aid=4"; #lau <--
|
||||||
|
#$action = "sid=$sid&cid=$cid&mid=$mid&aid=4" if ( defined($mid) ); #lau <--
|
||||||
|
|
||||||
} elsif ( $sid eq "1026" ) {
|
} elsif ( $sid eq "1026" ) {
|
||||||
return "usage: $cmd sid,cid,mid" unless( defined($cid) );
|
return "usage: $cmd sid,cid,mid" unless( defined($cid) );
|
||||||
@ -708,8 +691,10 @@ sub HEOSPlayer_Set($$@) {
|
|||||||
if ( $cid eq "TRACKS" ) {
|
if ( $cid eq "TRACKS" ) {
|
||||||
|
|
||||||
$heosCmd = 'playPlaylist';
|
$heosCmd = 'playPlaylist';
|
||||||
$action = "sid=$sid&cid=$cid&aid=4";
|
$action = "sid=$sid&cid=$cid&aid=$aid"; #lau -->
|
||||||
$action = "sid=$sid&cid=$cid&mid=$mid&aid=4" if ( defined($mid) );
|
$action = "sid=$sid&cid=$cid&mid=$mid&aid=$aid" if ( defined($mid) ); #lau -->
|
||||||
|
#$action = "sid=$sid&cid=$cid&aid=4"; #lau <--
|
||||||
|
#$action = "sid=$sid&cid=$cid&mid=$mid&aid=4" if ( defined($mid) ); #lau <--
|
||||||
|
|
||||||
} elsif ( $cid eq "STATIONS" ) {
|
} elsif ( $cid eq "STATIONS" ) {
|
||||||
|
|
||||||
@ -739,6 +724,15 @@ sub HEOSPlayer_Set($$@) {
|
|||||||
$heosCmd = 'playQueueItem';
|
$heosCmd = 'playQueueItem';
|
||||||
$action = "qid=$cid";
|
$action = "qid=$cid";
|
||||||
|
|
||||||
|
} elsif ( $sid eq "url" ) {
|
||||||
|
|
||||||
|
#URL abspielen
|
||||||
|
$heosCmd = 'playStream';
|
||||||
|
#$action = "url=".substr($param,4);
|
||||||
|
$action = "url=$cid";
|
||||||
|
|
||||||
|
#getestet mit "set HEOSPlayer_Name input url,http://sender.eldoradio.de:8000/128.mp3" ich wollte [cid] nicht nutzen da in einer url ja durchaus mehrere Kommata vorkommen können ob das mit dem substr() so toll ich kann ich leider nicht beurteilen. Auch würde ich bei der $sid ein lc($sid) drum machen aber da es nirgendwo ist :-)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if ( $sid > 0 && $sid < 1024 ) {
|
if ( $sid > 0 && $sid < 1024 ) {
|
||||||
return "usage: $cmd sid,cid,mid" unless( defined($cid) && defined($mid) );
|
return "usage: $cmd sid,cid,mid" unless( defined($cid) && defined($mid) );
|
||||||
@ -752,8 +746,10 @@ sub HEOSPlayer_Set($$@) {
|
|||||||
|
|
||||||
#Server abspielen
|
#Server abspielen
|
||||||
$heosCmd = 'playPlaylist';
|
$heosCmd = 'playPlaylist';
|
||||||
$action = "sid=$sid&cid=$cid&aid=4";
|
$action = "sid=$sid&cid=$cid&aid=$aid"; #lau -->
|
||||||
$action = "sid=$sid&cid=$cid&mid=$mid&aid=4" if ( defined($mid) );
|
$action = "sid=$sid&cid=$cid&mid=$mid&aid=$aid" if ( defined($mid) ); #lau -->
|
||||||
|
#$action = "sid=$sid&cid=$cid&aid=4"; #lau <--
|
||||||
|
#$action = "sid=$sid&cid=$cid&mid=$mid&aid=4" if ( defined($mid) ); #lau <--
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -789,7 +785,7 @@ sub HEOSPlayer_Set($$@) {
|
|||||||
$list .= " playPlaylist:".join(",",@playlists) if( scalar @playlists > 0 );
|
$list .= " playPlaylist:".join(",",@playlists) if( scalar @playlists > 0 );
|
||||||
$list .= " deletePlaylist:".join(",",@playlists) if( scalar @playlists > 0 );
|
$list .= " deletePlaylist:".join(",",@playlists) if( scalar @playlists > 0 );
|
||||||
}
|
}
|
||||||
#print "List#########################################################\n".Dumper($list);
|
|
||||||
$list .= " aux:noArg" if ( exists $hash->{helper}{aux} );
|
$list .= " aux:noArg" if ( exists $hash->{helper}{aux} );
|
||||||
return "Unknown argument $cmd, choose one of $list";
|
return "Unknown argument $cmd, choose one of $list";
|
||||||
}
|
}
|
||||||
@ -808,8 +804,13 @@ sub HEOSPlayer_Parse($$) {
|
|||||||
my $decode_json;
|
my $decode_json;
|
||||||
my $code;
|
my $code;
|
||||||
|
|
||||||
|
|
||||||
|
$decode_json = eval{decode_json(encode_utf8($json))};
|
||||||
|
if($@){
|
||||||
|
Log3 $name, 3, "HEOSPlayer ($name) - JSON error while request: $@";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$decode_json = decode_json(encode_utf8($json));
|
|
||||||
Log3 $name, 4, "HEOSPlayer - ParseFn wurde aufgerufen";
|
Log3 $name, 4, "HEOSPlayer - ParseFn wurde aufgerufen";
|
||||||
if( defined($decode_json->{pid}) ) {
|
if( defined($decode_json->{pid}) ) {
|
||||||
|
|
||||||
@ -913,7 +914,6 @@ sub HEOSPlayer_WriteReadings($$) {
|
|||||||
my( @index )= grep { $presets[$_] eq $search } 0..$#presets if ( defined $search );
|
my( @index )= grep { $presets[$_] eq $search } 0..$#presets if ( defined $search );
|
||||||
|
|
||||||
readingsBulkUpdate( $hash, 'channel', $index[0]+1 ) if ( scalar @index > 0 );
|
readingsBulkUpdate( $hash, 'channel', $index[0]+1 ) if ( scalar @index > 0 );
|
||||||
#readingsBulkUpdate( $hash, 'state', 'on' );
|
|
||||||
readingsEndUpdate( $hash, 1 );
|
readingsEndUpdate( $hash, 1 );
|
||||||
Log3 $name, 5, "HEOSPlayer ($name) - readings set for $name";
|
Log3 $name, 5, "HEOSPlayer ($name) - readings set for $name";
|
||||||
return undef;
|
return undef;
|
||||||
@ -952,7 +952,7 @@ sub HEOSPlayer_PreProcessingReadings($$) {
|
|||||||
|
|
||||||
$buffer{'shuffle'} = $message{shuffle};
|
$buffer{'shuffle'} = $message{shuffle};
|
||||||
$buffer{'repeat'} = $message{repeat};
|
$buffer{'repeat'} = $message{repeat};
|
||||||
$buffer{'repeat'} =~ s/.*\_(.*)/$1/g;
|
$buffer{'repeat'} =~ s/.*\_(.*)/$1/g if( defined($buffer{'repeat'}) );
|
||||||
|
|
||||||
} elsif ( $decode_json->{heos}{command} =~ /get_mute/ ) {
|
} elsif ( $decode_json->{heos}{command} =~ /get_mute/ ) {
|
||||||
|
|
||||||
@ -1188,6 +1188,7 @@ sub HEOSPlayer_makeImage($$) {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>channelring - when reaching the last favorite ChannelUp/Down switches in circle, i.e. to the first/last favorite again</li>
|
<li>channelring - when reaching the last favorite ChannelUp/Down switches in circle, i.e. to the first/last favorite again</li>
|
||||||
<li>mute2play - if mute switch on speaker is pressed, the stream stops</li>
|
<li>mute2play - if mute switch on speaker is pressed, the stream stops</li>
|
||||||
|
<li>add2qopt - when adding content to the queue: defines into which position within the queue and if playing is started immediately: 1-play now, 2-play next, 3-only add to end of queue, 4-replace and play (default if not set within the device)</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -1284,6 +1285,7 @@ sub HEOSPlayer_makeImage($$) {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>channelring - Beim Erreichen des letzten Favoriten schaltet ChannelUp/Down im Kreis, also wieder auf den ersten/letzten Favoriten</li>
|
<li>channelring - Beim Erreichen des letzten Favoriten schaltet ChannelUp/Down im Kreis, also wieder auf den ersten/letzten Favoriten</li>
|
||||||
<li>mute2play - Beim Betätigen der Mute-Taste am Lautsprecher wird auch der Stream angehalten</li>
|
<li>mute2play - Beim Betätigen der Mute-Taste am Lautsprecher wird auch der Stream angehalten</li>
|
||||||
|
<li>add2qopt - Beim Hinzufügen von Inhalten in die Warteschlange: definiert an welcher Position innerhalb der Warteschlange hinzugef$uumlgt wird und ob die Wiedergabe sofort gestartet wird: 1-sofort wiedergeben, 2-als nächstes wiedergeben, 3-nur ans Ende der Warteschlange anhängen, 4-Warteschlange ersetzen und sofort wiedergeben (Voreinstellung, wenn nicht im device gesetzt)</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user