ledenet_api 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 87668efdb9907a70ca5403fcc5e775b49cca8281
4
- data.tar.gz: c28f029d20bd5db8a8ed7b082543a2e3c2084acc
3
+ metadata.gz: 4d5893787aba1976347d33316a6d873779732c6b
4
+ data.tar.gz: 8f2a3d6d7572646fd0fdbef5d8e36897ffdac4b7
5
5
  SHA512:
6
- metadata.gz: d3f3a4daf29ed9ff6f3e15aeb79e77b4359be4de13c3e574880ec9667ba58eabbd7eaea198ceb213441365aa32de14135c4456aebc9def39b89701ff355b6d05
7
- data.tar.gz: 91405ab30ed0358a49348f88252c9f2ab73641562db985b6050c87998111dd1529d9e585af84e892a8d7ccbe1d73a54cbf03f63b124847fef1f19fd38967f6da
6
+ metadata.gz: 28b67ca59bcfa3a42fef42f3b10d55cdd075c745d743b65fc251c24dc5c92aea9e15f3b4ea774f72cb70fa56ffa9e019f2471b59d001e4fd0516b80e589d033c
7
+ data.tar.gz: 879814ec02173f453df70b69bd3262609b45c04f4e3d3cfbcbb25ca83095774c923302068403721ef7d3f7c9266bde95093552c6e295cd80b50eb5465be89dfe
data/README.md CHANGED
@@ -34,6 +34,13 @@ devices.first.ip
34
34
  => "10.133.8.113"
35
35
  ```
36
36
 
37
+ By deafult, `discover_devices` waits for up to 5 seconds for a single device to respond, and returns immediately after finding one. To change this behavior:
38
+
39
+ ```ruby
40
+ irb(main):005:0> LEDENET.discover_devices(expected_devices: 2, timeout: 1)
41
+ => [#<LEDENET::Device:0x007fff328f4330 @ip="10.133.8.113", @hw_addr="XXXXXXXXXXXX", @model="HF-LPB100-ZJ200">]
42
+ ```
43
+
37
44
  ### API
38
45
 
39
46
  To construct an API class, use the following:
@@ -56,7 +63,7 @@ api = LEDENET::Api.new('10.133.8.113', reuse_connection: true, max_retries: 0)
56
63
 
57
64
  ### Status
58
65
 
59
- To check if the controller is current on:
66
+ To check if the controller is currently on:
60
67
 
61
68
  ```ruby
62
69
  api.on?
@@ -84,7 +91,7 @@ api.current_color
84
91
  To set the color:
85
92
 
86
93
  ```ruby
87
- irb(main):016:0> api.update_color(255, 0, 255)
94
+ api.update_color(255, 0, 255)
88
95
  => true
89
96
  ```
90
97
 
@@ -1,5 +1,6 @@
1
1
  require 'socket'
2
2
  require 'timeout'
3
+ require 'set'
3
4
 
4
5
  module LEDENET
5
6
  class Device
@@ -16,7 +17,8 @@ module LEDENET
16
17
 
17
18
  DEFAULT_OPTIONS = {
18
19
  expected_devices: 1,
19
- timeout: 5
20
+ timeout: 5,
21
+ expected_models: []
20
22
  }
21
23
 
22
24
  # The WiFi controllers these things appear to use support a discovery protocol
@@ -35,14 +37,18 @@ module LEDENET
35
37
  send_socket.send('HF-A11ASSISTHREAD', 0, send_addr[0], send_addr[1])
36
38
 
37
39
  discovered_devices = []
40
+ discovered_models = Set.new
41
+ expected_models = Set.new(options[:expected_models])
38
42
 
39
43
  begin
40
44
  Timeout::timeout(options[:timeout]) do
41
- while true
45
+ while discovered_devices.count < options[:expected_devices] or
46
+ !expected_models.subset?(discovered_models)
42
47
  data = send_socket.recv(1024)
43
- discovered_devices.push(LEDENET::Device.new(data))
44
48
 
45
- raise Timeout::Error if discovered_devices.count >= options[:expected_devices]
49
+ device = LEDENET::Device.new(data)
50
+ discovered_devices.push(device)
51
+ discovered_models.add(device.model)
46
52
  end
47
53
  end
48
54
  rescue Timeout::Error
@@ -53,4 +59,4 @@ module LEDENET
53
59
 
54
60
  discovered_devices
55
61
  end
56
- end
62
+ end
@@ -1,3 +1,3 @@
1
1
  module LEDENET
2
- VERSION = '0.1.8'
2
+ VERSION = '0.1.9'
3
3
  end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ledenet_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Mullins
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-17 00:00:00.000000000 Z
11
+ date: 2016-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.10'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description:
@@ -59,7 +59,7 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
62
+ - ".gitignore"
63
63
  - Gemfile
64
64
  - Gemfile.lock
65
65
  - LICENSE.txt
@@ -80,17 +80,17 @@ require_paths:
80
80
  - lib
81
81
  required_ruby_version: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - '>='
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  required_rubygems_version: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  requirements: []
92
92
  rubyforge_project:
93
- rubygems_version: 2.4.8
93
+ rubygems_version: 2.5.1
94
94
  signing_key:
95
95
  specification_version: 4
96
96
  summary: An API for the LEDENET Magic UFO LED WiFi Controller