class NanoleafRuby::Api
Public Class Methods
new(token: nil, ip_address: nil, raise_errors: false)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 9 def initialize(token: nil, ip_address: nil, raise_errors: false) @access_token = ENV['NANOLEAF_API_TOKEN'] || token @nanoleaf_ip = ENV['NANOLEAF_IP_ADDRESS'] || ip_address @api_url = get_api_url @requester = BaseRequester.new(raise_errors: raise_errors) end
Public Instance Methods
brightness_down(increment = 1)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 60 def brightness_down(increment = 1) brightness_increment(-increment) end
brightness_increment(increment = 1)
click to toggle source
brightness commands
# File lib/nanoleaf_ruby.rb, line 50 def brightness_increment(increment = 1) params = { brightness: {} } params[:brightness][:increment] = increment @requester.put(url: "#{@api_url}/state", params: params) end
brightness_up(increment = 1)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 56 def brightness_up(increment = 1) brightness_increment(increment) end
choose_effect(name)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 181 def choose_effect(name) params = { select: name } @requester.put(url: "#{@api_url}/effects", params: params) end
color_mode()
click to toggle source
color mode
# File lib/nanoleaf_ruby.rb, line 40 def color_mode @requester.get(url: "#{@api_url}/state/colorMode") end
ct_down(increment = 1)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 111 def ct_down(increment = 1) ct_increment(-increment) end
ct_increment(increment = 1)
click to toggle source
color temperature commands
# File lib/nanoleaf_ruby.rb, line 101 def ct_increment(increment = 1) params = { ct: {} } params[:ct][:increment] = increment @requester.put(url: "#{@api_url}/state", params: params) end
ct_up(increment = 1)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 107 def ct_up(increment = 1) ct_increment(increment) end
delete_auth_token()
click to toggle source
user commands
# File lib/nanoleaf_ruby.rb, line 191 def delete_auth_token @requester.delete(url: @api_url) end
effects_list()
click to toggle source
effects
# File lib/nanoleaf_ruby.rb, line 176 def effects_list response = @requester.get(url: "#{@api_url}/effects/effectsList") response[:data] end
generate_auth_token()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 195 def generate_auth_token response = @requester.post(url: "http://#{@nanoleaf_ip}/api/v1/new") if response[:success] puts 'Auth token successfully generated!' puts "Token: #{response.dig(:data, 'auth_token')}" elsif response[:code] == 403 puts 'Press and hold the power button for 5-7 seconds first!' puts '(Light will begin flashing)' else puts "Sorry, something went wrong and I don't know what!" end end
get_brightness()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 71 def get_brightness @requester.get(url: "#{@api_url}/state/brightness") end
get_ct()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 121 def get_ct @requester.get(url: "#{@api_url}/state/ct") end
get_hue()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 96 def get_hue @requester.get(url: "#{@api_url}/state/hue") end
get_rgb()
click to toggle source
color_commands
# File lib/nanoleaf_ruby.rb, line 151 def get_rgb hue = get_hue.dig(:data, 'value') saturation = get_sat.dig(:data, 'value') brightness = get_brightness.dig(:data, 'value') ColorUtils.hsv_to_rgb(hue, saturation, brightness) end
get_sat()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 146 def get_sat @requester.get(url: "#{@api_url}/state/sat") end
hue_down(increment = 1)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 86 def hue_down(increment = 1) hue_increment(-increment) end
hue_increment(increment = 1)
click to toggle source
hue commands
# File lib/nanoleaf_ruby.rb, line 76 def hue_increment(increment = 1) params = { hue: {} } params[:hue][:increment] = increment @requester.put(url: "#{@api_url}/state", params: params) end
hue_up(increment = 1)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 82 def hue_up(increment = 1) hue_increment(increment) end
identify()
click to toggle source
flash panels
# File lib/nanoleaf_ruby.rb, line 45 def identify @requester.put(url: "#{@api_url}/identify") end
info()
click to toggle source
info dump from panels
# File lib/nanoleaf_ruby.rb, line 17 def info @requester.get(url: @api_url) end
off()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 27 def off params = { on: false } @requester.put(url: "#{@api_url}/state", params: params) end
on()
click to toggle source
power on/off
# File lib/nanoleaf_ruby.rb, line 22 def on params = { on: true } @requester.put(url: "#{@api_url}/state", params: params) end
random_effect()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 186 def random_effect choose_effect(effects_list.sample) end
sat_down(increment = 1)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 136 def sat_down(increment = 1) sat_increment(-increment) end
sat_increment(increment = 1)
click to toggle source
saturation commands
# File lib/nanoleaf_ruby.rb, line 126 def sat_increment(increment = 1) params = { sat: {} } params[:sat][:increment] = increment @requester.put(url: "#{@api_url}/state", params: params) end
sat_up(increment = 1)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 132 def sat_up(increment = 1) sat_increment(increment) end
set_brightness(value, duration = nil)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 64 def set_brightness(value, duration = nil) params = { brightness: {} } params[:brightness][:value] = value params[:brightness][:duration] = duration if duration @requester.put(url: "#{@api_url}/state", params: params) end
set_color(string)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 158 def set_color(string) hsb = ColorUtils.get_color(string) write_color(hsb) end
set_ct(value)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 115 def set_ct(value) params = { ct: {} } params[:ct][:value] = value @requester.put(url: "#{@api_url}/state", params: params) end
set_hue(value)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 90 def set_hue(value) params = { hue: {} } params[:hue][:value] = value @requester.put(url: "#{@api_url}/state", params: params) end
set_rgb(red, green, blue)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 163 def set_rgb(red, green, blue) hsb = ColorUtils.get_color("rgb(#{red},#{green},#{blue})") write_color(hsb) end
set_sat(value)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 140 def set_sat(value) params = { sat: {} } params[:sat][:value] = value @requester.put(url: "#{@api_url}/state", params: params) end
toggle()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 32 def toggle response = @requester.get(url: "#{@api_url}/state/on/value") on = response.dig(:raw, :body) == 'true' params = { on: !on } @requester.put(url: "#{@api_url}/state", params: params) end
write_color(hsb)
click to toggle source
# File lib/nanoleaf_ruby.rb, line 168 def write_color(hsb) params = { hue: { value: hsb[0] } } params[:sat] = { value: hsb[1] } params[:brightness] = { value: hsb[2] } @requester.put(url: "#{@api_url}/state", params: params) end
Private Instance Methods
get_api_url()
click to toggle source
# File lib/nanoleaf_ruby.rb, line 210 def get_api_url raise Errors::Configuration, 'Nanoleaf IP address missing' unless @nanoleaf_ip raise Errors::Configuration, 'Nanoleaf access token missing' unless @access_token "http://#{@nanoleaf_ip}/api/v1/#{@access_token}" end