lights 0.8.18 → 0.8.19

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTUwNmZjMWQ4MzMyMjA2ODU1ZmJhMTVmNGY5ODJiNWFjZTU5ZjgyMQ==
4
+ MjUyYjgwZTU5M2I1ZjhhMDNhYjQyN2ZiYmU1NmZjMGUxNjNlZjE0MQ==
5
5
  data.tar.gz: !binary |-
6
- MGQxNTExYWM5NjI1MzRlMzZlOGI1OTVlNjM2Y2YyNjlmOTEwMTFhMA==
6
+ MmY0YzRlMWQ3OTE0NjczYjk4NDhkN2E4YWE1NDI5OGMyNDBlNzA1Mg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZDg4MGE0MmIwNjdhNzljZmFjNmI2YWQ3ZTAyNTRkZDExYzg4MTZkZmY4N2Fi
10
- Y2ZlYWQ1Yjk4NmYzZDFiM2NlOGQzNDQ5MDgzYzE2NmM3OTE4MzAxMDQwZmZl
11
- N2I1N2M5NjA1YWY2MWM2MzQ0ZDFlNjFmNzM0MWNmZDhlMTY2ZTc=
9
+ MWM3ODk4ZDUyZGI1MWMyZGUyMWI3MjE0NTVmZGIzYjA1ZmJiODg2ZTc2NjZh
10
+ NWZiNzFkNzg4Njk1Nzk1YTBhYmI5MzQ2NjQ5NjQ5YzEwODhhNzEwZjM4ODJi
11
+ MDkwNjQ4ZjQwMWY2NTkyMzI2YTI5MjlhNjYyN2Y2ZDMyNWQzNmE=
12
12
  data.tar.gz: !binary |-
13
- Y2Q2OWVkMDI3ODAzMjI5NjUwYTI3MjU2YjY0MjY0NTE5YzEzNWE0MmZhODBj
14
- NDcwODRhYTc2MDQ3OWI3YzM4MWQ3ZTkyY2Q3ZDE1Y2ViODhiYjU2ZGM4MmQx
15
- OGE5NWU5N2Q2ZTFiNzE2MDNjNDAyMjgxYjljODUxMmQzMGNmNDA=
13
+ ZjNkZThjYTg1YjBiOTQ2OWNmYTY5OTQyOTk2OGM4Mzg1M2YwZGUxNDkyYTdk
14
+ OTNmYWIyNGJlZmVlY2NkZDBlMWVmYWY5ZGFhNTA1ODc0OTBmNzI2MTRiOGM5
15
+ MDRmNTMzNWMxYmRhODMxYTBkYTg5OGQxMjM3MWFkMTNkZjk4OGI=
@@ -4,7 +4,6 @@ class Bridge < HObject
4
4
 
5
5
  attr_reader :id, :ip, :name, :mac
6
6
  def initialize(data = {})
7
- super
8
7
  @id = data["id"]
9
8
  @ip = data["internalipaddress"]
10
9
  @mac = data["macaddress"]
@@ -2,22 +2,29 @@ require 'lights/bulbstate'
2
2
  require 'lights/hobject'
3
3
 
4
4
  class Bulb < HObject
5
- attr_reader :id, :name, :type, :swversion, :state
5
+ attr_reader :id, :name, :type, :sw_version, :state,
6
+ :point_symbol, :model_id, :unique_id
7
+ attr_writer :name, :state
6
8
  def initialize(id,data = {})
7
- super(data)
8
9
  @id = id
9
10
  @name = data["name"]
10
11
  @type = data["type"]
11
- @swversion = data["swversion"]
12
+ @sw_version = data["swversion"]
13
+ @point_symbol = data["pointsymbol"]
14
+ @model_id = data["modelid"]
15
+ @unique_id = data["uniqueid"]
12
16
  @state = BulbState.new data["state"]
13
17
  end
14
18
 
15
19
  def data
16
- data = @data
20
+ data = {}
17
21
  data["name"] = @name if @name
18
22
  data["type"] = @type if @type
19
- data["swversion"] = @swversion if @swversion
20
- data["state"] = @state.data if !@state.data.empty?
23
+ data["swversion"] = @sw_version if @sw_version
24
+ data["state"] = @state.data unless @state.data.empty?
25
+ data["pointsymbol"] = @point_symbol if @point_symbol
26
+ data["modelid"] = @model_id if @model_id
27
+ data["uniqueid"] = @unique_id if @unique_id
21
28
  data
22
29
  end
23
30
  end
@@ -45,7 +45,6 @@ class BulbState < HObject
45
45
  :reachable, :transition_time
46
46
  def initialize( data = {} )
47
47
  data = {} if data == nil
48
- super
49
48
  @on = data["on"]
50
49
  set_bri data["bri"]
51
50
  set_hue data["hue"]
@@ -172,8 +171,8 @@ class BulbState < HObject
172
171
  end
173
172
 
174
173
  def data
175
- data = @data
176
- data["on"] = @on if (@on!=nil)
174
+ data = {}
175
+ data["on"] = @on unless @on.nil?
177
176
  data["bri"] = @bri if @bri
178
177
  data["hue"] = @hue if @hue
179
178
  data["sat"] = @sat if @sat
@@ -182,7 +181,7 @@ class BulbState < HObject
182
181
  data["alert"] = @alert if @alert
183
182
  data["effect"] = @effect if @effect
184
183
  data["colormode"] = @color_mode if @color_mode
185
- data["reachable"] = @reachable if @reachable
184
+ data["reachable"] = @reachable unless @reachable.nil?
186
185
  data["transitiontime"] = @transition_time if @transition_time
187
186
  data
188
187
  end
@@ -3,14 +3,13 @@ require 'lights/hobject'
3
3
  class Command < HObject
4
4
  attr_reader :address, :method, :body
5
5
  def initialize(data = {})
6
- super
7
6
  @address = data["address"]
8
7
  @body = data["body"]
9
8
  @method = data["method"]
10
9
  end
11
10
 
12
11
  def data
13
- data = @data
12
+ data = {}
14
13
  data["address"] = @address if @address
15
14
  data["body"] = @body if @body
16
15
  data["method"] = @method if @method
@@ -2,19 +2,58 @@ require 'lights/userlist'
2
2
  require 'lights/hobject'
3
3
 
4
4
  class HueConfig < HObject
5
- attr_reader :name, :swversion, :whitelist
5
+ attr_reader :name, :zigbee_channel, :mac, :dhcp,
6
+ :ip_address, :netmask, :gateway,
7
+ :proxy_address, :proxy_port, :utc,
8
+ :local_time, :time_zone, :whitelist,
9
+ :swversion, :api_version, :sw_update,
10
+ :link_button, :portal_services,
11
+ :portal_connection, :portal_state
6
12
  def initialize(data = {})
7
- super
8
13
  @name = data["name"]
9
- @swversion = data["swversion"]
14
+ @zigbee_channel = data["zigbeechannel"]
15
+ @mac = data["mac"]
16
+ @dhcp = data["dhcp"]
17
+ @ip_address = data["ipaddress"]
18
+ @netmask = data["netmask"]
19
+ @gateway = data["gateway"]
20
+ @proxy_address = data["proxyaddress"]
21
+ @proxy_port = data["proxyport"]
22
+ @utc = data["UTC"]
23
+ @local_time = data["localtime"]
24
+ @time_zone = data["timezone"]
10
25
  @whitelist = UserList.new(data["whitelist"])
26
+ @sw_version = data["swversion"]
27
+ @api_version = data["apiversion"]
28
+ @sw_update = data["swupdate"]
29
+ @link_button = data["linkbutton"]
30
+ @portal_services = data["portalservices"]
31
+ @portal_connection = data["portalconnection"]
32
+ @portal_state = data["portalstate"]
11
33
  end
12
34
 
13
35
  def data
14
- data = @data
36
+ data = {}
15
37
  data["name"] = @name if @name
16
- data["swversion"] = @swversion if @swversion
17
- data["whitelist"] = @whitelist.data if !@whitelist.data.empty?
38
+ data["zigbeechannel"] = @zigbee_channel if @zigbee_channel
39
+ data["mac"] = @mac if @mac
40
+ data["dhcp"] = @dhcp unless @dhcp.nil?
41
+ data["ipaddress"] = @ip_address if @ip_address
42
+ data["netmask"] = @netmask if @netmask
43
+ data["gateway"] = @gateway if @gateway
44
+ data["proxyaddress"] = @proxy_address if @proxy_address
45
+ data["proxyport"] = @proxy_port if @proxy_port
46
+ data["UTC"] = @utc if @utc
47
+ data["localtime"] = @local_time if @local_time
48
+ data["timezone"] = @time_zone if @time_zone
49
+ data["whitelist"] = @whitelist.data unless @whitelist.data.empty?
50
+ data["swversion"] = @sw_version if @sw_version
51
+ data["apiversion"] = @api_version if @api_version
52
+ data["swupdate"] = @sw_update unless @sw_update.nil?
53
+ data["linkbutton"] = @link_button unless @link_button.nil?
54
+ data["portalservices"] = @portal_services unless @portal_services.nil?
55
+ data["portalconnection"] = @portal_connection if @portal_connection
56
+ data["portalstate"] = @portal_state unless @portal_state.nil?
18
57
  data
19
58
  end
20
59
  end
@@ -11,7 +11,6 @@ class Datastore < HObject
11
11
  attr_reader :lights, :groups, :config, :rules,
12
12
  :scenes, :schedules, :sensors
13
13
  def initialize(data = {})
14
- super
15
14
  @lights = BulbList.new(data["lights"])
16
15
  @groups = GroupList.new(data["groups"])
17
16
  @config = HueConfig.new(data["config"])
@@ -32,7 +31,7 @@ class Datastore < HObject
32
31
  end
33
32
 
34
33
  def data
35
- data = @data
34
+ data = {}
36
35
  data["lights"] = @lights.data if !@lights.data.empty?
37
36
  data["groups"] = @groups.data if !@groups.data.empty?
38
37
  data["config"] = @config.data if !@config.data.empty?
@@ -12,7 +12,7 @@ end
12
12
 
13
13
  class BulbStateValueOutOfRangeException < Exception
14
14
  def initalize(msg = "Value out of range.")
15
- super(msg)
15
+ super
16
16
  end
17
17
  end
18
18
 
@@ -1,21 +1,22 @@
1
1
  require 'lights/hobject'
2
2
 
3
3
  class Group < HObject
4
- attr_reader :id, :data, :name, :lights, :action
4
+ attr_reader :id, :data, :name, :lights, :action, :type
5
5
  attr_writer :name, :lights, :action
6
6
  def initialize( id = nil, data = {} )
7
- super(data)
8
7
  @id = id
9
8
  @action = BulbState.new(data["action"])
10
9
  @name = data["name"]
11
10
  @lights = data["lights"]
11
+ @type = data["type"]
12
12
  end
13
13
 
14
14
  def data
15
- data = @data
15
+ data = {}
16
16
  data["name"] = @name if @name
17
17
  data["lights"] = @lights if @lights
18
- data["action"] = @action.data if @action.data != {}
18
+ data["type"] = @type if @type
19
+ data["action"] = @action.data unless @action.data.empty?
19
20
  data
20
21
  end
21
22
  end
@@ -1,6 +1,5 @@
1
1
  class HObject
2
- def initialize(data={})
3
- @data = data
2
+ def initialize(*args)
4
3
  end
5
4
 
6
5
  def to_json(options={})
@@ -9,12 +9,11 @@ class List < HObject
9
9
 
10
10
  attr_reader :list
11
11
  def initialize(data = {})
12
- super
13
12
  @list = []
14
13
  end
15
14
 
16
15
  def data
17
- data = @data
16
+ data = {}
18
17
  @list.each {|b| data[b.id] = b.data} if @list
19
18
  data
20
19
  end
@@ -1,16 +1,31 @@
1
1
  require 'lights/hobject'
2
2
 
3
3
  class Rule < HObject
4
- attr_reader :id, :data, :name
4
+ attr_reader :id, :name, :owner, :created,
5
+ :last_triggered, :times_triggered,
6
+ :status, :conditions, :actions
5
7
  def initialize( id = nil, data = {} )
6
- super(data)
7
8
  @id = id
8
9
  @name = data["name"]
10
+ @owner = data["owner"]
11
+ @created = data["created"]
12
+ @last_triggered = data["lasttriggered"]
13
+ @times_triggered = data["timestriggered"]
14
+ @status = data["status"]
15
+ @conditions = data["conditions"]
16
+ @actions = data["actions"]
9
17
  end
10
18
 
11
19
  def data
12
- data = @data
20
+ data = {}
13
21
  data["name"] = @name if @name
22
+ data["owner"] = @owner if @owner
23
+ data["created"] = @created if @created
24
+ data["lasttriggered"] = @last_triggered if @last_triggered
25
+ data["timestriggered"] = @times_triggered if @times_triggered
26
+ data["status"] = @status if @status
27
+ data["conditions"] = @conditions if @conditions
28
+ data["actions"] = @actions if @actions
14
29
  data
15
30
  end
16
31
  end
@@ -3,7 +3,6 @@ require 'lights/hobject'
3
3
  class Scene < HObject
4
4
  attr_accessor :id, :name, :active, :lights
5
5
  def initialize(id,data = {})
6
- super(data)
7
6
  @id = id
8
7
  @name = data["name"]
9
8
  @active = data["active"]
@@ -13,7 +12,7 @@ class Scene < HObject
13
12
  def data
14
13
  data = {}
15
14
  data["name"] = @name if @name
16
- data["active"] = @active if @active
15
+ data["active"] = @active unless @active.nil?
17
16
  data["lights"] = @lights if @lights
18
17
  data
19
18
  end
@@ -2,13 +2,17 @@ require 'lights/command'
2
2
  require 'lights/hobject'
3
3
 
4
4
  class Schedule < HObject
5
- attr_reader :id, :name, :time, :status
5
+ attr_reader :id, :name, :time, :status,
6
+ :description, :local_time,
7
+ :created, :command
6
8
  def initialize(id,data = {})
7
- super(data)
8
9
  @id = id
9
10
  @name = data["name"]
10
11
  @time = data["time"]
11
12
  @status = data["status"]
13
+ @description = data["description"]
14
+ @local_time = data["localtime"]
15
+ @created = data["created"]
12
16
  @command = Command.new(data["command"])
13
17
  end
14
18
 
@@ -17,11 +21,14 @@ class Schedule < HObject
17
21
  end
18
22
 
19
23
  def data
20
- data = @data
24
+ data = {}
21
25
  data["name"] = @name if @name
22
26
  data["time"] = @time if @time
23
27
  data["status"] = @status if @status
24
- data["command"] = @command.data if !@command.data.empty?
28
+ data["description"] = @description if @description
29
+ data["localtime"] = @local_time if @local_time
30
+ data["created"] = @created if @created
31
+ data["command"] = @command.data unless @command.data.empty?
25
32
  data
26
33
  end
27
34
  end
@@ -1,35 +1,25 @@
1
1
  class SensorState < HObject
2
2
  attr_reader :last_updated
3
3
  def initialize(data)
4
- super
5
4
  @last_updated = data["lastupdated"]
5
+ @daylight = data["daylight"]
6
+ @button_event = data["buttonevent"]
6
7
  end
7
8
 
8
9
  def data
9
- data = @data
10
+ data = {}
10
11
  data["lastupdated"] = @last_updated if @last_updated
11
- data
12
- end
13
- end
14
-
15
- class TapState < SensorState
16
- attr_reader :button_event
17
- def initialize(data)
18
- super
19
- @button_event = data["button_event"]
20
- end
21
-
22
- def data
23
- data = @data
24
- data["button_event"] = @button_event if @button_event
12
+ data["daylight"] = @daylight unless @daylight.nil?
13
+ data["buttonevent"] = @button_event if @button_event
25
14
  data
26
15
  end
27
16
  end
28
17
 
29
18
  class Sensor < HObject
30
- attr_reader :id, :data, :name, :type, :model_id, :manufacturer_name, :unique_id, :sw_version, :state
19
+ attr_reader :id, :data, :name, :type, :model_id,
20
+ :manufacturer_name, :unique_id,
21
+ :sw_version, :state
31
22
  def initialize( id, data = {} )
32
- super(data)
33
23
  @id = id
34
24
  @name = data["name"]
35
25
  @type = data["type"]
@@ -37,19 +27,20 @@ class Sensor < HObject
37
27
  @manufacturer_name = data["manufacturername"]
38
28
  @unique_id = data["uniqueid"]
39
29
  @sw_version = data["swversion"]
30
+ @config = data["config"]
40
31
  @state = SensorState.new(data["state"])
41
- #@config = SensorConfig.new(data["config"])
42
32
  end
43
33
 
44
34
  def data
45
- data = @data
35
+ data = {}
46
36
  data["name"] = @name if @name
47
37
  data["type"] = @type if @type
48
38
  data["modelid"] = @model_id if @model_id
49
39
  data["manufacturername"] = @manufacturer_name if @manufacturer_name
50
40
  data["uniqueid"] = @unique_id if @unique_id
51
41
  data["swversion"] = @sw_version if @sw_version
52
- data["state"] = @state.data if @state.data if !@state.data.empty?
42
+ data["config"] = @config if @config
43
+ data["state"] = @state.data unless @state.data.empty?
53
44
  data
54
45
  end
55
46
  end
@@ -3,7 +3,6 @@ require 'lights/hobject'
3
3
  class User < HObject
4
4
  attr_reader :id, :name, :create_date, :last_use_date
5
5
  def initialize( id, data = {} )
6
- super(data)
7
6
  @id = id
8
7
  @name = data["name"]
9
8
  @create_date = data["create date"]
@@ -11,7 +10,7 @@ class User < HObject
11
10
  end
12
11
 
13
12
  def data
14
- data = @data
13
+ data = {}
15
14
  data["name"] = @name if @name
16
15
  data["create date"] = @create_date if @create_date
17
16
  data["last use date"] = @last_use_date if @last_use_date
@@ -1,3 +1,3 @@
1
1
  module LightsConst
2
- VERSION = "0.8.18"
2
+ VERSION = "0.8.19"
3
3
  end
@@ -7,6 +7,13 @@ describe Bulb do
7
7
  bulb.name.should eql "test name"
8
8
  end
9
9
 
10
+ it "properly set name parameter" do
11
+ data = { "name" => "test name" }
12
+ bulb = Bulb.new(1,data)
13
+ bulb.name = "new test name"
14
+ bulb.name.should eql "new test name"
15
+ end
16
+
10
17
  it "properly creates state object" do
11
18
  data = {
12
19
  "name" => "test name",
@@ -2,15 +2,45 @@ require 'lights'
2
2
 
3
3
  describe Datastore do
4
4
  it "properly reconstructs sub objects" do
5
+ data = JSON.parse(DATASTORE_JSON)
6
+ ds = Datastore.new data
7
+ ds.data.should eql data
8
+ end
9
+
10
+ it "properly reconstructs light objects" do
5
11
  data = JSON.parse(DATASTORE_JSON)
6
12
  ds = Datastore.new data
7
13
  ds.lights.data.should eql data["lights"]
14
+ end
15
+ it "properly reconstructs group objects" do
16
+ data = JSON.parse(DATASTORE_JSON)
17
+ ds = Datastore.new data
8
18
  ds.groups.data.should eql data["groups"]
19
+ end
20
+ it "properly reconstructs rule objects" do
21
+ data = JSON.parse(DATASTORE_JSON)
22
+ ds = Datastore.new data
9
23
  ds.rules.data.should eql data["rules"]
24
+ end
25
+ it "properly reconstructs scene objects" do
26
+ data = JSON.parse(DATASTORE_JSON)
27
+ ds = Datastore.new data
10
28
  ds.scenes.data.should eql data["scenes"]
29
+ end
30
+ it "properly reconstructs schedule objects" do
31
+ data = JSON.parse(DATASTORE_JSON)
32
+ ds = Datastore.new data
11
33
  ds.schedules.data.should eql data["schedules"]
34
+ end
35
+ it "properly reconstructs sensor objects" do
36
+ data = JSON.parse(DATASTORE_JSON)
37
+ ds = Datastore.new data
12
38
  ds.sensors.data.should eql data["sensors"]
13
- ds.data.should eql data
39
+ end
40
+ it "properly reconstructs config object" do
41
+ data = JSON.parse(DATASTORE_JSON)
42
+ ds = Datastore.new data
43
+ ds.config.data.should eql data["config"]
14
44
  end
15
45
  end
16
46
 
@@ -19,7 +49,7 @@ DATASTORE_JSON = %Q{
19
49
  "lights": {
20
50
  "1": {
21
51
  "state": {
22
- "on": true,
52
+ "on": false,
23
53
  "bri": 254,
24
54
  "hue": 34495,
25
55
  "sat": 232,
@@ -31,7 +61,7 @@ DATASTORE_JSON = %Q{
31
61
  "ct": 155,
32
62
  "alert": "none",
33
63
  "colormode": "xy",
34
- "reachable": true
64
+ "reachable": false
35
65
  },
36
66
  "type": "Extended color light",
37
67
  "name": "Hue Lamp 1",
@@ -227,7 +257,7 @@ DATASTORE_JSON = %Q{
227
257
  "name": "Philips hue",
228
258
  "zigbeechannel": 25,
229
259
  "mac": "00:11:22:33:44:55",
230
- "dhcp": true,
260
+ "dhcp": false,
231
261
  "ipaddress": "192.168.1.27",
232
262
  "netmask": "255.255.255.0",
233
263
  "gateway": "192.168.1.1",
@@ -269,7 +299,7 @@ DATASTORE_JSON = %Q{
269
299
  "notify": false
270
300
  },
271
301
  "linkbutton": false,
272
- "portalservices": true,
302
+ "portalservices": false,
273
303
  "portalconnection": "connected",
274
304
  "portalstate": {
275
305
  "signedon": true,
@@ -320,7 +350,7 @@ DATASTORE_JSON = %Q{
320
350
  "4",
321
351
  "5"
322
352
  ],
323
- "active": true
353
+ "active": false
324
354
  },
325
355
  "da01b1eaf-on-0": {
326
356
  "name": "Purple on 0",
@@ -2,22 +2,152 @@ require 'lights'
2
2
 
3
3
  describe Group do
4
4
  it "properly parses input parameters" do
5
- data = {
6
- "key1" => "value 1",
7
- "key2" => "value 2",
8
- }
5
+ data = JSON.parse(GROUPS_JSON)["1"]
9
6
  group = Group.new(1,data)
10
7
  group.id.should eql 1
11
- group.data.should eql data
8
+ group.name.should eql "Ceiling light"
9
+ group.type.should eql "LightGroup"
10
+ group.lights.should eql ["1","2","3","4"]
12
11
  end
13
12
 
14
13
  it "properly reconstucts object hash" do
15
- data = {
16
- "key1" => "value 1",
17
- "key2" => "value 2",
18
- }
14
+ data = JSON.parse(GROUPS_JSON)["1"]
19
15
  group = Group.new(1,data)
20
16
  group.id.should eql 1
21
17
  group.data.should eql data
22
18
  end
23
19
  end
20
+
21
+ GROUPS_JSON = %Q{
22
+ {
23
+ "1": {
24
+ "name": "Ceiling light",
25
+ "lights": [
26
+ "1",
27
+ "2",
28
+ "3",
29
+ "4"
30
+ ],
31
+ "type": "LightGroup",
32
+ "action": {
33
+ "on": true,
34
+ "bri": 254,
35
+ "hue": 56100,
36
+ "sat": 232,
37
+ "effect": "none",
38
+ "xy": [
39
+ 0.4119,
40
+ 0.1949
41
+ ],
42
+ "ct": 293,
43
+ "colormode": "xy"
44
+ }
45
+ },
46
+ "2": {
47
+ "name": "Lamp",
48
+ "lights": [
49
+ "5"
50
+ ],
51
+ "type": "LightGroup",
52
+ "action": {
53
+ "on": true,
54
+ "bri": 254,
55
+ "hue": 56100,
56
+ "sat": 232,
57
+ "effect": "none",
58
+ "xy": [
59
+ 0.4119,
60
+ 0.1949
61
+ ],
62
+ "ct": 293,
63
+ "colormode": "xy"
64
+ }
65
+ },
66
+ "3": {
67
+ "name": "HueCraft_Ambiance1",
68
+ "lights": [
69
+ "1",
70
+ "2"
71
+ ],
72
+ "type": "LightGroup",
73
+ "action": {
74
+ "on": true,
75
+ "bri": 254,
76
+ "hue": 56100,
77
+ "sat": 232,
78
+ "effect": "none",
79
+ "xy": [
80
+ 0.4119,
81
+ 0.1949
82
+ ],
83
+ "ct": 293,
84
+ "colormode": "xy"
85
+ }
86
+ },
87
+ "4": {
88
+ "name": "HueCraft_Ambiance2",
89
+ "lights": [
90
+ "3",
91
+ "4"
92
+ ],
93
+ "type": "LightGroup",
94
+ "action": {
95
+ "on": true,
96
+ "bri": 254,
97
+ "hue": 56100,
98
+ "sat": 232,
99
+ "effect": "none",
100
+ "xy": [
101
+ 0.4119,
102
+ 0.1949
103
+ ],
104
+ "ct": 293,
105
+ "colormode": "xy"
106
+ }
107
+ },
108
+ "5": {
109
+ "name": "HueCraft_Effect1",
110
+ "lights": [
111
+ "5"
112
+ ],
113
+ "type": "LightGroup",
114
+ "action": {
115
+ "on": true,
116
+ "bri": 254,
117
+ "hue": 56100,
118
+ "sat": 232,
119
+ "effect": "none",
120
+ "xy": [
121
+ 0.4119,
122
+ 0.1949
123
+ ],
124
+ "ct": 293,
125
+ "colormode": "xy"
126
+ }
127
+ },
128
+ "6": {
129
+ "name": "HueCraft_HueCraft",
130
+ "lights": [
131
+ "1",
132
+ "2",
133
+ "3",
134
+ "4",
135
+ "5"
136
+ ],
137
+ "type": "LightGroup",
138
+ "action": {
139
+ "on": true,
140
+ "bri": 254,
141
+ "hue": 56100,
142
+ "sat": 232,
143
+ "effect": "none",
144
+ "xy": [
145
+ 0.4119,
146
+ 0.1949
147
+ ],
148
+ "ct": 293,
149
+ "colormode": "xy"
150
+ }
151
+ }
152
+ }
153
+ }
@@ -4,8 +4,6 @@ describe Rule do
4
4
  it "properly reconstucts object hash" do
5
5
  data = {
6
6
  "name" => "test name",
7
- "key1" => "value 1",
8
- "key2" => "value 2",
9
7
  }
10
8
  rule = Rule.new(1,data)
11
9
  rule.id.should eql 1
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.18
4
+ version: 0.8.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brady Turner