lights 0.8.7 → 0.8.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/bin/lights +49 -15
- data/lib/lights/command.rb +23 -0
- data/lib/lights/schedule.rb +31 -0
- data/lib/lights/version.rb +1 -1
- data/lib/lights.rb +14 -1
- data/lights.gemspec +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTJiMjA2NzIxYTIyM2Q1NjM4NWJhY2MyNDI2OGQ4NmViOWFjMzQyZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MDA2ZjJhNTBiMzdhMGNkMGNkYzVjNDI3OWQ2Yjk0OThmNGRhODEzZg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODJkYjA0ZTdiZDYzY2Q4YjRhNzg3YmMxMjE1MTUxMTAzYmMxMTc0M2NmODhm
|
10
|
+
MTc3NTRiZDJlNmE1ZGZmOTdjYTJhNTI0NmRhNTZjN2ZmZWYzODgyNTU2MThm
|
11
|
+
NDI1YTZjZWRiMDM3ODQ5ZmNjMWU0NDJjN2ZmMWY5M2YzMTdlZTE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZmJiMWIyOTBlOWFjNzk2OGZkOTQ2ZDc4YjU2YjE0NGUxMzdkZmM1ZGUwY2Iw
|
14
|
+
MzNiMjI2ZTk0MzZmOWFjZTVkMjIyMDRhZTg0MTU4YTk3ZGQ1NGY1N2RiODU1
|
15
|
+
ZmY0MTA0M2IzY2I1NDZkOWYxODIxYmZlNjc2YjE5YTI2MzI3NGQ=
|
data/bin/lights
CHANGED
@@ -111,18 +111,23 @@ class LightsCli
|
|
111
111
|
|
112
112
|
case type
|
113
113
|
when "group"
|
114
|
-
|
115
|
-
opts.on("-i", "--id <id>", String, "Group ID to delete") do |i|
|
116
|
-
options[:id] = i
|
117
|
-
end
|
118
|
-
end.parse!
|
114
|
+
id = ARGV.shift
|
119
115
|
|
120
|
-
if !
|
116
|
+
if !id
|
121
117
|
puts "Must specify group id."
|
122
118
|
exit 1
|
123
119
|
end
|
124
120
|
|
125
|
-
hue.delete_group
|
121
|
+
hue.delete_group id
|
122
|
+
when "user"
|
123
|
+
id = ARGV.shift
|
124
|
+
|
125
|
+
if !id
|
126
|
+
puts "Must specify user id."
|
127
|
+
exit 1
|
128
|
+
end
|
129
|
+
|
130
|
+
hue.delete_user id
|
126
131
|
when nil
|
127
132
|
STDERR.puts "Must specify a type to delete."
|
128
133
|
else
|
@@ -135,41 +140,70 @@ class LightsCli
|
|
135
140
|
objects = []
|
136
141
|
titles = []
|
137
142
|
methods = []
|
138
|
-
|
143
|
+
|
144
|
+
options = {}
|
145
|
+
OptionParser.new do |opts|
|
146
|
+
opts.on("-j", "--json", "Print JSON response") do |j|
|
147
|
+
options[:json] = j
|
148
|
+
end
|
149
|
+
end.parse!
|
150
|
+
|
151
|
+
type = ARGV.shift
|
152
|
+
case type
|
153
|
+
when nil, "","lights"
|
139
154
|
response = hue.request_bulb_list
|
140
155
|
response.each{|id,value| objects << hue.request_bulb_info( id )}
|
141
156
|
titles = ["ID","NAME"]
|
142
157
|
methods = [:id,:name]
|
143
|
-
|
158
|
+
when "sensors"
|
144
159
|
response = hue.request_sensor_list
|
145
160
|
response.each { |id,value| objects << hue.request_sensor_info( id )}
|
146
161
|
titles = ["ID","NAME"]
|
147
162
|
methods = [:id,:name]
|
148
|
-
|
163
|
+
when "groups"
|
149
164
|
response = hue.request_group_list
|
150
165
|
response.each {|id,value| objects << hue.request_group_info( id )}
|
151
166
|
titles = ["ID","NAME","LIGHTS"]
|
152
167
|
methods = [:id,:name,:lights]
|
153
|
-
|
168
|
+
when "scenes"
|
154
169
|
response = hue.request_scene_list
|
155
170
|
response.each {|id,value| objects << Scene.new(id,value)}
|
156
171
|
titles = ["ID","NAME","LIGHTS"]
|
157
172
|
methods = [:id,:name,:lights]
|
158
|
-
|
173
|
+
when "users"
|
159
174
|
response = hue.request_config
|
160
175
|
response["whitelist"].each {|id,value| objects << User.new(id,value)}
|
161
176
|
titles = ["ID","NAME","CREATE DATE","LAST USE DATE"]
|
162
177
|
methods = [:id,:name,:create_date,:last_use_date]
|
163
|
-
|
178
|
+
when "rules"
|
164
179
|
response = hue.request_rules
|
165
180
|
response.each {|id,value| objects << Rule.new(id,value)}
|
166
181
|
titles = ["ID","NAME"]
|
167
182
|
methods = [:id,:name]
|
183
|
+
when "schedules"
|
184
|
+
response = hue.request_schedules
|
185
|
+
response.each {|id,value| objects << Schedule.new(id,value)}
|
186
|
+
titles = ["ID","NAME","TIME","SCENE","STATUS"]
|
187
|
+
methods = [:id,:name,:time,:scene,:status]
|
188
|
+
when "datastore"
|
189
|
+
response = hue.request_datastore
|
190
|
+
response["lights"].each {|id,value| objects << Bulb.new(id,value)}
|
191
|
+
response["groups"].each {|id,value| objects << Group.new(id,value)}
|
192
|
+
response["config"]["whitelist"].each {|id,value| objects << User.new(id,value)}
|
193
|
+
response["rules"].each {|id,value| objects << Rule.new(id,value)}
|
194
|
+
response["scenes"].each {|id,value| objects << Scene.new(id,value)}
|
195
|
+
response["schedules"].each {|id,value| objects << Schedule.new(id,value)}
|
196
|
+
titles = ["TYPE","ID","NAME"]
|
197
|
+
methods = [:class,:id,:name]
|
168
198
|
else
|
169
|
-
puts "Don't know how to list \"#{
|
199
|
+
puts "Don't know how to list \"#{type}\""
|
170
200
|
return
|
171
201
|
end
|
172
|
-
|
202
|
+
if options[:json]
|
203
|
+
jp response
|
204
|
+
else
|
205
|
+
puts SimpleTable.new.from_objects(objects,titles,methods).text
|
206
|
+
end
|
173
207
|
end
|
174
208
|
|
175
209
|
def register
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Command
|
2
|
+
attr_reader :address, :method, :body
|
3
|
+
def initialize(data = {})
|
4
|
+
@address = data["address"]
|
5
|
+
@body = data["body"]
|
6
|
+
@method = data["method"]
|
7
|
+
@data = data
|
8
|
+
end
|
9
|
+
|
10
|
+
def data
|
11
|
+
data = @data
|
12
|
+
data["address"] = @address if @address
|
13
|
+
data["body"] = @body if @body
|
14
|
+
data["method"] = @method if @method
|
15
|
+
data
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_json
|
19
|
+
data.to_json
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'lights/command'
|
2
|
+
|
3
|
+
class Schedule
|
4
|
+
attr_reader :id, :name, :time, :status
|
5
|
+
def initialize(id,data = {})
|
6
|
+
@id = id
|
7
|
+
@name = data["name"]
|
8
|
+
@time = data["time"]
|
9
|
+
@status = data["status"]
|
10
|
+
@command = Command.new(data["command"])
|
11
|
+
@data = data
|
12
|
+
end
|
13
|
+
|
14
|
+
def scene
|
15
|
+
@command.body["scene"]
|
16
|
+
end
|
17
|
+
|
18
|
+
def data
|
19
|
+
data = @data
|
20
|
+
data["name"] = @name if @name
|
21
|
+
data["time"] = @time if @time
|
22
|
+
data["status"] = @status if @status
|
23
|
+
data["command"] = @command.data if !@command.data.empty?
|
24
|
+
data
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_json
|
28
|
+
data.to_json
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
data/lib/lights/version.rb
CHANGED
data/lib/lights.rb
CHANGED
@@ -12,6 +12,7 @@ require 'lights/sensor'
|
|
12
12
|
require 'lights/scene'
|
13
13
|
require 'lights/user'
|
14
14
|
require 'lights/rule'
|
15
|
+
require 'lights/schedule'
|
15
16
|
require 'lights/loggerconfig'
|
16
17
|
|
17
18
|
def jp( s )
|
@@ -109,6 +110,14 @@ class Lights
|
|
109
110
|
get "rules"
|
110
111
|
end
|
111
112
|
|
113
|
+
def request_schedules
|
114
|
+
get "schedules"
|
115
|
+
end
|
116
|
+
|
117
|
+
def request_datastore
|
118
|
+
get ""
|
119
|
+
end
|
120
|
+
|
112
121
|
def set_bulb_state( id, state )
|
113
122
|
put "lights/#{id}/state", state
|
114
123
|
end
|
@@ -124,8 +133,12 @@ class Lights
|
|
124
133
|
def delete_group( id )
|
125
134
|
delete "groups/#{id}"
|
126
135
|
end
|
127
|
-
private
|
128
136
|
|
137
|
+
def delete_user( username )
|
138
|
+
delete "config/whitelist/#{username}"
|
139
|
+
end
|
140
|
+
|
141
|
+
private
|
129
142
|
def process_error(result)
|
130
143
|
type = result["error"]["type"]
|
131
144
|
case type
|
data/lights.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_runtime_dependency "simpletable", "~> 0.
|
22
|
+
s.add_runtime_dependency "simpletable", "~> 0.3.0"
|
23
23
|
|
24
24
|
s.add_development_dependency "bundler", "~> 1.3"
|
25
25
|
s.add_development_dependency "rake"
|
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.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brady Turner
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,11 +111,13 @@ files:
|
|
111
111
|
- lib/lights/bridge.rb
|
112
112
|
- lib/lights/bulb.rb
|
113
113
|
- lib/lights/bulbstate.rb
|
114
|
+
- lib/lights/command.rb
|
114
115
|
- lib/lights/exception.rb
|
115
116
|
- lib/lights/group.rb
|
116
117
|
- lib/lights/loggerconfig.rb
|
117
118
|
- lib/lights/rule.rb
|
118
119
|
- lib/lights/scene.rb
|
120
|
+
- lib/lights/schedule.rb
|
119
121
|
- lib/lights/sensor.rb
|
120
122
|
- lib/lights/user.rb
|
121
123
|
- lib/lights/version.rb
|