Class: LEDENET::Api
- Inherits:
-
Object
- Object
- LEDENET::Api
- Defined in:
- lib/ledenet/api.rb
Constant Summary collapse
- DEFAULT_OPTIONS =
{ reuse_connection: false, max_retries: 3, port: 5577 }
Instance Method Summary collapse
- #current_color_data ⇒ Object
- #current_rgb ⇒ Object
- #current_warm_white ⇒ Object
-
#initialize(device_address, options = {}) ⇒ Api
constructor
A new instance of Api.
- #off ⇒ Object
- #on ⇒ Object
- #on? ⇒ Boolean
- #reconnect! ⇒ Object
- #send_packet(packet) ⇒ Object
- #set_power(v) ⇒ Object
- #update_color_data(o) ⇒ Object
- #update_function(fn, speed) ⇒ Object
- #update_rgb(r, g, b) ⇒ Object
- #update_warm_white(warm_white) ⇒ Object
Constructor Details
#initialize(device_address, options = {}) ⇒ Api
Returns a new instance of Api.
14 15 16 17 |
# File 'lib/ledenet/api.rb', line 14 def initialize(device_address, = {}) @device_address = device_address = DEFAULT_OPTIONS.merge() end |
Instance Method Details
#current_color_data ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/ledenet/api.rb', line 56 def current_color_data status_response = status color_data = %w{red green blue warm_white}.map do |x| [x.to_sym, status_response.send(x)] end Hash[color_data] end |
#current_rgb ⇒ Object
48 49 50 |
# File 'lib/ledenet/api.rb', line 48 def current_rgb current_color_data.values_at(:red, :green, :blue) end |
#current_warm_white ⇒ Object
52 53 54 |
# File 'lib/ledenet/api.rb', line 52 def current_warm_white current_color_data[:warm_white] end |
#off ⇒ Object
23 24 25 |
# File 'lib/ledenet/api.rb', line 23 def off send_packet(LEDENET::Packets::SetPowerRequest.off_request) end |
#on ⇒ Object
19 20 21 |
# File 'lib/ledenet/api.rb', line 19 def on send_packet(LEDENET::Packets::SetPowerRequest.on_request) end |
#on? ⇒ Boolean
31 32 33 |
# File 'lib/ledenet/api.rb', line 31 def on? status.on? end |
#reconnect! ⇒ Object
72 73 74 75 |
# File 'lib/ledenet/api.rb', line 72 def reconnect! create_socket true end |
#send_packet(packet) ⇒ Object
77 78 79 80 81 82 83 84 85 |
# File 'lib/ledenet/api.rb', line 77 def send_packet(packet) socket_action do @socket.write(packet.to_binary_s) if packet.response_reader != LEDENET::Packets::EmptyResponse packet.response_reader.read(@socket) end end end |
#set_power(v) ⇒ Object
27 28 29 |
# File 'lib/ledenet/api.rb', line 27 def set_power(v) v ? on : off end |
#update_color_data(o) ⇒ Object
43 44 45 46 |
# File 'lib/ledenet/api.rb', line 43 def update_color_data(o) updated_data = current_color_data.merge(o) send_packet(LEDENET::Packets::UpdateColorRequest.new(updated_data)) end |
#update_function(fn, speed) ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/ledenet/api.rb', line 64 def update_function(fn, speed) if fn.is_a?(String) or fn.is_a?(Symbol) fn = LEDENET::Functions.const_get(fn.upcase) end send_packet(LEDENET::Packets::SetFunctionRequest.new(function_id: fn, speed: speed)) end |
#update_rgb(r, g, b) ⇒ Object
35 36 37 |
# File 'lib/ledenet/api.rb', line 35 def update_rgb(r, g, b) update_color_data(red: r, green: g, blue: b) end |
#update_warm_white(warm_white) ⇒ Object
39 40 41 |
# File 'lib/ledenet/api.rb', line 39 def update_warm_white(warm_white) update_color_data(warm_white: warm_white) end |