mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-01 20:20:10 +00:00
71_YAMAHA_MC.pm:Optimized minidlna access for speak command
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@19053 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
906053464c
commit
1ca4dbe360
@ -1074,7 +1074,7 @@ sub YAMAHA_MC_SpeakFile($$) # only called when defined, not on reload.
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
# wenn nicht definiert, dann gleich beenden
|
# wenn nicht definiert, dann gleich beenden
|
||||||
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile called, parameter Host=$hash->{HOST} " if(!defined($hash->{HOST}));
|
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile called, parameter Host=$hash->{HOST} " if(!defined($hash->{HOST}));
|
||||||
return undef if(not defined($HOST));
|
return undef if(not defined($HOST));
|
||||||
|
|
||||||
my $DLNAsearch = AttrVal($hash->{NAME}, "DLNAsearch","off");
|
my $DLNAsearch = AttrVal($hash->{NAME}, "DLNAsearch","off");
|
||||||
@ -1122,7 +1122,7 @@ sub YAMAHA_MC_SpeakFile($$) # only called when defined, not on reload.
|
|||||||
my $powerCmdDelay = AttrVal($hash->{NAME}, "powerCmdDelay",3);
|
my $powerCmdDelay = AttrVal($hash->{NAME}, "powerCmdDelay",3);
|
||||||
|
|
||||||
my $standardVolume = AttrVal($hash->{NAME}, "standard_volume",15);
|
my $standardVolume = AttrVal($hash->{NAME}, "standard_volume",15);
|
||||||
my $ttsvolume = AttrVal($hash->{NAME}, "ttsvolume",$standardVolume);
|
my $ttsvolume = AttrVal($hash->{NAME}, "ttsvolume",undef);
|
||||||
my $currentInput = ReadingsVal($name, "input", "unknown");
|
my $currentInput = ReadingsVal($name, "input", "unknown");
|
||||||
my $currentVolume = ReadingsVal($name, "volume", 0);
|
my $currentVolume = ReadingsVal($name, "volume", 0);
|
||||||
my $currentMute = ReadingsVal($name, "mute", "false");
|
my $currentMute = ReadingsVal($name, "mute", "false");
|
||||||
@ -1159,15 +1159,20 @@ sub YAMAHA_MC_SpeakFile($$) # only called when defined, not on reload.
|
|||||||
}
|
}
|
||||||
|
|
||||||
Log3 $name, 4, "YAMAHA_MC_SpeakFile setting volume from old $currentVolume to new volume $ttsvolume";
|
Log3 $name, 4, "YAMAHA_MC_SpeakFile setting volume from old $currentVolume to new volume $ttsvolume";
|
||||||
if (defined($ttsvolume) and ($ttsvolume != $currentVolume)) {
|
if (defined($ttsvolume)) {
|
||||||
# Volume merken, um spaeter zurückschalten zu können
|
if ($ttsvolume != $currentVolume) {
|
||||||
$hash->{helper}{OriginalVolume} = $currentVolume;
|
# Volume merken, um spaeter zurückschalten zu können
|
||||||
YAMAHA_MC_httpRequestQueue($hash, "volume", YAMAHA_MC_volume_rel2abs($hash,$ttsvolume), {options => {unless_in_queue => 1, can_fail => 1,priority => 2, volume_target => $ttsvolume, original_cmd => "speakfile", original_priority => 1}}); # call fn that will do the http request
|
$hash->{helper}{OriginalVolume} = $currentVolume;
|
||||||
return undef;
|
YAMAHA_MC_httpRequestQueue($hash, "volume", YAMAHA_MC_volume_rel2abs($hash,$ttsvolume), {options => {unless_in_queue => 1, can_fail => 1,priority => 2, volume_target => $ttsvolume, original_cmd => "speakfile", original_priority => 1}}); # call fn that will do the http request
|
||||||
}
|
return undef;
|
||||||
else {
|
}
|
||||||
Log3 $name, 4, "$name : YAMAHA_MC_SpeakFile volume correctly set to and already set to $currentVolume, continue ";
|
else {
|
||||||
}
|
Log3 $name, 4, "$name : YAMAHA_MC_SpeakFile volume correctly set to and already set to $currentVolume, continue ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Log3 $name, 4, "$name : YAMAHA_MC_SpeakFile no ttsvolume set, continue with current volumne ";
|
||||||
|
}
|
||||||
|
|
||||||
# turn muting off
|
# turn muting off
|
||||||
if ($currentMute eq "true"){
|
if ($currentMute eq "true"){
|
||||||
@ -1192,17 +1197,23 @@ sub YAMAHA_MC_SpeakFile($$) # only called when defined, not on reload.
|
|||||||
|
|
||||||
# restarting miniDLNA to rescan files
|
# restarting miniDLNA to rescan files
|
||||||
my $ret = "";
|
my $ret = "";
|
||||||
$ret .= qx(sudo minidlna -R);
|
$ret .= qx([ -f /usr/sbin/minidlnad ] && sudo minidlnad -R || sudo minidlna -R);
|
||||||
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile rescan return $ret";
|
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile rescan return $ret";
|
||||||
$ret .= qx(sudo service minidlna restart);
|
$ret .= qx(sudo service minidlna restart);
|
||||||
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile restart return $ret";
|
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile restart return $ret";
|
||||||
|
|
||||||
|
|
||||||
|
my $DLNARendererName = ReadingsVal($name, "DLNARenderer", "unknown");
|
||||||
|
my $DLNAMediaServerName = ReadingsVal($name, "MediaServer", "unknown");
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Renderer ermitteln
|
# Renderer ermitteln
|
||||||
#
|
#
|
||||||
if (exists($hash->{helper}{MediaRendererDLNA})) {
|
if ((exists($hash->{helper}{MediaRendererDLNA})) && ($DLNARendererName ne "unknown")) {
|
||||||
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile MediaRendererDLNA exists, not restarting discovery";
|
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile MediaRendererDLNA exists, not restarting discovery";
|
||||||
|
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile Stopping MediaRendererDLNA";
|
||||||
|
$hash->{helper}{MediaRendererDLNA}->stop();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile MediaRendererDLNA does not exists, restarting discovery";
|
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile MediaRendererDLNA does not exists, restarting discovery";
|
||||||
@ -1211,24 +1222,26 @@ sub YAMAHA_MC_SpeakFile($$) # only called when defined, not on reload.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# searching for mediaServer miniDLNA
|
# searching for mediaServer miniDLNA
|
||||||
#
|
#
|
||||||
if (exists($hash->{helper}{MediaRendererDLNA})) {
|
if ((exists($hash->{helper}{MediaServerDLNA})) && ($DLNAMediaServerName ne "unknown")) {
|
||||||
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile MediaServerDLNA exists, not restarting discovery";
|
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile MediaServerDLNA exists, not restarting discovery";
|
||||||
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile Stopping MediaRendererDLNA";
|
|
||||||
$hash->{helper}{MediaRendererDLNA}->stop();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile MediaRendererDLNA still not defined";
|
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile MediaServerDLNA still not defined";
|
||||||
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile restarting YAMAHA_MC_DiscoverRenderer again ...";
|
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile restarting YAMAHA_MC_DiscoverMediaServer again ...";
|
||||||
YAMAHA_MC_DiscoverRenderer($hash);
|
YAMAHA_MC_DiscoverMediaServer($hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# perhaps after re-discovering, now available ?
|
||||||
|
$DLNARendererName = ReadingsVal($name, "DLNARenderer", "unknown");
|
||||||
|
$DLNAMediaServerName = ReadingsVal($name, "MediaServer", "unknown");
|
||||||
|
|
||||||
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile Getting ContentDirectory";
|
Log3 $hash, 3, "$name YAMAHA_MC_SpeakFile Getting ContentDirectory";
|
||||||
#my $condir_service = $dev->getservicebyname('urn:schemas-upnp-org:service:ContentDirectory:1');
|
#my $condir_service = $dev->getservicebyname('urn:schemas-upnp-org:service:ContentDirectory:1');
|
||||||
if (exists($hash->{helper}{MediaRendererDLNA})) {
|
if ((exists($hash->{helper}{MediaServerDLNA})) && ($DLNAMediaServerName ne "unknown")) {
|
||||||
my $condir_service = $hash->{helper}{MediaServerDLNA}->getservicebyname('urn:schemas-upnp-org:service:ContentDirectory:1');
|
my $condir_service = $hash->{helper}{MediaServerDLNA}->getservicebyname('urn:schemas-upnp-org:service:ContentDirectory:1');
|
||||||
|
|
||||||
#unless (defined(condir_service)) {
|
#unless (defined(condir_service)) {
|
||||||
@ -1375,7 +1388,7 @@ sub YAMAHA_MC_SpeakFile($$) # only called when defined, not on reload.
|
|||||||
|
|
||||||
# Deleting tts File
|
# Deleting tts File
|
||||||
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile try delete tts file $originalSearchfilename : $ret";
|
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile try delete tts file $originalSearchfilename : $ret";
|
||||||
$ret .= qx(sudo rm -f $originalSearchfilename);
|
$ret .= qx(timeout 2 sudo id && sudo rm -f $originalSearchfilename || rm -f $originalSearchfilename );
|
||||||
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile delete tts file $originalSearchfilename : $ret";
|
Log3 $name, 4, "$name YAMAHA_MC_SpeakFile delete tts file $originalSearchfilename : $ret";
|
||||||
|
|
||||||
if ( (defined($URILink)) and (defined($hash->{helper}{MediaRendererDLNA})) ) {
|
if ( (defined($URILink)) and (defined($hash->{helper}{MediaRendererDLNA})) ) {
|
||||||
@ -1384,6 +1397,10 @@ sub YAMAHA_MC_SpeakFile($$) # only called when defined, not on reload.
|
|||||||
}
|
}
|
||||||
$hash->{LastTtsFile}="";
|
$hash->{LastTtsFile}="";
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
Log3 $name, 3, "$name YAMAHA_MC_SpeakFile stopping MediaServerDLNA does not exist";
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# resetting input back
|
# resetting input back
|
||||||
# ALte Werte wiederherstellen
|
# ALte Werte wiederherstellen
|
||||||
@ -4068,7 +4085,12 @@ sub YAMAHA_MC_httpRequestParse($$$)
|
|||||||
my $original_data = "";
|
my $original_data = "";
|
||||||
my $original_arg = $options->{original_arg};
|
my $original_arg = $options->{original_arg};
|
||||||
|
|
||||||
Log3 $name, 5, "YAMAHA_MC ($name) YAMAHA_MC_httpRequestParse reset in queue orginal cmd s ". $options->{original_cmd}." with args ".$original_arg." original prio ".$options->{original_priority};
|
if (defined($original_arg)) {
|
||||||
|
Log3 $name, 5, "YAMAHA_MC ($name) YAMAHA_MC_httpRequestParse reset in queue orginal cmd ". $options->{original_cmd}." with args ".$original_arg." original prio ".$options->{original_priority};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Log3 $name, 5, "YAMAHA_MC ($name) YAMAHA_MC_httpRequestParse reset in queue orginal cmd ". $options->{original_cmd}." without args original prio ".$options->{original_priority};
|
||||||
|
}
|
||||||
|
|
||||||
# In case any URL changes must be made, this part is separated in this function".
|
# In case any URL changes must be made, this part is separated in this function".
|
||||||
my $param = {
|
my $param = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user