class Milight::RgbwGroup

Constants

BRIGHTNESS
COLOUR
GROUP_OFF
GROUP_ON
GROUP_WHITE

Attributes

commander[R]

Public Class Methods

new(commander, group, colour_helper: Milight::Colour) click to toggle source
# File lib/milight/rgbw_group.rb, line 15
def initialize(commander, group, colour_helper: Milight::Colour)
  raise invalid_group_error unless valid_group? group
  @index = group - 1
  @commander = commander
  @colour_helper = colour_helper
end

Public Instance Methods

brightness(value) click to toggle source
# File lib/milight/rgbw_group.rb, line 43
def brightness(value)
  brightness = Milight::Brightness.new(value)
  send_brightness_cmd brightness
  self
end
colour(colour) click to toggle source
# File lib/milight/rgbw_group.rb, line 49
def colour(colour)
  colour_value = @colour_helper.new(colour)
  colour_value.greyscale? ? send_white_cmd : send_colour_cmd(colour_value)
  send_brightness_cmd colour_value
  self
end
hue(hue) click to toggle source
# File lib/milight/rgbw_group.rb, line 37
def hue(hue)
  colour = @colour_helper.new(hue)
  send_colour_cmd colour
  self
end
off() click to toggle source
# File lib/milight/rgbw_group.rb, line 27
def off
  @commander.send_command GROUP_OFF[@index]
  self
end
on() click to toggle source
# File lib/milight/rgbw_group.rb, line 22
def on
  @commander.send_command GROUP_ON[@index]
  self
end
white() click to toggle source
# File lib/milight/rgbw_group.rb, line 32
def white
  send_white_cmd
  self
end

Private Instance Methods

invalid_group_error() click to toggle source
# File lib/milight/rgbw_group.rb, line 76
def invalid_group_error
  ArgumentError.new('Group must be between 1 and 4')
end
select() click to toggle source
# File lib/milight/rgbw_group.rb, line 72
def select
  on
end
send_brightness_cmd(colour) click to toggle source
# File lib/milight/rgbw_group.rb, line 67
def send_brightness_cmd colour
  select
  @commander.send_command BRIGHTNESS, colour.to_milight_brightness
end
send_colour_cmd(colour) click to toggle source
# File lib/milight/rgbw_group.rb, line 62
def send_colour_cmd colour
  select
  @commander.send_command COLOUR, colour.to_milight_colour
end
send_white_cmd() click to toggle source
# File lib/milight/rgbw_group.rb, line 58
def send_white_cmd
  @commander.send_command GROUP_WHITE[@index]
end
valid_group?(value) click to toggle source
# File lib/milight/rgbw_group.rb, line 80
def valid_group?(value)
  value.between?(1, 4)
end