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 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