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