Class: NanoleafRuby::Api
- Inherits:
-
Object
- Object
- NanoleafRuby::Api
- Defined in:
- lib/nanoleaf_ruby.rb
Instance Method Summary collapse
- #brightness_down(increment = 1) ⇒ Object
-
#brightness_increment(increment = 1) ⇒ Object
brightness commands.
- #brightness_up(increment = 1) ⇒ Object
- #choose_effect(name) ⇒ Object
-
#color_mode ⇒ Object
color mode.
- #ct_down(increment = 1) ⇒ Object
-
#ct_increment(increment = 1) ⇒ Object
color temperature commands.
- #ct_up(increment = 1) ⇒ Object
-
#delete_auth_token ⇒ Object
user commands.
-
#effects_list ⇒ Object
effects.
- #generate_auth_token ⇒ Object
- #get_brightness ⇒ Object
- #get_ct ⇒ Object
- #get_hue ⇒ Object
-
#get_rgb ⇒ Object
color_commands.
- #get_sat ⇒ Object
- #hue_down(increment = 1) ⇒ Object
-
#hue_increment(increment = 1) ⇒ Object
hue commands.
- #hue_up(increment = 1) ⇒ Object
-
#identify ⇒ Object
flash panels.
-
#info ⇒ Object
info dump from panels.
-
#initialize(token: nil, ip_address: nil, raise_errors: false) ⇒ Api
constructor
A new instance of Api.
- #off ⇒ Object
-
#on ⇒ Object
power on/off.
- #random_effect ⇒ Object
- #sat_down(increment = 1) ⇒ Object
-
#sat_increment(increment = 1) ⇒ Object
saturation commands.
- #sat_up(increment = 1) ⇒ Object
- #set_brightness(value, duration = nil) ⇒ Object
- #set_color(string) ⇒ Object
- #set_ct(value) ⇒ Object
- #set_hue(value) ⇒ Object
- #set_rgb(red, green, blue) ⇒ Object
- #set_sat(value) ⇒ Object
- #toggle ⇒ Object
- #write_color(hsb) ⇒ Object
Constructor Details
#initialize(token: nil, ip_address: nil, raise_errors: false) ⇒ Api
Returns a new instance of Api.
9 10 11 12 13 14 |
# 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 |
Instance Method Details
#brightness_down(increment = 1) ⇒ Object
60 61 62 |
# File 'lib/nanoleaf_ruby.rb', line 60 def brightness_down(increment = 1) brightness_increment(-increment) end |
#brightness_increment(increment = 1) ⇒ Object
brightness commands
50 51 52 53 54 |
# 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) ⇒ Object
56 57 58 |
# File 'lib/nanoleaf_ruby.rb', line 56 def brightness_up(increment = 1) brightness_increment(increment) end |
#choose_effect(name) ⇒ Object
181 182 183 184 |
# 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 ⇒ Object
color mode
40 41 42 |
# File 'lib/nanoleaf_ruby.rb', line 40 def color_mode @requester.get(url: "#{@api_url}/state/colorMode") end |
#ct_down(increment = 1) ⇒ Object
111 112 113 |
# File 'lib/nanoleaf_ruby.rb', line 111 def ct_down(increment = 1) ct_increment(-increment) end |
#ct_increment(increment = 1) ⇒ Object
color temperature commands
101 102 103 104 105 |
# 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) ⇒ Object
107 108 109 |
# File 'lib/nanoleaf_ruby.rb', line 107 def ct_up(increment = 1) ct_increment(increment) end |
#delete_auth_token ⇒ Object
user commands
191 192 193 |
# File 'lib/nanoleaf_ruby.rb', line 191 def delete_auth_token @requester.delete(url: @api_url) end |
#effects_list ⇒ Object
effects
176 177 178 179 |
# File 'lib/nanoleaf_ruby.rb', line 176 def effects_list response = @requester.get(url: "#{@api_url}/effects/effectsList") response[:data] end |
#generate_auth_token ⇒ Object
195 196 197 198 199 200 201 202 203 204 205 206 |
# 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 ⇒ Object
71 72 73 |
# File 'lib/nanoleaf_ruby.rb', line 71 def get_brightness @requester.get(url: "#{@api_url}/state/brightness") end |
#get_ct ⇒ Object
121 122 123 |
# File 'lib/nanoleaf_ruby.rb', line 121 def get_ct @requester.get(url: "#{@api_url}/state/ct") end |
#get_hue ⇒ Object
96 97 98 |
# File 'lib/nanoleaf_ruby.rb', line 96 def get_hue @requester.get(url: "#{@api_url}/state/hue") end |
#get_rgb ⇒ Object
color_commands
151 152 153 154 155 156 |
# 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 ⇒ Object
146 147 148 |
# File 'lib/nanoleaf_ruby.rb', line 146 def get_sat @requester.get(url: "#{@api_url}/state/sat") end |
#hue_down(increment = 1) ⇒ Object
86 87 88 |
# File 'lib/nanoleaf_ruby.rb', line 86 def hue_down(increment = 1) hue_increment(-increment) end |
#hue_increment(increment = 1) ⇒ Object
hue commands
76 77 78 79 80 |
# 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) ⇒ Object
82 83 84 |
# File 'lib/nanoleaf_ruby.rb', line 82 def hue_up(increment = 1) hue_increment(increment) end |
#identify ⇒ Object
flash panels
45 46 47 |
# File 'lib/nanoleaf_ruby.rb', line 45 def identify @requester.put(url: "#{@api_url}/identify") end |
#info ⇒ Object
info dump from panels
17 18 19 |
# File 'lib/nanoleaf_ruby.rb', line 17 def info @requester.get(url: @api_url) end |
#off ⇒ Object
27 28 29 30 |
# File 'lib/nanoleaf_ruby.rb', line 27 def off params = { on: false } @requester.put(url: "#{@api_url}/state", params: params) end |
#on ⇒ Object
power on/off
22 23 24 25 |
# File 'lib/nanoleaf_ruby.rb', line 22 def on params = { on: true } @requester.put(url: "#{@api_url}/state", params: params) end |
#random_effect ⇒ Object
186 187 188 |
# File 'lib/nanoleaf_ruby.rb', line 186 def random_effect choose_effect(effects_list.sample) end |
#sat_down(increment = 1) ⇒ Object
136 137 138 |
# File 'lib/nanoleaf_ruby.rb', line 136 def sat_down(increment = 1) sat_increment(-increment) end |
#sat_increment(increment = 1) ⇒ Object
saturation commands
126 127 128 129 130 |
# 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) ⇒ Object
132 133 134 |
# File 'lib/nanoleaf_ruby.rb', line 132 def sat_up(increment = 1) sat_increment(increment) end |
#set_brightness(value, duration = nil) ⇒ Object
64 65 66 67 68 69 |
# 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) ⇒ Object
158 159 160 161 |
# File 'lib/nanoleaf_ruby.rb', line 158 def set_color(string) hsb = ColorUtils.get_color(string) write_color(hsb) end |
#set_ct(value) ⇒ Object
115 116 117 118 119 |
# 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) ⇒ Object
90 91 92 93 94 |
# 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) ⇒ Object
163 164 165 166 |
# 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) ⇒ Object
140 141 142 143 144 |
# 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 ⇒ Object
32 33 34 35 36 37 |
# 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) ⇒ Object
168 169 170 171 172 173 |
# 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 |