nature_remo 0.2.5 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 360f394618af476335ab3a635b7c69be2e5d4c5828e4168062d38ca248a6daac
4
- data.tar.gz: cd671b9a1463f924844b7d0c2d728269971460c3b74125641dc098cf3508a4dc
3
+ metadata.gz: ca496be0b1ab840ebe82749f39a7fa179445076d085d2549bc931bbc8800094b
4
+ data.tar.gz: 9e984120722b6db2e67d9d8fd343b8f9f19a118368141830906284ab98cd0b73
5
5
  SHA512:
6
- metadata.gz: 99d4f2351f697f06af4538b6362110e9f5268afe2a914c2481eae4e53cbe343232388ea961fb100b7005d16dfdd3da672361a45a82303eaeb5016cfa780187f2
7
- data.tar.gz: e0ae51e8b018a35335e7e64f6fc5a912d876eb06cf5f5ef399cef6b0be2d1832523bb85fe0368d51dad4c56470ca1a1942ba882c65e6bc4c63944c7244fa99f7
6
+ metadata.gz: 92714ff39d4e2422588b99b9e2455b699aa9d26a9366fd7868bb516f58bf4c48ea7f9a125b6447e7ecb1069744d5ef2e17a949992a34a6a500fe228a4c031f9a
7
+ data.tar.gz: 3d5bf2385b0c483cd190d4f35567f185303aa7cb0c74193b06083f6581dd7b1485687f2b95522bd892d6970387608783a8e729be4eebfe1a5785cebe51543b3d
data/.travis.yml CHANGED
@@ -2,4 +2,4 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.5.0
5
- before_install: gem install bundler -v 1.16.1
5
+ before_install: gem install bundler -v 2.0.2
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ ## v0.5.1
2
+ - https://github.com/ichi-t/nature_remo/pull/22
3
+
4
+ ## v0.4.0
5
+ - make it possible to get **illumination** value
6
+
7
+ ## v0.3.0
8
+ - Add multiple sending for #send_signal method
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 temperture
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 temperture and humidity
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 [temperture] [mode] [options]
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
 
@@ -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 'temp', 'Get temperture and humidity'
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 "Temperture: #{value['te']['val']}℃"
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)
@@ -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/signals/#{signal}/send"
40
- req.body = { name: signal.to_s }
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
- JSON.parse(devices.body)[0]['newest_events']
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
 
@@ -1,3 +1,3 @@
1
1
  module NatureRemo
2
- VERSION = '0.2.5'.freeze
2
+ VERSION = '0.5.1'.freeze
3
3
  end
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', '~> 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'
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.0'
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.2.5
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: 2018-10-25 00:00:00.000000000 Z
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: '1.16'
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: '1.16'
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: '5.0'
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: '5.0'
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: '10.0'
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: '10.0'
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.4.2
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.4.2
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.14.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.14.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.0
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.0
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
- rubyforge_project:
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