diff --git a/lib/sonos/endpoint/a_v_transport.rb b/lib/sonos/endpoint/a_v_transport.rb index 754c975..6fbc74b 100644 --- a/lib/sonos/endpoint/a_v_transport.rb +++ b/lib/sonos/endpoint/a_v_transport.rb @@ -39,13 +39,14 @@ def has_music? # Get information about the state the player is in. def get_player_state response = send_transport_message('GetTransportInfo') - body = response.body[:get_transport_info_response] - - { - status: body[:current_transport_status], - state: body[:current_transport_state], - speed: body[:current_speed], - } + if response + body = response.body[:get_transport_info_response] + { + status: body[:current_transport_status], + state: body[:current_transport_state], + speed: body[:current_speed], + } + end end # Returns true if the player is not in a paused or stopped state @@ -103,7 +104,7 @@ def select_track(index) # Clear the queue def clear_queue - parse_response parse_response send_transport_message('RemoveAllTracksFromQueue') + parse_response send_transport_message('RemoveAllTracksFromQueue') end # Save queue @@ -237,12 +238,16 @@ def set_av_transport_uri(uri) end def transport_client - @transport_client ||= Savon.client endpoint: "http://#{self.group_master.ip}:#{Sonos::PORT}#{TRANSPORT_ENDPOINT}", namespace: Sonos::NAMESPACE, log: Sonos.logging_enabled + if self.group_master + @transport_client ||= Savon.client endpoint: "http://#{self.group_master.ip}:#{Sonos::PORT}#{TRANSPORT_ENDPOINT}", namespace: Sonos::NAMESPACE, log: Sonos.logging_enabled + end end def send_transport_message(name, part = '1') action = "#{TRANSPORT_XMLNS}##{name}" message = %Q{0#{part}} - transport_client.call(name, soap_action: action, message: message) + if transport_client + transport_client.call(name, soap_action: action, message: message) + end end end diff --git a/lib/sonos/features/voiceover.rb b/lib/sonos/features/voiceover.rb index 0fb0ab6..e26ff90 100644 --- a/lib/sonos/features/voiceover.rb +++ b/lib/sonos/features/voiceover.rb @@ -13,6 +13,11 @@ def voiceover!(uri, vol = nil) result.merge({duration: (Time.now - start_time )}) end + def resume_queue + puts "resume queue" + play uid.gsub('uuid', 'x-rincon-queue') + '#0' + end + protected def with_isolated_state