class Sonos::Device::Speaker

Used for PLAY:3, PLAY:5, PLAYBAR, SUB, CONNECT and CONNECT:AMP

Constants

MODELS

Public Class Methods

models() click to toggle source
# File lib/sonos/device/speaker.rb, line 29
def self.models
  MODELS
end

Public Instance Methods

crossfade_off() click to toggle source
# File lib/sonos/device/speaker.rb, line 57
def crossfade_off
  set_crossfade(false)
end
crossfade_on() click to toggle source
# File lib/sonos/device/speaker.rb, line 53
def crossfade_on
  set_crossfade(true)
end
get_playmode() click to toggle source
# File lib/sonos/device/speaker.rb, line 88
def get_playmode
  doc = Nokogiri::XML(open("http://#{self.group_master.ip}:#{Sonos::PORT}/status/playmode"))
  playmode = {}
  playmode[:shuffle] = doc.xpath('//Shuffle').inner_text == "On"
  playmode[:repeat] = doc.xpath('//Repeat').inner_text == "On"
  playmode[:crossfade] = doc.xpath('//Crossfade').inner_text == "On"
  playmode
end
repeat_off() click to toggle source
# File lib/sonos/device/speaker.rb, line 49
def repeat_off
  shuffle_repeat_change("repeat_off")
end
repeat_on() click to toggle source
# File lib/sonos/device/speaker.rb, line 45
def repeat_on
  shuffle_repeat_change("repeat_on")
end
set_crossfade(crossfade) click to toggle source
# File lib/sonos/device/speaker.rb, line 83
def set_crossfade(crossfade)
  crossfade_value = crossfade ? 1 : 0
  send_transport_message('SetCrossfadeMode', "<InstanceID>0</InstanceID><CrossfadeMode>#{crossfade_value}</CrossfadeMode>")
end
set_playmode(status = {:shuffle => false, :repeat => false}) click to toggle source
# File lib/sonos/device/speaker.rb, line 76
def set_playmode(status = {:shuffle => false, :repeat => false})
  send_transport_message('SetPlayMode', "<NewPlayMode>SHUFFLE</NewPlayMode>")           if (status[:shuffle]  && status[:repeat] )
  send_transport_message('SetPlayMode', "<NewPlayMode>SHUFFLE_NOREPEAT</NewPlayMode>")  if (status[:shuffle]  && !status[:repeat])
  send_transport_message('SetPlayMode', "<NewPlayMode>REPEAT_ALL</NewPlayMode>")        if (!status[:shuffle] && status[:repeat] )
  send_transport_message('SetPlayMode', "<NewPlayMode>NORMAL</NewPlayMode>")            if (!status[:shuffle] && !status[:repeat])
end
shuffle_off() click to toggle source
# File lib/sonos/device/speaker.rb, line 41
def shuffle_off
  shuffle_repeat_change("shuffle_off")
end
shuffle_on() click to toggle source
# File lib/sonos/device/speaker.rb, line 37
def shuffle_on
  shuffle_repeat_change("shuffle_on")
end
shuffle_repeat_change(command) click to toggle source
# File lib/sonos/device/speaker.rb, line 61
def shuffle_repeat_change(command)
  status = get_playmode
  case command
  when "shuffle_on"
    status[:shuffle] = true;
  when "shuffle_off"
    status[:shuffle] = false;
  when "repeat_on"
    status[:repeat] = true;
  when "repeat_off"
    status[:repeat] = false;
  end
  set_playmode(status)
end
speaker?() click to toggle source
# File lib/sonos/device/speaker.rb, line 33
def speaker?
  services.include?('urn:upnp-org:serviceId:MusicServices')
end