lights 0.8.13 → 0.8.14
Sign up to get free protection for your applications and to get access to all the features.
- 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
|