lights 0.8.13 → 0.8.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +2 -1
- data/bin/lights +11 -16
- data/lib/lights/bridge.rb +4 -2
- data/lib/lights/bulb.rb +4 -10
- data/lib/lights/bulblist.rb +4 -17
- data/lib/lights/bulbstate.rb +5 -7
- data/lib/lights/command.rb +4 -7
- data/lib/lights/config.rb +3 -8
- data/lib/lights/datastore.rb +9 -13
- data/lib/lights/group.rb +5 -12
- data/lib/lights/grouplist.rb +4 -16
- data/lib/lights/hobject.rb +10 -0
- data/lib/lights/list.rb +22 -0
- data/lib/lights/rule.rb +3 -6
- data/lib/lights/rulelist.rb +4 -16
- data/lib/lights/scene.rb +3 -6
- data/lib/lights/scenelist.rb +4 -16
- data/lib/lights/schedule.rb +3 -6
- data/lib/lights/schedulelist.rb +4 -16
- data/lib/lights/sensor.rb +6 -18
- data/lib/lights/sensorlist.rb +4 -17
- data/lib/lights/user.rb +3 -6
- data/lib/lights/userlist.rb +4 -16
- data/lib/lights/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MTUxOTM1Yjg0NzgyMGJjZDYwMzI5NDFiYTMyMDc0ODUxODlhZjg4ZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjllMTc5ZDJmM2Q1MjE5NzY0ZGQ5NmZhYTk1NWNjNDY4NzcwN2U2Yg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjljMjI2Yzk4MmU2OTVlMjA4OGViMzRiOGM3NDRmNmJiMDYwYjMzNTk2NDZj
|
10
|
+
NGE2MzkzMjdjNzhkMDMzZGQ2NWMyNjRkY2FjMGQxNzhkZTY1MjhkMjFkYjg0
|
11
|
+
ZWJhOWJiMDRjN2ZjZTZkMDc1N2NkNjNlYjRjOGE0YzQ5ZmFiZDE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MGQzM2RhYmZkZmQ3NWZiNzBmOTU3YzVlNzIyZGRkYzM2MjBkNjMyNzNiZTFj
|
14
|
+
YmFlZDI4YjgwNzMwYTllMWEzYTc0M2I4MGM5ZjcxOTQ0Mjk3ZTg1MWViZmEz
|
15
|
+
NjU3M2NmMzA4ZmFhMjc3ZmQxNmYzMTVlOTg5YmU1MzA3OWJkYjM=
|
data/README.md
CHANGED
@@ -19,13 +19,14 @@ client = Lights.new( '192.168.x.x', 'username' )
|
|
19
19
|
client.register_username
|
20
20
|
client.request_bulb_list
|
21
21
|
```
|
22
|
+
See [lights-examples](https://github.com/turnerba/lights-examples) for more usage examples.
|
22
23
|
|
23
24
|
CLI Quick Setup
|
24
25
|
----
|
25
26
|
|
26
27
|
```
|
27
28
|
lights discover -s
|
28
|
-
lights config -f --user username
|
29
|
+
lights config -f --user <username>
|
29
30
|
lights register
|
30
31
|
lights list
|
31
32
|
lights on -l all
|
data/bin/lights
CHANGED
@@ -187,37 +187,37 @@ class LightsCli
|
|
187
187
|
case type
|
188
188
|
when nil, "","lights"
|
189
189
|
response = options[:new] ? hue.request_new_bulb_list : hue.request_bulb_list
|
190
|
-
|
190
|
+
objects = BulbList.new(response).list
|
191
191
|
titles = ["ID","NAME"]
|
192
192
|
methods = [:id,:name]
|
193
193
|
when "sensors"
|
194
194
|
response = options[:new] ? hue.request_new_sensor_list : hue.request_sensor_list
|
195
|
-
|
195
|
+
objects = SensorList.new(response).list
|
196
196
|
titles = ["ID","NAME"]
|
197
197
|
methods = [:id,:name]
|
198
198
|
when "groups"
|
199
199
|
response = hue.request_group_list
|
200
|
-
|
200
|
+
objects = GroupList.new(response).list
|
201
201
|
titles = ["ID","NAME","LIGHTS"]
|
202
202
|
methods = [:id,:name,:lights]
|
203
203
|
when "scenes"
|
204
204
|
response = hue.request_scene_list
|
205
|
-
|
205
|
+
objects = SceneList.new(response).list
|
206
206
|
titles = ["ID","NAME","LIGHTS"]
|
207
207
|
methods = [:id,:name,:lights]
|
208
208
|
when "users"
|
209
209
|
response = hue.request_config
|
210
|
-
response["whitelist"].
|
210
|
+
objects = UserList.new(response["whitelist"]).list
|
211
211
|
titles = ["ID","NAME","CREATE DATE","LAST USE DATE"]
|
212
212
|
methods = [:id,:name,:create_date,:last_use_date]
|
213
213
|
when "rules"
|
214
214
|
response = hue.request_rules
|
215
|
-
|
215
|
+
objects = RuleList.new(response).list
|
216
216
|
titles = ["ID","NAME"]
|
217
217
|
methods = [:id,:name]
|
218
218
|
when "schedules"
|
219
219
|
response = hue.request_schedules
|
220
|
-
|
220
|
+
objects = ScheduleList.new(response).list
|
221
221
|
titles = ["ID","NAME","TIME","SCENE","STATUS"]
|
222
222
|
methods = [:id,:name,:time,:scene,:status]
|
223
223
|
when "datastore"
|
@@ -306,10 +306,6 @@ class LightsCli
|
|
306
306
|
puts "Must specify a state to set."
|
307
307
|
bad_args = true
|
308
308
|
end
|
309
|
-
if !options[:lights] && !options[:groups]
|
310
|
-
puts "Must specify which lights/groups to control."
|
311
|
-
bad_args = true
|
312
|
-
end
|
313
309
|
if (options[:hue] || options[:saturation]) \
|
314
310
|
&& options[:ct]
|
315
311
|
puts "Cannot set both color temperature and hue/saturation."
|
@@ -357,9 +353,11 @@ class LightsCli
|
|
357
353
|
end
|
358
354
|
|
359
355
|
if options[:lights]
|
360
|
-
|
356
|
+
set_bulb_state(s,options[:lights])
|
361
357
|
elsif options[:groups]
|
362
358
|
set_group_state(s,options[:groups])
|
359
|
+
else
|
360
|
+
set_group_state(s,[0])
|
363
361
|
end
|
364
362
|
end
|
365
363
|
|
@@ -398,10 +396,7 @@ private
|
|
398
396
|
opts.on("-l", "--lights 1,2,...N", Array, "Which lights to control"){|l| options[:lights]=l}
|
399
397
|
end.parse!
|
400
398
|
|
401
|
-
if !options[:lights]
|
402
|
-
puts "Must specify which lights to control."
|
403
|
-
exit 1
|
404
|
-
end
|
399
|
+
options[:lights] = ["all"] if !options[:lights]
|
405
400
|
|
406
401
|
s = BulbState.new
|
407
402
|
s.on = is_on
|
data/lib/lights/bridge.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
1
|
+
require 'lights/hobject'
|
2
2
|
|
3
|
-
|
3
|
+
class Bridge < HObject
|
4
4
|
|
5
|
+
attr_reader :id, :ip, :name, :mac
|
5
6
|
def initialize(data = {})
|
7
|
+
super
|
6
8
|
@id = data["id"]
|
7
9
|
@ip = data["internalipaddress"]
|
8
10
|
@mac = data["macaddress"]
|
data/lib/lights/bulb.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'lights/bulbstate'
|
2
|
+
require 'lights/hobject'
|
2
3
|
|
3
|
-
class Bulb
|
4
|
-
|
5
|
-
attr_reader :id, :name, :type, :swversion,
|
6
|
-
:state
|
7
|
-
|
4
|
+
class Bulb < HObject
|
5
|
+
attr_reader :id, :name, :type, :swversion, :state
|
8
6
|
def initialize(id,data = {})
|
7
|
+
super(data)
|
9
8
|
@id = id
|
10
9
|
@name = data["name"]
|
11
10
|
@type = data["type"]
|
12
11
|
@swversion = data["swversion"]
|
13
12
|
@state = BulbState.new data["state"]
|
14
|
-
@data = data
|
15
13
|
end
|
16
14
|
|
17
15
|
def data
|
@@ -22,9 +20,5 @@ class Bulb
|
|
22
20
|
data["state"] = @state.data if !@state.data.empty?
|
23
21
|
data
|
24
22
|
end
|
25
|
-
|
26
|
-
def to_json(options={})
|
27
|
-
data.to_json
|
28
|
-
end
|
29
23
|
end
|
30
24
|
|
data/lib/lights/bulblist.rb
CHANGED
@@ -1,22 +1,9 @@
|
|
1
1
|
require 'lights/bulb'
|
2
|
+
require 'lights/list'
|
2
3
|
|
3
|
-
class BulbList
|
4
|
-
|
5
|
-
attr_reader :bulbs
|
4
|
+
class BulbList < List
|
6
5
|
def initialize(data = {})
|
7
|
-
|
8
|
-
data.each{|id,value| @
|
9
|
-
@data = data
|
10
|
-
end
|
11
|
-
|
12
|
-
def data
|
13
|
-
data = @data
|
14
|
-
@bulbs.each {|b| data[b.id] = b.data} if @bulbs
|
15
|
-
data
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_json(options={})
|
19
|
-
data.to_json
|
6
|
+
super
|
7
|
+
data.each{|id,value| @list << Bulb.new(id,value)} if data
|
20
8
|
end
|
21
9
|
end
|
22
|
-
|
data/lib/lights/bulbstate.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
require 'lights/hobject'
|
2
|
+
|
3
|
+
class BulbState < HObject
|
2
4
|
|
3
5
|
MAX_CT = 500
|
4
6
|
MIN_CT = 153
|
@@ -42,7 +44,8 @@ class BulbState
|
|
42
44
|
:alert, :effect, :color_mode,
|
43
45
|
:reachable, :transition_time
|
44
46
|
def initialize( data = {} )
|
45
|
-
data = {} if data == nil
|
47
|
+
data = {} if data == nil
|
48
|
+
super
|
46
49
|
@on = data["on"]
|
47
50
|
set_bri data["bri"]
|
48
51
|
set_hue data["hue"]
|
@@ -54,7 +57,6 @@ class BulbState
|
|
54
57
|
set_color_mode data["colormode"]
|
55
58
|
@reachable = data["reachable"]
|
56
59
|
set_transition_time data["transitiontime"]
|
57
|
-
@data = data
|
58
60
|
end
|
59
61
|
|
60
62
|
def color_mode=(value) set_color_mode(value) end
|
@@ -184,9 +186,5 @@ class BulbState
|
|
184
186
|
data["transitiontime"] = @transition_time if @transition_time
|
185
187
|
data
|
186
188
|
end
|
187
|
-
|
188
|
-
def to_json(options={})
|
189
|
-
data.to_json
|
190
|
-
end
|
191
189
|
end
|
192
190
|
|
data/lib/lights/command.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
|
1
|
+
require 'lights/hobject'
|
2
|
+
|
3
|
+
class Command < HObject
|
2
4
|
attr_reader :address, :method, :body
|
3
5
|
def initialize(data = {})
|
6
|
+
super
|
4
7
|
@address = data["address"]
|
5
8
|
@body = data["body"]
|
6
9
|
@method = data["method"]
|
7
|
-
@data = data
|
8
10
|
end
|
9
11
|
|
10
12
|
def data
|
@@ -14,10 +16,5 @@ class Command
|
|
14
16
|
data["method"] = @method if @method
|
15
17
|
data
|
16
18
|
end
|
17
|
-
|
18
|
-
def to_json(options={})
|
19
|
-
data.to_json
|
20
|
-
end
|
21
19
|
end
|
22
20
|
|
23
|
-
|
data/lib/lights/config.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
require 'lights/userlist'
|
2
|
+
require 'lights/hobject'
|
2
3
|
|
3
|
-
class HueConfig
|
4
|
-
|
4
|
+
class HueConfig < HObject
|
5
5
|
attr_reader :name, :swversion, :whitelist
|
6
|
-
|
7
6
|
def initialize(data = {})
|
7
|
+
super
|
8
8
|
@name = data["name"]
|
9
9
|
@swversion = data["swversion"]
|
10
10
|
@whitelist = UserList.new(data["whitelist"])
|
11
|
-
@data = data
|
12
11
|
end
|
13
12
|
|
14
13
|
def data
|
@@ -18,9 +17,5 @@ class HueConfig
|
|
18
17
|
data["whitelist"] = @whitelist.data if !@whitelist.data.empty?
|
19
18
|
data
|
20
19
|
end
|
21
|
-
|
22
|
-
def to_json(options={})
|
23
|
-
data.to_json
|
24
|
-
end
|
25
20
|
end
|
26
21
|
|
data/lib/lights/datastore.rb
CHANGED
@@ -5,13 +5,13 @@ require 'lights/scenelist'
|
|
5
5
|
require 'lights/rulelist'
|
6
6
|
require 'lights/schedulelist'
|
7
7
|
require 'lights/sensorlist'
|
8
|
+
require 'lights/hobject'
|
8
9
|
|
9
|
-
class Datastore
|
10
|
-
|
10
|
+
class Datastore < HObject
|
11
11
|
attr_reader :lights, :groups, :config, :rules,
|
12
12
|
:scenes, :schedules, :sensors
|
13
13
|
def initialize(data = {})
|
14
|
-
|
14
|
+
super
|
15
15
|
@lights = BulbList.new(data["lights"])
|
16
16
|
@groups = GroupList.new(data["groups"])
|
17
17
|
@config = HueConfig.new(data["config"])
|
@@ -22,13 +22,13 @@ class Datastore
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def all
|
25
|
-
@lights.
|
26
|
-
@groups.
|
25
|
+
@lights.list + \
|
26
|
+
@groups.list + \
|
27
27
|
[@config] + \
|
28
|
-
@schedules.
|
29
|
-
@scenes.
|
30
|
-
@rules.
|
31
|
-
@sensors.
|
28
|
+
@schedules.list + \
|
29
|
+
@scenes.list + \
|
30
|
+
@rules.list + \
|
31
|
+
@sensors.list
|
32
32
|
end
|
33
33
|
|
34
34
|
def data
|
@@ -42,9 +42,5 @@ class Datastore
|
|
42
42
|
data["sensors"] = @sensors.data if !@sensors.data.empty?
|
43
43
|
data
|
44
44
|
end
|
45
|
-
|
46
|
-
def to_json(options={})
|
47
|
-
data.to_json
|
48
|
-
end
|
49
45
|
end
|
50
46
|
|
data/lib/lights/group.rb
CHANGED
@@ -1,19 +1,16 @@
|
|
1
|
-
|
1
|
+
require 'lights/hobject'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
class Group < HObject
|
4
|
+
attr_reader :id, :data, :name, :lights, :action
|
5
|
+
attr_writer :name, :lights, :action
|
5
6
|
def initialize( id = nil, data = {} )
|
7
|
+
super(data)
|
6
8
|
@id = id
|
7
|
-
@data = data
|
8
9
|
@action = BulbState.new(data["action"])
|
9
10
|
@name = data["name"]
|
10
11
|
@lights = data["lights"]
|
11
12
|
end
|
12
13
|
|
13
|
-
def action
|
14
|
-
@action.data
|
15
|
-
end
|
16
|
-
|
17
14
|
def data
|
18
15
|
data = @data
|
19
16
|
data["name"] = @name if @name
|
@@ -21,8 +18,4 @@ class Group
|
|
21
18
|
data["action"] = @action.data if @action.data != {}
|
22
19
|
data
|
23
20
|
end
|
24
|
-
|
25
|
-
def to_json(options={})
|
26
|
-
data.to_json
|
27
|
-
end
|
28
21
|
end
|
data/lib/lights/grouplist.rb
CHANGED
@@ -1,22 +1,10 @@
|
|
1
1
|
require 'lights/group'
|
2
|
+
require 'lights/list'
|
2
3
|
|
3
|
-
class GroupList
|
4
|
-
|
5
|
-
attr_reader :groups
|
4
|
+
class GroupList < List
|
6
5
|
def initialize(data = {})
|
7
|
-
|
8
|
-
data.each{|id,value| @
|
9
|
-
@data = data
|
10
|
-
end
|
11
|
-
|
12
|
-
def data
|
13
|
-
data = @data
|
14
|
-
@groups.each {|g| data[g.id] = g.data} if @groups
|
15
|
-
data
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_json(options={})
|
19
|
-
data.to_json
|
6
|
+
super
|
7
|
+
data.each{|id,value| @list << Group.new(id,value)} if data
|
20
8
|
end
|
21
9
|
end
|
22
10
|
|
data/lib/lights/list.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
require 'lights/hobject'
|
4
|
+
|
5
|
+
class List < HObject
|
6
|
+
include Enumerable
|
7
|
+
extend Forwardable
|
8
|
+
def_delegators :@list, :each, :<< ,:+
|
9
|
+
|
10
|
+
attr_reader :list
|
11
|
+
def initialize(data = {})
|
12
|
+
super
|
13
|
+
@list = []
|
14
|
+
end
|
15
|
+
|
16
|
+
def data
|
17
|
+
data = @data
|
18
|
+
@list.each {|b| data[b.id] = b.data} if @list
|
19
|
+
data
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
data/lib/lights/rule.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
|
1
|
+
require 'lights/hobject'
|
2
2
|
|
3
|
+
class Rule < HObject
|
3
4
|
attr_reader :id, :data, :name
|
4
5
|
def initialize( id = nil, data = {} )
|
6
|
+
super(data)
|
5
7
|
@id = id
|
6
|
-
@data = data
|
7
8
|
@name = data["name"]
|
8
9
|
end
|
9
10
|
|
@@ -12,8 +13,4 @@ class Rule
|
|
12
13
|
data["name"] = @name if @name
|
13
14
|
data
|
14
15
|
end
|
15
|
-
|
16
|
-
def to_json(options={})
|
17
|
-
data.to_json
|
18
|
-
end
|
19
16
|
end
|
data/lib/lights/rulelist.rb
CHANGED
@@ -1,22 +1,10 @@
|
|
1
1
|
require 'lights/rule'
|
2
|
+
require 'lights/list'
|
2
3
|
|
3
|
-
class RuleList
|
4
|
-
|
5
|
-
attr_reader :rules
|
4
|
+
class RuleList < List
|
6
5
|
def initialize(data = {})
|
7
|
-
|
8
|
-
data.each{|id,value| @
|
9
|
-
@data = data
|
10
|
-
end
|
11
|
-
|
12
|
-
def data
|
13
|
-
data = @data
|
14
|
-
@rules.each {|b| data[b.id] = b.data} if @rules
|
15
|
-
data
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_json(options={})
|
19
|
-
data.to_json
|
6
|
+
super
|
7
|
+
data.each{|id,value| @list << Rule.new(id,value)} if data
|
20
8
|
end
|
21
9
|
end
|
22
10
|
|
data/lib/lights/scene.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
|
1
|
+
require 'lights/hobject'
|
2
2
|
|
3
|
+
class Scene < HObject
|
3
4
|
attr_reader :id, :name, :active, :lights
|
4
|
-
|
5
5
|
def initialize(id,data = {})
|
6
|
+
super(data)
|
6
7
|
@id = id
|
7
8
|
@name = data["name"]
|
8
9
|
@active = data["active"]
|
@@ -16,9 +17,5 @@ class Scene
|
|
16
17
|
data["lights"] = @lights if @lights
|
17
18
|
data
|
18
19
|
end
|
19
|
-
|
20
|
-
def to_json(options={})
|
21
|
-
data.to_json
|
22
|
-
end
|
23
20
|
end
|
24
21
|
|
data/lib/lights/scenelist.rb
CHANGED
@@ -1,22 +1,10 @@
|
|
1
1
|
require 'lights/scene'
|
2
|
+
require 'lights/list'
|
2
3
|
|
3
|
-
class SceneList
|
4
|
-
|
5
|
-
attr_reader :scenes
|
4
|
+
class SceneList < List
|
6
5
|
def initialize(data = {})
|
7
|
-
|
8
|
-
data.each{|id,value| @
|
9
|
-
@data = data
|
10
|
-
end
|
11
|
-
|
12
|
-
def data
|
13
|
-
data = @data
|
14
|
-
@scenes.each {|b| data[b.id] = b.data} if @scenes
|
15
|
-
data
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_json(options={})
|
19
|
-
data.to_json
|
6
|
+
super
|
7
|
+
data.each{|id,value| @list << Scene.new(id,value)} if data
|
20
8
|
end
|
21
9
|
end
|
22
10
|
|
data/lib/lights/schedule.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'lights/command'
|
2
|
+
require 'lights/hobject'
|
2
3
|
|
3
|
-
class Schedule
|
4
|
+
class Schedule < HObject
|
4
5
|
attr_reader :id, :name, :time, :status
|
5
6
|
def initialize(id,data = {})
|
7
|
+
super(data)
|
6
8
|
@id = id
|
7
9
|
@name = data["name"]
|
8
10
|
@time = data["time"]
|
9
11
|
@status = data["status"]
|
10
12
|
@command = Command.new(data["command"])
|
11
|
-
@data = data
|
12
13
|
end
|
13
14
|
|
14
15
|
def scene
|
@@ -23,9 +24,5 @@ class Schedule
|
|
23
24
|
data["command"] = @command.data if !@command.data.empty?
|
24
25
|
data
|
25
26
|
end
|
26
|
-
|
27
|
-
def to_json(options={})
|
28
|
-
data.to_json
|
29
|
-
end
|
30
27
|
end
|
31
28
|
|
data/lib/lights/schedulelist.rb
CHANGED
@@ -1,22 +1,10 @@
|
|
1
1
|
require 'lights/schedule'
|
2
|
+
require 'lights/list'
|
2
3
|
|
3
|
-
class ScheduleList
|
4
|
-
|
5
|
-
attr_reader :schedules
|
4
|
+
class ScheduleList < List
|
6
5
|
def initialize(data = {})
|
7
|
-
|
8
|
-
data.each{|id,value| @
|
9
|
-
@data = data
|
10
|
-
end
|
11
|
-
|
12
|
-
def data
|
13
|
-
data = @data
|
14
|
-
@schedules.each {|s| data[s.id] = s.data} if @schedules
|
15
|
-
data
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_json(options={})
|
19
|
-
data.to_json
|
6
|
+
super
|
7
|
+
data.each{|id,value| @list << Schedule.new(id,value)} if data
|
20
8
|
end
|
21
9
|
end
|
22
10
|
|
data/lib/lights/sensor.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
class SensorState
|
2
|
-
attr_reader :
|
1
|
+
class SensorState < HObject
|
2
|
+
attr_reader :last_updated
|
3
3
|
def initialize(data)
|
4
|
-
|
4
|
+
super
|
5
5
|
@last_updated = data["lastupdated"]
|
6
6
|
end
|
7
7
|
|
@@ -10,17 +10,13 @@ class SensorState
|
|
10
10
|
data["lastupdated"] = @last_updated if @last_updated
|
11
11
|
data
|
12
12
|
end
|
13
|
-
|
14
|
-
def to_json(options={})
|
15
|
-
data.to_json
|
16
|
-
end
|
17
13
|
end
|
18
14
|
|
19
15
|
class TapState < SensorState
|
20
16
|
attr_reader :button_event
|
21
17
|
def initialize(data)
|
22
|
-
@button_event = data["button_event"]
|
23
18
|
super
|
19
|
+
@button_event = data["button_event"]
|
24
20
|
end
|
25
21
|
|
26
22
|
def data
|
@@ -28,17 +24,13 @@ class TapState < SensorState
|
|
28
24
|
data["button_event"] = @button_event if @button_event
|
29
25
|
data
|
30
26
|
end
|
31
|
-
|
32
|
-
def to_json(options={})
|
33
|
-
data.to_json
|
34
|
-
end
|
35
27
|
end
|
36
28
|
|
37
|
-
class Sensor
|
29
|
+
class Sensor < HObject
|
38
30
|
attr_reader :id, :data, :name, :type, :model_id, :manufacturer_name, :unique_id, :sw_version, :state
|
39
31
|
def initialize( id, data = {} )
|
32
|
+
super(data)
|
40
33
|
@id = id
|
41
|
-
@data = data
|
42
34
|
@name = data["name"]
|
43
35
|
@type = data["type"]
|
44
36
|
@model_id = data["modelid"]
|
@@ -60,8 +52,4 @@ class Sensor
|
|
60
52
|
data["state"] = @state.data if @state.data if !@state.data.empty?
|
61
53
|
data
|
62
54
|
end
|
63
|
-
|
64
|
-
def to_json(options={})
|
65
|
-
data.to_json
|
66
|
-
end
|
67
55
|
end
|
data/lib/lights/sensorlist.rb
CHANGED
@@ -1,23 +1,10 @@
|
|
1
1
|
require 'lights/sensor'
|
2
|
+
require 'lights/list'
|
2
3
|
|
3
|
-
class SensorList
|
4
|
-
|
5
|
-
attr_reader :sensors
|
6
|
-
|
4
|
+
class SensorList < List
|
7
5
|
def initialize(data = {})
|
8
|
-
|
9
|
-
data.each{|id,value| @
|
10
|
-
@data = data
|
11
|
-
end
|
12
|
-
|
13
|
-
def data
|
14
|
-
data = @data
|
15
|
-
@sensors.each {|s| data[s.id] = s.data} if @sensors
|
16
|
-
data
|
17
|
-
end
|
18
|
-
|
19
|
-
def to_json(options={})
|
20
|
-
data.to_json
|
6
|
+
super
|
7
|
+
data.each{|id,value| @list << Sensor.new(id,value)} if data
|
21
8
|
end
|
22
9
|
end
|
23
10
|
|
data/lib/lights/user.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
|
1
|
+
require 'lights/hobject'
|
2
2
|
|
3
|
+
class User < HObject
|
3
4
|
attr_reader :id, :name, :create_date, :last_use_date
|
4
5
|
def initialize( id, data = {} )
|
6
|
+
super(data)
|
5
7
|
@id = id
|
6
|
-
@data = data
|
7
8
|
@name = data["name"]
|
8
9
|
@create_date = data["create date"]
|
9
10
|
@last_use_date = data["last use date"]
|
@@ -16,8 +17,4 @@ class User
|
|
16
17
|
data["last use date"] = @last_use_date if @last_use_date
|
17
18
|
data
|
18
19
|
end
|
19
|
-
|
20
|
-
def to_json(options={})
|
21
|
-
data.to_json
|
22
|
-
end
|
23
20
|
end
|
data/lib/lights/userlist.rb
CHANGED
@@ -1,22 +1,10 @@
|
|
1
1
|
require 'lights/user'
|
2
|
+
require 'lights/list'
|
2
3
|
|
3
|
-
class UserList
|
4
|
-
|
5
|
-
attr_reader :users
|
4
|
+
class UserList < List
|
6
5
|
def initialize(data = {})
|
7
|
-
|
8
|
-
data.each{|id,value| @
|
9
|
-
@data = data
|
10
|
-
end
|
11
|
-
|
12
|
-
def data
|
13
|
-
data = @data
|
14
|
-
@users.each {|u| data[u.id] = u.data} if @users
|
15
|
-
data
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_json(options={})
|
19
|
-
data.to_json
|
6
|
+
super
|
7
|
+
data.each{|id,value| @list << User.new(id,value)} if data
|
20
8
|
end
|
21
9
|
end
|
22
10
|
|
data/lib/lights/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lights
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brady Turner
|
@@ -118,6 +118,8 @@ files:
|
|
118
118
|
- lib/lights/exception.rb
|
119
119
|
- lib/lights/group.rb
|
120
120
|
- lib/lights/grouplist.rb
|
121
|
+
- lib/lights/hobject.rb
|
122
|
+
- lib/lights/list.rb
|
121
123
|
- lib/lights/loggerconfig.rb
|
122
124
|
- lib/lights/rule.rb
|
123
125
|
- lib/lights/rulelist.rb
|