nature_remo 0.2.5 → 0.5.1
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/.travis.yml +1 -1
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +43 -0
- data/README.md +16 -3
- data/lib/nature_remo/cli.rb +65 -4
- data/lib/nature_remo/client.rb +35 -4
- data/lib/nature_remo/version.rb +1 -1
- data/nature_remo.gemspec +6 -6
- metadata +17 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca496be0b1ab840ebe82749f39a7fa179445076d085d2549bc931bbc8800094b
|
4
|
+
data.tar.gz: 9e984120722b6db2e67d9d8fd343b8f9f19a118368141830906284ab98cd0b73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92714ff39d4e2422588b99b9e2455b699aa9d26a9366fd7868bb516f58bf4c48ea7f9a125b6447e7ecb1069744d5ef2e17a949992a34a6a500fe228a4c031f9a
|
7
|
+
data.tar.gz: 3d5bf2385b0c483cd190d4f35567f185303aa7cb0c74193b06083f6581dd7b1485687f2b95522bd892d6970387608783a8e729be4eebfe1a5785cebe51543b3d
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
nature_remo (0.5.1)
|
5
|
+
faraday (~> 0.17.0)
|
6
|
+
launchy (~> 2.4.3)
|
7
|
+
thor (~> 0.20.3)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
addressable (2.7.0)
|
13
|
+
public_suffix (>= 2.0.2, < 5.0)
|
14
|
+
crack (0.4.3)
|
15
|
+
safe_yaml (~> 1.0.0)
|
16
|
+
faraday (0.17.4)
|
17
|
+
multipart-post (>= 1.2, < 3)
|
18
|
+
hashdiff (1.0.0)
|
19
|
+
launchy (2.4.3)
|
20
|
+
addressable (~> 2.3)
|
21
|
+
minitest (5.13.0)
|
22
|
+
multipart-post (2.1.1)
|
23
|
+
public_suffix (4.0.1)
|
24
|
+
rake (13.0.1)
|
25
|
+
safe_yaml (1.0.5)
|
26
|
+
thor (0.20.3)
|
27
|
+
webmock (3.7.6)
|
28
|
+
addressable (>= 2.3.6)
|
29
|
+
crack (>= 0.3.2)
|
30
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
31
|
+
|
32
|
+
PLATFORMS
|
33
|
+
ruby
|
34
|
+
|
35
|
+
DEPENDENCIES
|
36
|
+
bundler (~> 2.0.2)
|
37
|
+
minitest (~> 5.13.0)
|
38
|
+
nature_remo!
|
39
|
+
rake (~> 13.0.1)
|
40
|
+
webmock (~> 3.7.6)
|
41
|
+
|
42
|
+
BUNDLED WITH
|
43
|
+
2.0.2
|
data/README.md
CHANGED
@@ -30,7 +30,7 @@ client = NatureRemo::Client.new(<token>)
|
|
30
30
|
# show username
|
31
31
|
client.users
|
32
32
|
|
33
|
-
# get
|
33
|
+
# get temperature
|
34
34
|
client.get_temp
|
35
35
|
|
36
36
|
# show nature_remo device lists
|
@@ -41,6 +41,12 @@ client.appliances
|
|
41
41
|
|
42
42
|
# send signal
|
43
43
|
client.send_signal(<signal id>)
|
44
|
+
|
45
|
+
# send a signal at intervals
|
46
|
+
# [OPTIONAL]
|
47
|
+
# interval: How long do you want to wait to send next signal?(millisec)
|
48
|
+
# times: How many times do you want to send signals?
|
49
|
+
client.send_signal(<signal id>, interval: 500, times: 10)
|
44
50
|
```
|
45
51
|
|
46
52
|
## CLI Usage
|
@@ -51,7 +57,8 @@ client.send_signal(<signal id>)
|
|
51
57
|
natureremo devices # find all devices
|
52
58
|
natureremo help [COMMAND] # Describe available commands or one specific command
|
53
59
|
natureremo me # print nickname
|
54
|
-
natureremo temp # Get
|
60
|
+
natureremo temp # Get temperature and humidity
|
61
|
+
natureremo illu # Get illumination
|
55
62
|
|
56
63
|
### Example
|
57
64
|
|
@@ -77,7 +84,13 @@ Send signal
|
|
77
84
|
|
78
85
|
#### Control air conditioner
|
79
86
|
|
80
|
-
$ natureremo aircon [
|
87
|
+
$ natureremo aircon [temperature] [mode] [options]
|
88
|
+
|
89
|
+
$ natureremo aircon_off
|
90
|
+
$ natureremo aircon_on
|
91
|
+
|
92
|
+
$ natureremo aircon_change_temperature +1
|
93
|
+
$ natureremo aircon_change_temperature -1
|
81
94
|
|
82
95
|
<!-- ## Development -->
|
83
96
|
|
data/lib/nature_remo/cli.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require 'thor'
|
2
3
|
require 'json'
|
3
4
|
|
@@ -54,21 +55,81 @@ module NatureRemo
|
|
54
55
|
end
|
55
56
|
end
|
56
57
|
|
57
|
-
desc '
|
58
|
+
desc 'aircon_off', 'Turn off air conditioner'
|
59
|
+
def aircon_off()
|
60
|
+
aircon_id = []
|
61
|
+
appliances_body.each_with_index do |a, i|
|
62
|
+
aircon_id << get_appliance_id(i) if a['type'] == 'AC'
|
63
|
+
end
|
64
|
+
|
65
|
+
if aircon_id.length == 1
|
66
|
+
client.aircon_off aircon_id.first
|
67
|
+
else
|
68
|
+
puts 'This method supports only one air conditioner'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
desc 'aircon_on', 'Turn on air conditioner'
|
73
|
+
def aircon_on()
|
74
|
+
aircon_id = []
|
75
|
+
appliances_body.each_with_index do |a, i|
|
76
|
+
aircon_id << get_appliance_id(i) if a['type'] == 'AC'
|
77
|
+
end
|
78
|
+
|
79
|
+
if aircon_id.length == 1
|
80
|
+
client.aircon_on aircon_id.first
|
81
|
+
else
|
82
|
+
puts 'This method supports only one air conditioner'
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
desc 'aircon_change_temperature', 'Change the temperature of the air conditioner'
|
87
|
+
def aircon_change_temperature(difference)
|
88
|
+
diff = difference.to_i
|
89
|
+
return if diff == 0
|
90
|
+
|
91
|
+
aircon_id = []
|
92
|
+
appliance = nil
|
93
|
+
appliances_body.each_with_index do |a, i|
|
94
|
+
appliance = a
|
95
|
+
aircon_id << get_appliance_id(i) if a['type'] == 'AC'
|
96
|
+
end
|
97
|
+
|
98
|
+
if aircon_id.length == 1
|
99
|
+
current_temperature = appliance["settings"]["temp"].to_i
|
100
|
+
if current_temperature != 0
|
101
|
+
client.aircon_setting aircon_id.first, current_temperature + diff
|
102
|
+
|
103
|
+
puts "Temperature set to #{current_temperature + diff}"
|
104
|
+
else
|
105
|
+
puts 'Could not retrieve the air conditioner currently set temperature'
|
106
|
+
end
|
107
|
+
else
|
108
|
+
puts 'This method supports only one air conditioner'
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
desc 'temp', 'Get temperature and humidity'
|
58
113
|
def temp
|
59
114
|
value = client.events
|
60
|
-
puts "
|
115
|
+
puts "Temperature: #{value['te']['val']}℃"
|
61
116
|
puts "Humidity: #{value['hu']['val']}%"
|
62
117
|
end
|
63
118
|
|
119
|
+
desc 'illu', 'Get illumination'
|
120
|
+
def illu
|
121
|
+
value = client.events
|
122
|
+
puts "Illumination: #{value['il']['val']}"
|
123
|
+
end
|
124
|
+
|
64
125
|
private
|
65
126
|
|
66
127
|
def client
|
67
|
-
client ||= NatureRemo::Client.new
|
128
|
+
@client ||= NatureRemo::Client.new
|
68
129
|
end
|
69
130
|
|
70
131
|
def appliances_body
|
71
|
-
appliances ||= JSON.parse(client.appliances.body)
|
132
|
+
@appliances ||= JSON.parse(client.appliances.body)
|
72
133
|
end
|
73
134
|
|
74
135
|
def get_appliance_id(num)
|
data/lib/nature_remo/client.rb
CHANGED
@@ -34,10 +34,33 @@ module NatureRemo
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
def send_signal(signal)
|
37
|
+
def send_signal(signal, interval: 0, times: 1)
|
38
|
+
results = []
|
39
|
+
times.times do |time|
|
40
|
+
sleep(interval.to_f / 1000) if time != 0
|
41
|
+
results << @client.post do |req|
|
42
|
+
req.url "/1/signals/#{signal}/send"
|
43
|
+
req.body = { name: signal.to_s }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
results
|
47
|
+
end
|
48
|
+
|
49
|
+
def aircon_on(appliance)
|
50
|
+
@client.post do |req|
|
51
|
+
req.url "/1/appliances/#{appliance}/aircon_settings"
|
52
|
+
req.body = {
|
53
|
+
button: ""
|
54
|
+
}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def aircon_off(appliance)
|
38
59
|
@client.post do |req|
|
39
|
-
req.url "/1/
|
40
|
-
req.body = {
|
60
|
+
req.url "/1/appliances/#{appliance}/aircon_settings"
|
61
|
+
req.body = {
|
62
|
+
button: "power-off"
|
63
|
+
}
|
41
64
|
end
|
42
65
|
end
|
43
66
|
|
@@ -52,8 +75,12 @@ module NatureRemo
|
|
52
75
|
end
|
53
76
|
end
|
54
77
|
|
78
|
+
def remo
|
79
|
+
JSON.parse(devices.body).find { |device| device['firmware_version'].match(/Remo\/\d+\.\d+\.\d+-[a-z0-9]+/) }
|
80
|
+
end
|
81
|
+
|
55
82
|
def events
|
56
|
-
|
83
|
+
remo['newest_events']
|
57
84
|
end
|
58
85
|
|
59
86
|
def get_temp
|
@@ -64,6 +91,10 @@ module NatureRemo
|
|
64
91
|
events['hu']['val'].to_f
|
65
92
|
end
|
66
93
|
|
94
|
+
def get_illu
|
95
|
+
events['il']['val'].to_f
|
96
|
+
end
|
97
|
+
|
67
98
|
def get_token
|
68
99
|
return ENV['NATURE_TOKEN'] if ENV['NATURE_TOKEN']
|
69
100
|
|
data/lib/nature_remo/version.rb
CHANGED
data/nature_remo.gemspec
CHANGED
@@ -29,11 +29,11 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
30
30
|
spec.require_paths = ['lib']
|
31
31
|
|
32
|
-
spec.add_development_dependency 'bundler', '~>
|
33
|
-
spec.add_development_dependency 'minitest', '~> 5.0'
|
34
|
-
spec.add_development_dependency 'rake', '~>
|
35
|
-
spec.add_development_dependency 'webmock', '~> 3.
|
36
|
-
spec.add_runtime_dependency 'faraday', '~> 0.
|
32
|
+
spec.add_development_dependency 'bundler', '~> 2.0.2'
|
33
|
+
spec.add_development_dependency 'minitest', '~> 5.13.0'
|
34
|
+
spec.add_development_dependency 'rake', '~> 13.0.1'
|
35
|
+
spec.add_development_dependency 'webmock', '~> 3.7.6'
|
36
|
+
spec.add_runtime_dependency 'faraday', '~> 0.17.0'
|
37
37
|
spec.add_runtime_dependency 'launchy', '~> 2.4.3'
|
38
|
-
spec.add_runtime_dependency 'thor', '~> 0.20.
|
38
|
+
spec.add_runtime_dependency 'thor', '~> 0.20.3'
|
39
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nature_remo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ichi-t
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,70 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.0.2
|
20
20
|
type: :development
|
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:
|
26
|
+
version: 2.0.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 5.13.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 5.13.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 13.0.1
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 13.0.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: webmock
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
61
|
+
version: 3.7.6
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
68
|
+
version: 3.7.6
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: faraday
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
75
|
+
version: 0.17.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 0.17.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: launchy
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.20.
|
103
|
+
version: 0.20.3
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.20.
|
110
|
+
version: 0.20.3
|
111
111
|
description:
|
112
112
|
email:
|
113
113
|
- taisuke_ichimura@icloud.com
|
@@ -119,8 +119,10 @@ files:
|
|
119
119
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
120
120
|
- ".gitignore"
|
121
121
|
- ".travis.yml"
|
122
|
+
- CHANGELOG.md
|
122
123
|
- CODE_OF_CONDUCT.md
|
123
124
|
- Gemfile
|
125
|
+
- Gemfile.lock
|
124
126
|
- LICENSE.txt
|
125
127
|
- README.md
|
126
128
|
- Rakefile
|
@@ -149,8 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
151
|
- !ruby/object:Gem::Version
|
150
152
|
version: '0'
|
151
153
|
requirements: []
|
152
|
-
|
153
|
-
rubygems_version: 2.7.6
|
154
|
+
rubygems_version: 3.1.2
|
154
155
|
signing_key:
|
155
156
|
specification_version: 4
|
156
157
|
summary: Nature Remo API client written by Ruby
|