nature_remo_e 1.0.2 → 2.0.0

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: 6c394a4f88f7bac683e6967bede4091b8cca58f998e792065c01ebe738b29ab9
4
- data.tar.gz: b1408b47bcbaee95e54e2bfd0106c379b252293a4f2075b64bea1ce20c4b0d1b
3
+ metadata.gz: 67168370d37a3df1c18c38ac393b5f36d65016f15845d304811403d0fce63200
4
+ data.tar.gz: 8b6182c418a3731a6db967f3133eff7ad99ec7c817662a0733dad35ab4508662
5
5
  SHA512:
6
- metadata.gz: 6bd2c81e99deb768f5306ddec87e648e487bc297fb48d436329ff02dcfc2e14c1f0f205c0e17b8095a5ef3eb8a61f7909a0b293519ea615fc2c514440f20fa0b
7
- data.tar.gz: 80e28b4392d5a9c36abb79b1668f6416aaebf85c3275a354aff098bf077649d48dfa59a8985bc80f0a17691fb4d6b1991f9f20cf263c98b22869904d09c29e09
6
+ metadata.gz: 67dc246c78b27ee6f97a995acd77b5cf5dde2622e6a25e6df0c54ed3b4e338b30761670050111f42c8030a0e0b0727bebde2fcba050aa4926ae4fdcd4acc4f59
7
+ data.tar.gz: c423e40de4205b13de03e5f07438c36c7eb679654621b23aff512d8b094e7f7edce4bad60a85514743bc810a47326e0c1abac491555f34825e3d3ae27a825469
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
  strategy:
9
9
  matrix:
10
- ruby: [2.5, 2.6, 2.7, '3.0', 3.1]
10
+ ruby: [2.6, 2.7, '3.0', 3.1]
11
11
  name: Ruby ${{ matrix.ruby }}
12
12
  steps:
13
13
  - uses: actions/checkout@v2
data/.rubocop.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  AllCops:
2
+ TargetRubyVersion: 2.6
2
3
  NewCops: enable
3
4
  Exclude:
4
5
  - '*.gemspec'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## Unreleased
2
- [full changelog](https://github.com/ytkg/nature_remo_e/compare/v1.0.2...main)
2
+ [full changelog](https://github.com/ytkg/nature_remo_e/compare/v2.0.0...main)
3
+
4
+ ## v2.0.0
5
+ [full changelog](https://github.com/ytkg/nature_remo_e/compare/v1.0.2...v2.0.0)
6
+
7
+ * :bomb: **[BREAKING CHANGE]** Drop support ruby 2.5
8
+ * https://github.com/ytkg/nature_remo_e/pull/3
9
+
10
+ * Add CLI command
11
+ * https://github.com/ytkg/nature_remo_e/pull/5
3
12
 
4
13
  ## v1.0.2
5
14
  [full changelog](https://github.com/ytkg/nature_remo_e/compare/v1.0.1...v1.0.2)
data/Gemfile CHANGED
@@ -6,9 +6,6 @@ source 'https://rubygems.org'
6
6
  gemspec
7
7
 
8
8
  gem 'rake'
9
-
10
9
  gem 'rspec'
11
-
12
10
  gem 'rubocop'
13
-
14
11
  gem 'webmock'
data/README.md CHANGED
@@ -54,6 +54,45 @@ client.measured_instantaneous
54
54
  #=> 630
55
55
  ```
56
56
 
57
+ ### CLI
58
+ ```bash
59
+ $ remoe
60
+ coefficient: 1
61
+ cumulative_electric_energy_effective_digits: 6
62
+ normal_direction_cumulative_electric_energy: 72164
63
+ cumulative_electric_energy_unit: 1
64
+ reverse_direction_cumulative_electric_energy: 10
65
+ measured_instantaneous: 651
66
+
67
+ $ bundle exec ruby exe/remoe --json | jq .
68
+ {
69
+ "coefficient": 1,
70
+ "cumulative_electric_energy_effective_digits": 6,
71
+ "normal_direction_cumulative_electric_energy": 72164,
72
+ "cumulative_electric_energy_unit": 1,
73
+ "reverse_direction_cumulative_electric_energy": 10,
74
+ "measured_instantaneous": 651
75
+ }
76
+
77
+ $ remoe coefficient
78
+ 1
79
+
80
+ $ remoe cumulative_electric_energy_effective_digits
81
+ 6
82
+
83
+ $ remoe normal_direction_cumulative_electric_energy
84
+ 72164
85
+
86
+ $ remoe cumulative_electric_energy_unit
87
+ 1
88
+
89
+ $ remoe reverse_direction_cumulative_electric_energy
90
+ 10
91
+
92
+ $ remoe measured_instantaneous
93
+ 651
94
+ ```
95
+
57
96
  ## Development
58
97
 
59
98
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/exe/remoe ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'nature_remo_e'
5
+
6
+ NatureRemoE::Cli.start
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+
5
+ module NatureRemoE
6
+ class Cli < Thor
7
+ default_command :all
8
+
9
+ desc 'all', 'Get all value'
10
+ option 'json', type: :boolean
11
+ def all
12
+ return puts echonetlite_properties.to_json if options['json']
13
+
14
+ echonetlite_properties.each do |name, value|
15
+ puts "#{name}: #{value}"
16
+ end
17
+ end
18
+
19
+ desc 'coefficient', 'Get coefficient value'
20
+ def coefficient
21
+ puts echonetlite_properties[:coefficient]
22
+ end
23
+
24
+ desc 'cumulative_electric_energy_effective_digits', 'Get cumulative_electric_energy_effective_digits value'
25
+ def cumulative_electric_energy_effective_digits
26
+ puts echonetlite_properties[:cumulative_electric_energy_effective_digits]
27
+ end
28
+
29
+ desc 'normal_direction_cumulative_electric_energy', 'Get normal_direction_cumulative_electric_energy value'
30
+ def normal_direction_cumulative_electric_energy
31
+ puts echonetlite_properties[:normal_direction_cumulative_electric_energy]
32
+ end
33
+
34
+ desc 'cumulative_electric_energy_unit', 'Get cumulative_electric_energy_unit value'
35
+ def cumulative_electric_energy_unit
36
+ puts echonetlite_properties[:cumulative_electric_energy_unit]
37
+ end
38
+
39
+ desc 'reverse_direction_cumulative_electric_energy', 'Get reverse_direction_cumulative_electric_energy value'
40
+ def reverse_direction_cumulative_electric_energy
41
+ puts echonetlite_properties[:reverse_direction_cumulative_electric_energy]
42
+ end
43
+
44
+ desc 'measured_instantaneous', 'Get measured_instantaneous value'
45
+ def measured_instantaneous
46
+ puts echonetlite_properties[:measured_instantaneous]
47
+ end
48
+
49
+ private
50
+
51
+ def echonetlite_properties
52
+ client = NatureRemoE::Client.new(ENV['NATURE_REMO_API_TOKEN'])
53
+ client.echonetlite_properties
54
+ rescue StandardError => e
55
+ puts e.message
56
+ exit!
57
+ end
58
+ end
59
+ end
@@ -5,14 +5,17 @@ require 'json'
5
5
 
6
6
  module NatureRemoE
7
7
  class Client
8
+ BASE_URL = 'https://api.nature.global'
9
+ API_VERSION = '1'
10
+
8
11
  def initialize(token)
9
12
  @token = token
10
13
  end
11
14
 
12
15
  def echonetlite_properties
13
- device[:smart_meter][:echonetlite_properties].map do |echonetlite_property|
16
+ device[:smart_meter][:echonetlite_properties].to_h do |echonetlite_property|
14
17
  [echonetlite_property[:name].to_sym, echonetlite_property[:val].to_i]
15
- end.to_h
18
+ end
16
19
  end
17
20
 
18
21
  def coefficient
@@ -41,21 +44,25 @@ module NatureRemoE
41
44
 
42
45
  private
43
46
 
47
+ def headers
48
+ {
49
+ 'User-Agent' => "NatureRemoE v#{NatureRemoE::VERSION} (https://github.com/ytkg/nature_remo_e)",
50
+ 'Authorization' => "Bearer #{@token}"
51
+ }
52
+ end
53
+
44
54
  def client
45
- @client ||= Faraday.new(
46
- url: 'https://api.nature.global',
47
- headers: { Authorization: "Bearer #{@token}" }
48
- )
55
+ @client ||= Faraday.new(url: "#{BASE_URL}/#{API_VERSION}", headers: headers) do |f|
56
+ f.response :json, parser_options: { symbolize_names: true }
57
+ end
49
58
  end
50
59
 
51
60
  def appliances
52
- response = client.get do |req|
53
- req.url '/1/appliances'
54
- end
61
+ response = client.get('appliances')
55
62
 
56
- raise NatureRemoE::Error, JSON.parse(response.body, symbolize_names: true)[:message] if response.status != 200
63
+ raise NatureRemoE::Error, response.body[:message] if response.status != 200
57
64
 
58
- JSON.parse(response.body, symbolize_names: true)
65
+ response.body
59
66
  end
60
67
 
61
68
  def device
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NatureRemoE
4
- VERSION = '1.0.2'
4
+ VERSION = '2.0.0'
5
5
  end
data/lib/nature_remo_e.rb CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  require_relative 'nature_remo_e/version'
4
4
  require_relative 'nature_remo_e/client'
5
+ require_relative 'nature_remo_e/cli'
6
+ require_relative 'patches/thor_ext'
5
7
 
6
8
  module NatureRemoE
7
9
  class Error < StandardError; end
@@ -0,0 +1,26 @@
1
+ # rubocop:disable all
2
+ class Thor
3
+ class << self
4
+ def exit_on_failure?
5
+ true
6
+ end
7
+
8
+ def help(shell, subcommand = false)
9
+ list = printable_commands(true, subcommand)
10
+ Thor::Util.thor_classes_in(self).each do |klass|
11
+ list += klass.printable_commands(false)
12
+ end
13
+ # list.sort! { |a, b| a[0] <=> b[0] }
14
+
15
+ if defined?(@package_name) && @package_name
16
+ shell.say "#{@package_name} commands:"
17
+ else
18
+ shell.say "Commands:"
19
+ end
20
+
21
+ shell.print_table(list, :indent => 2, :truncate => true)
22
+ shell.say
23
+ class_options_help(shell)
24
+ end
25
+ end
26
+ end
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  # spec.description = "TODO: Write a longer description or delete this line."
13
13
  spec.homepage = "https://github.com/ytkg/nature_remo_e"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
15
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
16
16
 
17
17
  # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
18
18
 
@@ -31,7 +31,8 @@ Gem::Specification.new do |spec|
31
31
 
32
32
  # Uncomment to register a new dependency of your gem
33
33
  # spec.add_dependency "example-gem", "~> 1.0"
34
- spec.add_dependency "faraday", "~> 1.3.0"
34
+ spec.add_dependency "faraday", ">= 2.0.0"
35
+ spec.add_dependency "thor"
35
36
 
36
37
  # For more information and examples about making a new gem, checkout our
37
38
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,33 +1,48 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nature_remo_e
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshiki Takagi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-03 00:00:00.000000000 Z
11
+ date: 2022-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.0
19
+ version: 2.0.0
20
20
  type: :runtime
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.3.0
27
- description:
26
+ version: 2.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description:
28
42
  email:
29
43
  - yoshiki.tkg@gmail.com
30
- executables: []
44
+ executables:
45
+ - remoe
31
46
  extensions: []
32
47
  extra_rdoc_files: []
33
48
  files:
@@ -43,9 +58,12 @@ files:
43
58
  - Rakefile
44
59
  - bin/console
45
60
  - bin/setup
61
+ - exe/remoe
46
62
  - lib/nature_remo_e.rb
63
+ - lib/nature_remo_e/cli.rb
47
64
  - lib/nature_remo_e/client.rb
48
65
  - lib/nature_remo_e/version.rb
66
+ - lib/patches/thor_ext.rb
49
67
  - nature_remo_e.gemspec
50
68
  homepage: https://github.com/ytkg/nature_remo_e
51
69
  licenses:
@@ -53,7 +71,7 @@ licenses:
53
71
  metadata:
54
72
  homepage_uri: https://github.com/ytkg/nature_remo_e
55
73
  source_code_uri: https://github.com/ytkg/nature_remo_e
56
- post_install_message:
74
+ post_install_message:
57
75
  rdoc_options: []
58
76
  require_paths:
59
77
  - lib
@@ -61,15 +79,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
61
79
  requirements:
62
80
  - - ">="
63
81
  - !ruby/object:Gem::Version
64
- version: 2.5.0
82
+ version: 2.6.0
65
83
  required_rubygems_version: !ruby/object:Gem::Requirement
66
84
  requirements:
67
85
  - - ">="
68
86
  - !ruby/object:Gem::Version
69
87
  version: '0'
70
88
  requirements: []
71
- rubygems_version: 3.1.6
72
- signing_key:
89
+ rubygems_version: 3.3.3
90
+ signing_key:
73
91
  specification_version: 4
74
92
  summary: Nature Remo API client for Nature Remo E
75
93
  test_files: []