Class: Sonos::Device::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/sonos/device/base.rb

Direct Known Subclasses

Accessory, Speaker

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ip, data = nil) ⇒ Base

Returns a new instance of Base.



25
26
27
28
29
30
31
32
33
# File 'lib/sonos/device/base.rb', line 25

def initialize(ip, data = nil)
  @ip = ip

  if data.nil?
    self.data = Base.retrieve_information(ip)
  else
    self.data = data
  end
end

Instance Attribute Details

#groupObject (readonly)

Returns the value of attribute group.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def group
  @group
end

#group_masterObject

Returns the value of attribute group_master.



9
10
11
# File 'lib/sonos/device/base.rb', line 9

def group_master
  @group_master
end

#hardware_versionObject (readonly)

Returns the value of attribute hardware_version.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def hardware_version
  @hardware_version
end

#iconObject (readonly)

Returns the value of attribute icon.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def icon
  @icon
end

#ipObject (readonly)

Returns the value of attribute ip.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def ip
  @ip
end

#mac_addressObject (readonly)

Returns the value of attribute mac_address.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def mac_address
  @mac_address
end

#model_numberObject (readonly)

Returns the value of attribute model_number.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def model_number
  @model_number
end

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def name
  @name
end

#serial_numberObject (readonly)

Returns the value of attribute serial_number.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def serial_number
  @serial_number
end

#servicesObject (readonly)

Returns the value of attribute services.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def services
  @services
end

#software_versionObject (readonly)

Returns the value of attribute software_version.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def software_version
  @software_version
end

#uidObject (readonly)

Returns the value of attribute uid.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def uid
  @uid
end

#zone_typeObject (readonly)

Returns the value of attribute zone_type.



6
7
8
# File 'lib/sonos/device/base.rb', line 6

def zone_type
  @zone_type
end

Class Method Details

.detect(ip) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/sonos/device/base.rb', line 11

def self.detect(ip)
  data = retrieve_information(ip)
  model_number = data[:model_number]

  # TODO: Clean up
  if Accessory.models.keys.include?(model_number.to_sym)
    Accessory.new(ip, data)
  elsif Speaker.models.keys.include?(model_number.to_sym)
    Speaker.new(ip, data)
  else
    raise ArgumentError.new("#{data[:model_number]} not supported")
  end
end

Instance Method Details

#dataObject



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/sonos/device/base.rb', line 46

def data
  {
    name: @name,
    uid: @uid,
    serial_number: @serial_number,
    software_version: @software_version,
    hardware_version: @hardware_version,
    zone_type: @zone_type,
    model_number: @model_number,
    services: @services
  }
end

#data=(data) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/sonos/device/base.rb', line 35

def data=(data)
  @name = data[:name]
  @uid = data[:uid]
  @serial_number = data[:serial_number]
  @software_version = data[:software_version]
  @hardware_version = data[:hardware_version]
  @zone_type = data[:zone_type]
  @model_number = data[:model_number]
  @services = data[:services]
end

#modelString

Get the device’s model

Returns:

  • (String)

    a string representation of the device’s model



61
62
63
# File 'lib/sonos/device/base.rb', line 61

def model
  self.class.models[@model_number.to_sym]
end

#speaker?Boolean

Can this device play music?

Returns:

  • (Boolean)

    a boolean indicating if it can play music



67
68
69
# File 'lib/sonos/device/base.rb', line 67

def speaker?
  false
end