philchillbill wrote: ↑Sunday 31 December 2017 0:40
...
However, Logitech recommends using the JSON RPC construct instead of HTTP. You can look at the wiki on LMS at my entry on playing alerts to see how this can be done from perl. Should be trivial to rewrite to Lua or Bash.
No coder, but trying to read your perl script, is this portion related to rebooting my Squeezebox somehow?:
sub checkOnOffline {
my ($idx, $checkfor)=@_;
$ua=LWP::UserAgent->new; $ua->timeout(5);
$retrieve=$ua->get($url{domo}.'/json.htm?type=devices&rid='.$idx);
$res=$retrieve->decoded_content;
if ($retrieve->is_success) { $jres = decode_json $res } else { warn "checkOnOffline: ", $retrieve->status_line };
$state=$$jres{result}[0]->{Status}; # 'On', 'Off', 'Open', 'Closed', 'Disconnected' etc
if ($state=~m/\b$checkfor\b/) { $status=1 } else { $status=0 };
return $status;
}
sub squeezeAlert {
my ($player, $prechime, $tts)=@_;
$client=new JSON::RPC::Client;
$playerid=$players{$player}{mac}; $idx=$players{$player}{idx};
$offline=&checkOnOffline($idx, 'Disconnected'); if ($offline) { return };
&logMessage("SQUEEZEALERT: played alert '$tts' on player $player");
# Get current player state so it can be restored when alert is finished
$res = $client->call( $url{lms}, { method => 'slim.request', params => [ $playerid, ['power', '?'] ] });
if ($res->is_error) { warn "squeezeAlert:", $client->status_line; return };
$jres = $res->jsontext; $jdata=decode_json $jres; $power=$$jdata{result}{_power};