nature_remo 0.2.3 → 0.2.4
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/Gemfile +2 -2
- data/README.md +20 -0
- data/Rakefile +6 -6
- data/bin/natureremo +2 -2
- data/lib/nature_remo.rb +3 -3
- data/lib/nature_remo/cli.rb +17 -19
- data/lib/nature_remo/client.rb +16 -18
- data/lib/nature_remo/version.rb +1 -1
- data/nature_remo.gemspec +20 -19
- metadata +25 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a2498fa3a0977e7536cbb2e0b871a01fa5e3d9232a2656788fd2eeb2ba1a212
|
4
|
+
data.tar.gz: d57445310f1c6fa51ab8099dfecb1e50d7223d573bbd09e26e23c8bad6fb9b8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 365f29ea209b8fc46d515042b6a7eb615b910f063d296b30d218e0854e3baecf73f5d79c1f3fa6a2c4e74bd875f1f9c0770d83830f11427ef4042e73bb9ac840
|
7
|
+
data.tar.gz: 9eed5762c6cd38633888b9fee0374dda6ddceda3da0db14b6f8c7f60791e85facf0cffd146a31e6f10baf991b7c543697869bc381bce5c6ef51c37868866b6fa
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
3
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in nature_remo.gemspec
|
6
6
|
gemspec
|
data/README.md
CHANGED
@@ -20,6 +20,26 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
$ gem install nature_remo
|
22
22
|
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
require 'nature_remo'
|
27
|
+
|
28
|
+
client = NatureRemo::Client.new(<token>)
|
29
|
+
|
30
|
+
# show username
|
31
|
+
client.users
|
32
|
+
|
33
|
+
# show nature_remo device lists
|
34
|
+
client.devices
|
35
|
+
|
36
|
+
# show appliances and signal lists
|
37
|
+
client.appliances
|
38
|
+
|
39
|
+
# send signal
|
40
|
+
client.send_signal(<signal id>)
|
41
|
+
```
|
42
|
+
|
23
43
|
## CLI Usage
|
24
44
|
|
25
45
|
Commands:
|
data/Rakefile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
3
|
|
4
4
|
Rake::TestTask.new(:test) do |t|
|
5
|
-
t.libs <<
|
6
|
-
t.libs <<
|
7
|
-
t.test_files = FileList[
|
5
|
+
t.libs << 'test'
|
6
|
+
t.libs << 'lib'
|
7
|
+
t.test_files = FileList['test/**/*_test.rb']
|
8
8
|
end
|
9
9
|
|
10
|
-
task :
|
10
|
+
task default: :test
|
data/bin/natureremo
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
lib = File.expand_path('
|
3
|
+
lib = File.expand_path('../lib', __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
|
6
6
|
require 'nature_remo'
|
7
7
|
|
8
8
|
begin
|
9
9
|
NatureRemo::Cli.start
|
10
|
-
rescue => e
|
10
|
+
rescue StandardError => e
|
11
11
|
p e
|
12
12
|
end
|
data/lib/nature_remo.rb
CHANGED
data/lib/nature_remo/cli.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require 'thor'
|
3
2
|
require 'json'
|
4
3
|
|
@@ -11,12 +10,11 @@ module NatureRemo
|
|
11
10
|
|
12
11
|
desc 'me', 'print nickname'
|
13
12
|
def me
|
14
|
-
puts JSON.parse(client.users.body)[
|
13
|
+
puts JSON.parse(client.users.body)['nickname']
|
15
14
|
end
|
16
15
|
|
17
16
|
desc 'appliances ID SIGNAL', 'Access a appliance'
|
18
|
-
def appliances
|
19
|
-
|
17
|
+
def appliances(appliance_num = nil, action = nil)
|
20
18
|
if appliance_num && action
|
21
19
|
id = get_appliance_id(appliance_num.to_i)
|
22
20
|
signal = get_signal_id(id, action.to_i)
|
@@ -24,46 +22,47 @@ module NatureRemo
|
|
24
22
|
client.send_signal(signal)
|
25
23
|
puts 'done'
|
26
24
|
elsif appliance_num
|
27
|
-
if appliances_body[appliance_num.to_i][
|
25
|
+
if appliances_body[appliance_num.to_i]['type'] == 'AC'
|
28
26
|
puts "Use 'aircon' command."
|
29
27
|
end
|
30
|
-
appliances_body[appliance_num.to_i][
|
31
|
-
puts "#{i}: #{signal[
|
28
|
+
appliances_body[appliance_num.to_i]['signals'].each_with_index do |signal, i|
|
29
|
+
puts "#{i}: #{signal['name']}"
|
32
30
|
end
|
33
31
|
else
|
34
32
|
appliances_body.each_with_index do |appliance, i|
|
35
|
-
puts "#{i}: #{appliance[
|
33
|
+
puts "#{i}: #{appliance['nickname']}"
|
36
34
|
end
|
37
35
|
end
|
38
36
|
end
|
39
37
|
|
40
38
|
desc 'aircon TEMP MODE', 'Control Air conditioner'
|
41
|
-
def aircon
|
42
|
-
if temp
|
39
|
+
def aircon(temp = nil, mode = nil, volume = nil)
|
40
|
+
if temp =~ /[a-z]/
|
43
41
|
mode = temp
|
44
42
|
temp = nil
|
45
43
|
end
|
46
44
|
|
47
45
|
aircon_id = []
|
48
46
|
appliances_body.each_with_index do |a, i|
|
49
|
-
aircon_id << get_appliance_id(i) if a[
|
47
|
+
aircon_id << get_appliance_id(i) if a['type'] == 'AC'
|
50
48
|
end
|
51
49
|
|
52
50
|
if aircon_id.length == 1
|
53
51
|
client.aircon_setting aircon_id.first, temp, mode, volume
|
54
52
|
else
|
55
|
-
puts
|
53
|
+
puts 'This method supports only one air conditioner'
|
56
54
|
end
|
57
55
|
end
|
58
56
|
|
59
57
|
desc 'temp', 'Get temperture and humidity'
|
60
58
|
def temp
|
61
59
|
value = client.events
|
62
|
-
puts "Temperture: #{value[
|
63
|
-
puts "Humidity: #{value[
|
60
|
+
puts "Temperture: #{value['te']['val']}℃"
|
61
|
+
puts "Humidity: #{value['hu']['val']}%"
|
64
62
|
end
|
65
63
|
|
66
64
|
private
|
65
|
+
|
67
66
|
def client
|
68
67
|
client ||= NatureRemo::Client.new
|
69
68
|
end
|
@@ -72,13 +71,12 @@ module NatureRemo
|
|
72
71
|
appliances ||= JSON.parse(client.appliances.body)
|
73
72
|
end
|
74
73
|
|
75
|
-
def get_appliance_id
|
76
|
-
appliances_body[num][
|
74
|
+
def get_appliance_id(num)
|
75
|
+
appliances_body[num]['id']
|
77
76
|
end
|
78
77
|
|
79
|
-
def get_signal_id
|
80
|
-
JSON.parse(client.appliances(id).body)[num][
|
78
|
+
def get_signal_id(id, num)
|
79
|
+
JSON.parse(client.appliances(id).body)[num]['id']
|
81
80
|
end
|
82
|
-
|
83
81
|
end
|
84
82
|
end
|
data/lib/nature_remo/client.rb
CHANGED
@@ -6,11 +6,10 @@ module NatureRemo
|
|
6
6
|
class Client
|
7
7
|
# nature-remo api http client
|
8
8
|
|
9
|
-
def initialize
|
9
|
+
def initialize(token = nil)
|
10
10
|
@token = token || get_token
|
11
|
-
@client = Faraday.new :
|
11
|
+
@client = Faraday.new url: 'https://api.nature.global'
|
12
12
|
@client.headers['Authorization'] = "Bearer #{@token}"
|
13
|
-
|
14
13
|
end
|
15
14
|
|
16
15
|
def users
|
@@ -25,7 +24,7 @@ module NatureRemo
|
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
28
|
-
def appliances
|
27
|
+
def appliances(appliance = nil)
|
29
28
|
@client.get do |req|
|
30
29
|
if appliance.nil?
|
31
30
|
req.url '/1/appliances'
|
@@ -35,34 +34,34 @@ module NatureRemo
|
|
35
34
|
end
|
36
35
|
end
|
37
36
|
|
38
|
-
def send_signal
|
37
|
+
def send_signal(signal)
|
39
38
|
@client.post do |req|
|
40
39
|
req.url "/1/signals/#{signal}/send"
|
41
|
-
req.body = { :
|
40
|
+
req.body = { name: signal.to_s }
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
|
-
def aircon_setting
|
44
|
+
def aircon_setting(appliance, temp = nil, mode = nil, volume = nil)
|
46
45
|
@client.post do |req|
|
47
46
|
req.url "/1/appliances/#{appliance}/aircon_settings"
|
48
47
|
req.body = {
|
49
|
-
:
|
50
|
-
:
|
51
|
-
:
|
48
|
+
temperature: temp.to_s,
|
49
|
+
operation_mode: mode.to_s,
|
50
|
+
air_volume: volume.to_s
|
52
51
|
}
|
53
52
|
end
|
54
53
|
end
|
55
54
|
|
56
55
|
def events
|
57
|
-
JSON.parse(
|
56
|
+
JSON.parse(devices.body)[0]['newest_events']
|
58
57
|
end
|
59
58
|
|
60
59
|
def get_temp
|
61
|
-
|
60
|
+
events['te']['val'].to_i
|
62
61
|
end
|
63
62
|
|
64
63
|
def get_humi
|
65
|
-
|
64
|
+
events['hu']['val'].to_i
|
66
65
|
end
|
67
66
|
|
68
67
|
def get_token
|
@@ -71,7 +70,7 @@ module NatureRemo
|
|
71
70
|
begin
|
72
71
|
json = JSON(File.read(File.expand_path('~/.nature')))
|
73
72
|
return json['token']
|
74
|
-
rescue => e
|
73
|
+
rescue StandardError => e
|
75
74
|
set_token
|
76
75
|
end
|
77
76
|
end
|
@@ -80,11 +79,10 @@ module NatureRemo
|
|
80
79
|
Launchy.open 'https://home.nature.global'
|
81
80
|
print 'input your token:'
|
82
81
|
token = STDIN.gets.to_s.chomp
|
83
|
-
raise
|
82
|
+
raise 'Invalid Token' unless token.length == 87
|
84
83
|
puts 'your token >> ~/.nature'
|
85
|
-
File.write(File.expand_path('~/.nature'), JSON.dump(
|
86
|
-
|
84
|
+
File.write(File.expand_path('~/.nature'), JSON.dump(token: token))
|
85
|
+
token
|
87
86
|
end
|
88
|
-
|
89
87
|
end
|
90
88
|
end
|
data/lib/nature_remo/version.rb
CHANGED
data/nature_remo.gemspec
CHANGED
@@ -1,38 +1,39 @@
|
|
1
|
-
lib = File.expand_path(
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require
|
3
|
+
require 'nature_remo/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
6
|
+
spec.name = 'nature_remo'
|
7
7
|
spec.version = NatureRemo::VERSION
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
8
|
+
spec.authors = ['ichi-t']
|
9
|
+
spec.email = ['taisuke_ichimura@icloud.com']
|
10
10
|
|
11
|
-
spec.summary =
|
11
|
+
spec.summary = 'Nature Remo API client written by Ruby'
|
12
12
|
# spec.description = %q{TODO: Write a longer description or delete this line.}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
13
|
+
spec.homepage = 'https://github.com/ichi-t/nature_remo'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
17
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
18
18
|
if spec.respond_to?(:metadata)
|
19
19
|
# spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
20
20
|
else
|
21
|
-
raise
|
22
|
-
|
21
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
22
|
+
'public gem pushes.'
|
23
23
|
end
|
24
24
|
|
25
|
-
spec.files
|
25
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
26
26
|
f.match(%r{^(test|spec|features)/})
|
27
27
|
end
|
28
|
-
spec.bindir =
|
28
|
+
spec.bindir = 'bin'
|
29
29
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
30
|
-
spec.require_paths = [
|
30
|
+
spec.require_paths = ['lib']
|
31
31
|
|
32
|
-
spec.add_development_dependency
|
33
|
-
spec.add_development_dependency
|
34
|
-
spec.add_development_dependency
|
35
|
-
spec.
|
36
|
-
spec.add_runtime_dependency
|
37
|
-
spec.add_runtime_dependency
|
32
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
33
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
34
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
35
|
+
spec.add_development_dependency 'webmock', '~> 3.4.2'
|
36
|
+
spec.add_runtime_dependency 'faraday', '~> 0.14.0'
|
37
|
+
spec.add_runtime_dependency 'launchy', '~> 2.4.3'
|
38
|
+
spec.add_runtime_dependency 'thor', '~> 0.20.0'
|
38
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.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ichi-t
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,19 +53,19 @@ dependencies:
|
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '10.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: webmock
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
61
|
+
version: 3.4.2
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: 3.4.2
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: faraday
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,33 +81,33 @@ dependencies:
|
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: 0.14.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: launchy
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
89
|
+
version: 2.4.3
|
76
90
|
type: :runtime
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
96
|
+
version: 2.4.3
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: thor
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
103
|
+
version: 0.20.0
|
90
104
|
type: :runtime
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
110
|
+
version: 0.20.0
|
97
111
|
description:
|
98
112
|
email:
|
99
113
|
- taisuke_ichimura@icloud.com
|