xilight 0.1.6 → 0.1.7
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 +4 -4
- data/.ruby-version +1 -0
- data/exe/yee +53 -4
- data/lib/xilight.rb +2 -2
- data/lib/xilight/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ab05093b44f3a72e57dcfa63e649be1aa6bd5128b9eea259b2619c8accb50ba
|
4
|
+
data.tar.gz: d928c43a33666ccb9e572974e6a91594d9b9caf9ea50b05e9e6e2883f8b828a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ef46150fb68761ea29b368507cb95c74b4cd86aa110b7fb659b043fede7afa9d5b77aa59c46c913f66b138145cffce38ed0c4579ad020818762e2f8506873b7
|
7
|
+
data.tar.gz: c0ba4f986549cd8fcb8961f24d04b2331746aecf27a8094dfc4119e978cbd73030c9b22f77dcc3d798ab2fd0bd2c325ecbf11dd245973ce255ff1deb660dc725
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.0
|
data/exe/yee
CHANGED
@@ -20,6 +20,14 @@ module Xilight
|
|
20
20
|
{}
|
21
21
|
end
|
22
22
|
|
23
|
+
def self.rgb_to_hex(r,g,b)
|
24
|
+
[r,g,b].map{|x| x.to_i.to_s(16).rjust(2, '0') }.join
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.rgb_to_i(r,g,b)
|
28
|
+
rgb_to_hex(r,g,b).to_i(16)
|
29
|
+
end
|
30
|
+
|
23
31
|
def self.get_light(index, name=nil, attempt: 0)
|
24
32
|
lights = ::Xilight::CLI.config['yeelights']
|
25
33
|
light_attribs = if name && name != ''
|
@@ -27,7 +35,7 @@ module Xilight
|
|
27
35
|
else
|
28
36
|
lights[index.to_i]
|
29
37
|
end
|
30
|
-
light = ::Xilight::Yeelight.new(light_attribs.map{|k,v| [k.to_sym, v]}.to_h)
|
38
|
+
light = ::Xilight::Yeelight.new(**light_attribs.map{|k,v| [k.to_sym, v]}.to_h)
|
31
39
|
unless light.available?
|
32
40
|
self.discover
|
33
41
|
get_light(index, name, attempt: 1) if attempt.zero?
|
@@ -108,8 +116,7 @@ module Xilight
|
|
108
116
|
|
109
117
|
def call(r:, g:, b:, light: 0, name: nil, **)
|
110
118
|
light =::Xilight::CLI.get_light(light, name)
|
111
|
-
|
112
|
-
light.rgb = as_hex.to_i(16)
|
119
|
+
light.rgb = ::Xilight::CLI.rgb_to_i(r,g,b)
|
113
120
|
end
|
114
121
|
end
|
115
122
|
|
@@ -145,7 +152,6 @@ module Xilight
|
|
145
152
|
]
|
146
153
|
|
147
154
|
def call(brightness:, light: 0, name: nil, **)
|
148
|
-
binding.pry
|
149
155
|
light =::Xilight::CLI.get_light(light, name)
|
150
156
|
light.bright = brightness.to_i
|
151
157
|
end
|
@@ -219,6 +225,44 @@ module Xilight
|
|
219
225
|
end
|
220
226
|
end
|
221
227
|
|
228
|
+
module ColorFlow
|
229
|
+
class On < Dry::CLI::Command
|
230
|
+
desc "Start ColorFlow"
|
231
|
+
option :light, desc: "ID/index of Yeelight to target", default: "0", aliases: ["-l"]
|
232
|
+
option :name, desc: "Name of Yeelight to target", default: nil, aliases: ["-n"]
|
233
|
+
|
234
|
+
example [
|
235
|
+
"on # start color flow on default/first light",
|
236
|
+
"on -n kitchen # start color flow on light with name 'kitchen'",
|
237
|
+
"on -l 3 # start color flow on light #3"
|
238
|
+
]
|
239
|
+
def call(light: 0, name: nil, **)
|
240
|
+
light =::Xilight::CLI.get_light(light, name)
|
241
|
+
flow_expression = COLORS.values.first(12).each_slice(2).map(&:first).map do |(r,g,b)|
|
242
|
+
"1000,2,#{::Xilight::CLI.rgb_to_i(r,g,b)},100"
|
243
|
+
end.join(',')
|
244
|
+
light.start_cf(0, 1, flow_expression)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
class Off < Dry::CLI::Command
|
249
|
+
desc "Stop ColorFlow"
|
250
|
+
option :light, desc: "ID/index of Yeelight to target", default: "0", aliases: ["-l"]
|
251
|
+
option :name, desc: "Name of Yeelight to target", default: nil, aliases: ["-n"]
|
252
|
+
|
253
|
+
example [
|
254
|
+
"off # start color flow on default/first light",
|
255
|
+
"off -n kitchen # start color flow on light with name 'kitchen'",
|
256
|
+
"off -l 3 # start color flow on light #3"
|
257
|
+
]
|
258
|
+
|
259
|
+
def call(light: 0, name: nil, **)
|
260
|
+
light =::Xilight::CLI.get_light(light, name)
|
261
|
+
light.power = 'off'
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
222
266
|
COLORS = {
|
223
267
|
red: [255, 0, 0],
|
224
268
|
orange: [255, 128, 0],
|
@@ -262,6 +306,11 @@ module Xilight
|
|
262
306
|
end
|
263
307
|
end
|
264
308
|
|
309
|
+
register "color_flow", aliases: ["cf"] do |prefix|
|
310
|
+
prefix.register "on", ColorFlow::On, aliases: ["o"]
|
311
|
+
prefix.register "off", ColorFlow::Off, aliases: ["x"]
|
312
|
+
end
|
313
|
+
|
265
314
|
register "version", Version, aliases: ["v", "-v", "--version"]
|
266
315
|
register "discover", Discover, aliases: ["d"]
|
267
316
|
register "rgb", Rgb
|
data/lib/xilight.rb
CHANGED
@@ -126,8 +126,8 @@ module Xilight
|
|
126
126
|
# This method is used to start a color flow. Color flow is a series of smart
|
127
127
|
# LED visible state changes. It can be either brightness changing, color changing
|
128
128
|
# or color temperature changing
|
129
|
-
def start_cf(count, action, flow_expression)
|
130
|
-
request({id: 9,method: '
|
129
|
+
def start_cf(count=0, action=1, flow_expression="1000,2,2700,100,500,1,255,10,5000,7,0,0,500,2,5000,1")
|
130
|
+
request({id: 9, method: 'start_cf', params: [count,action,flow_expression]})
|
131
131
|
end
|
132
132
|
|
133
133
|
# This method is used to stop a running color flow.
|
data/lib/xilight/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xilight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wouter Coppieters
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-cli
|
@@ -89,6 +89,7 @@ extensions: []
|
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
91
|
- ".gitignore"
|
92
|
+
- ".ruby-version"
|
92
93
|
- CODE_OF_CONDUCT.md
|
93
94
|
- Gemfile
|
94
95
|
- README.md
|
@@ -117,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
118
|
- !ruby/object:Gem::Version
|
118
119
|
version: '0'
|
119
120
|
requirements: []
|
120
|
-
rubygems_version: 3.1.
|
121
|
+
rubygems_version: 3.1.2
|
121
122
|
signing_key:
|
122
123
|
specification_version: 4
|
123
124
|
summary: Ruby Xiaomi Yeelight gem
|