ewelink 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.mdown +11 -5
- data/VERSION +1 -1
- data/lib/ewelink/api.rb +21 -28
- data/lib/ewelink/runner.rb +8 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa2540d5e8dcf125b91c086731711b772516e28466e33b2bb668bd143abb5fe7
|
4
|
+
data.tar.gz: caf1bfa5d91d0edefc143f49230b0592aafecbbb40e7e80a7d5279f5c3685e0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c09430a4c2f0a31d62c20828f8e0591cff4f808e9660ae3d309c5fd67edde27aa750ba2d864b1c2d0ad99268b32cb8b05837c407afa268a74ae4d6254aac3859
|
7
|
+
data.tar.gz: 2a5d636f6a571ece7e7cf83cac4eae90b9457212e6260b946c1172dd773e1a438e4ecdf31dee531ada59810440fa4e7a1bfa0af996c974c133e52f61a644638d
|
data/README.mdown
CHANGED
@@ -40,24 +40,30 @@ api.rf_bridge_buttons.each do |button|
|
|
40
40
|
end
|
41
41
|
```
|
42
42
|
|
43
|
-
###
|
43
|
+
### Turn switch on or off
|
44
44
|
|
45
45
|
```ruby
|
46
46
|
require 'ewelink'
|
47
47
|
|
48
48
|
api = Ewelink::Api.new(phone_number: '+687 414243', password: 'secr$t')
|
49
|
-
api.
|
50
|
-
api.
|
49
|
+
api.turn_switch!(switch[:uuid], :on)
|
50
|
+
api.turn_switch!(switch[:uuid], :off)
|
51
51
|
```
|
52
52
|
|
53
|
-
|
53
|
+
Or :
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
api.turn_switch!(switch[:uuid], true)
|
57
|
+
api.turn_switch!(switch[:uuid], false)
|
58
|
+
```
|
59
|
+
|
60
|
+
### Check if switch is on
|
54
61
|
|
55
62
|
```ruby
|
56
63
|
require 'ewelink'
|
57
64
|
|
58
65
|
api = Ewelink::Api.new(phone_number: '+687 414243', password: 'secr$t')
|
59
66
|
puts api.switch_on?(switch[:uuid])
|
60
|
-
puts api.switch_off?(switch[:uuid])
|
61
67
|
```
|
62
68
|
|
63
69
|
### Press RF bridge button
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
data/lib/ewelink/api.rb
CHANGED
@@ -77,18 +77,6 @@ module Ewelink
|
|
77
77
|
end.tap { |buttons| Ewelink.logger.debug(self.class.name) { "Found #{buttons.size} RF 433MHz bridge button(s)" } }
|
78
78
|
end
|
79
79
|
|
80
|
-
def switch_off!(uuid)
|
81
|
-
update_switch_on!(uuid, false)
|
82
|
-
end
|
83
|
-
|
84
|
-
def switch_off?(uuid)
|
85
|
-
!switch_on?(uuid)
|
86
|
-
end
|
87
|
-
|
88
|
-
def switch_on!(uuid)
|
89
|
-
update_switch_on!(uuid, true)
|
90
|
-
end
|
91
|
-
|
92
80
|
def switch_on?(uuid)
|
93
81
|
switch = find_switch!(uuid)
|
94
82
|
params = {
|
@@ -118,6 +106,27 @@ module Ewelink
|
|
118
106
|
end.tap { |switches| Ewelink.logger.debug(self.class.name) { "Found #{switches.size} switch(es)" } }
|
119
107
|
end
|
120
108
|
|
109
|
+
def turn_switch!(uuid, on)
|
110
|
+
if ['on', :on, 'true'].include?(on)
|
111
|
+
on = true
|
112
|
+
elsif ['off', :off, 'false'].include?(on)
|
113
|
+
on = false
|
114
|
+
end
|
115
|
+
switch = find_switch!(uuid)
|
116
|
+
params = {
|
117
|
+
'appid' => APP_ID,
|
118
|
+
'deviceid' => switch[:device_id],
|
119
|
+
'nonce' => nonce,
|
120
|
+
'params' => {
|
121
|
+
'switch' => on ? 'on' : 'off',
|
122
|
+
},
|
123
|
+
'ts' => Time.now.to_i,
|
124
|
+
'version' => VERSION,
|
125
|
+
}
|
126
|
+
http_request(:post, '/api/user/device/status', body: JSON.generate(params), headers: authentication_headers)
|
127
|
+
true
|
128
|
+
end
|
129
|
+
|
121
130
|
private
|
122
131
|
|
123
132
|
def authentication_headers
|
@@ -203,22 +212,6 @@ module Ewelink
|
|
203
212
|
(@mutexs[name] ||= Mutex.new).synchronize(&block)
|
204
213
|
end
|
205
214
|
|
206
|
-
def update_switch_on!(uuid, on)
|
207
|
-
switch = find_switch!(uuid)
|
208
|
-
params = {
|
209
|
-
'appid' => APP_ID,
|
210
|
-
'deviceid' => switch[:device_id],
|
211
|
-
'nonce' => nonce,
|
212
|
-
'params' => {
|
213
|
-
'switch' => on ? 'on' : 'off',
|
214
|
-
},
|
215
|
-
'ts' => Time.now.to_i,
|
216
|
-
'version' => VERSION,
|
217
|
-
}
|
218
|
-
http_request(:post, '/api/user/device/status', body: JSON.generate(params), headers: authentication_headers)
|
219
|
-
true
|
220
|
-
end
|
221
|
-
|
222
215
|
end
|
223
216
|
|
224
217
|
end
|
data/lib/ewelink/runner.rb
CHANGED
@@ -6,8 +6,8 @@ module Ewelink
|
|
6
6
|
api = Api.new(options.slice(:email, :password, :phone_number))
|
7
7
|
puts(JSON.pretty_generate(api.switches)) if options[:list_switches]
|
8
8
|
puts(JSON.pretty_generate(api.rf_bridge_buttons)) if options[:list_rf_bridge_buttons]
|
9
|
-
options[:
|
10
|
-
options[:
|
9
|
+
options[:turn_switches_on_uuids].each { |uuid| api.turn_switch!(uuid, :on) }
|
10
|
+
options[:turn_switches_off_uuids].each { |uuid| api.turn_switch!(uuid, :off) }
|
11
11
|
options[:press_rf_bridge_buttons_uuids].each { |uuid| api.press_rf_bridge_button!(uuid) }
|
12
12
|
end
|
13
13
|
|
@@ -15,7 +15,7 @@ module Ewelink
|
|
15
15
|
|
16
16
|
def options
|
17
17
|
@options ||= begin
|
18
|
-
options = { press_rf_bridge_buttons_uuids: [],
|
18
|
+
options = { press_rf_bridge_buttons_uuids: [], turn_switches_off_uuids: [], turn_switches_on_uuids: [] }
|
19
19
|
parser = OptionParser.new do |opts|
|
20
20
|
opts.banner = 'Manage eWeLink smart home devices'
|
21
21
|
opts.version = File.read(File.expand_path('../../VERSION', __dir__)).strip
|
@@ -37,11 +37,11 @@ module Ewelink
|
|
37
37
|
opts.on('--list-rf-bridge-buttons', 'List all RF 433MHz bridge buttons in JSON format') do
|
38
38
|
options[:list_rf_bridge_buttons] = true
|
39
39
|
end
|
40
|
-
opts.on('--switch-on SWITCH_UUID', '
|
41
|
-
options[:
|
40
|
+
opts.on('--turn-switch-on SWITCH_UUID', 'Turn the switch with specified UUID on') do |uuid|
|
41
|
+
options[:turn_switches_on_uuids] << uuid
|
42
42
|
end
|
43
|
-
opts.on('--switch-off SWITCH_UUID', '
|
44
|
-
options[:
|
43
|
+
opts.on('--turn-switch-off SWITCH_UUID', 'Turn the switch with specified UUID off') do |uuid|
|
44
|
+
options[:turn_switches_off_uuids] << uuid
|
45
45
|
end
|
46
46
|
opts.on('--press-rf-bridge-button BUTTON_UUID', 'Press RF 433MHz bridge button with specified UUID') do |uuid|
|
47
47
|
options[:press_rf_bridge_buttons_uuids] << uuid
|
@@ -61,7 +61,7 @@ module Ewelink
|
|
61
61
|
STDERR.puts(parser.summarize)
|
62
62
|
exit(1)
|
63
63
|
end
|
64
|
-
if [:list_switches, :list_rf_bridge_buttons, :
|
64
|
+
if [:list_switches, :list_rf_bridge_buttons, :turn_switches_on_uuids, :turn_switches_off_uuids, :press_rf_bridge_buttons_uuids].map { |action| options[action] }.all?(&:blank?)
|
65
65
|
STDERR.puts('An action must be specified (listing switches, press RF bridge button, etc.)')
|
66
66
|
STDERR.puts(parser.summarize)
|
67
67
|
exit(1)
|