huawei_solar 0.0.4 → 0.0.5

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: ce715fa01eb6dfe7474a49c55eaaca71480dce2bb686f2e575b28f5771844cd2
4
- data.tar.gz: 4818ff44871c2da9d4b66f760dcd6936e0fd77678d9814960dd26cb3e3f1ce45
3
+ metadata.gz: bb059d5db290300b5ff49e9685ca5fe6bc18620f9b63f48fa30ea5679b45e8d8
4
+ data.tar.gz: f8421e69233715364fe19aa6152f81fabaceb7b503f94911acc5a7e5abe48573
5
5
  SHA512:
6
- metadata.gz: 3f133930aee9c75e2576db51802c881bde83ad422b539128d08736f36c30822f0f01a51f924b522fd1184734991f303865cd13564f6c04bd02ddcad449f78353
7
- data.tar.gz: 4343da700721f7accee952eb7fed548c96e1e80d358b7be8419dd17db7d508c1d1e530ff8cd9affa510a16d021bbd0f2af7be2aa423f68436beef71da69c02e8
6
+ metadata.gz: f5ae6f6af83de404b20adf8e5b7573fd9b028d1db7b4b031f8ae068ce9cd9506abb8fb0cc222157ea0753817888920d31a2c51f2ca2ce9603f4aed028bb60a5e
7
+ data.tar.gz: e75ebfb14c92943a5be81265dc4771bbfad7a1eb3dc29758512c2d350259bdd975e377c65075e036526308412f249802e48c37a2b683d2d3642cf7685c5412db
data/.irbrc ADDED
@@ -0,0 +1 @@
1
+ IRB.conf[:IRB_NAME] = "[huawei_solar]"
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 3.1.2
1
+ ruby 3.2.2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.0.5] - 2023-08-05
4
+ - Add `read_all` method
5
+ - Change `with_unit` option to `units` or `unit` option.
6
+ - Add `keys` option for return hash instead of array when retrieve multiple keys
7
+ - Change development console from pry to irb
8
+
3
9
  ## [0.0.4] - 2023-01-25
4
10
  - Add more meter metrics
5
11
 
data/Gemfile CHANGED
@@ -5,7 +5,6 @@ source "https://rubygems.org"
5
5
  gemspec
6
6
 
7
7
  gem "minitest", "~> 5.0"
8
- gem "pry", "~> 0.14"
9
8
  gem "rake", "~> 13.0"
10
9
  gem "rubocop", "~> 1.21"
11
10
  gem "rubocop-minitest", "~> 0.19"
data/Gemfile.lock CHANGED
@@ -1,22 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- huawei_solar (0.0.4)
4
+ huawei_solar (0.0.5)
5
5
  rmodbus (~> 1.3.3)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  ast (2.4.2)
11
- coderay (1.1.3)
12
- method_source (1.0.0)
13
11
  minitest (5.15.0)
14
12
  parallel (1.22.1)
15
13
  parser (3.1.1.0)
16
14
  ast (~> 2.4.1)
17
- pry (0.14.1)
18
- coderay (~> 1.1)
19
- method_source (~> 1.0)
20
15
  rainbow (3.1.1)
21
16
  rake (13.0.6)
22
17
  regexp_parser (2.2.1)
@@ -42,12 +37,12 @@ GEM
42
37
 
43
38
  PLATFORMS
44
39
  arm64-darwin-21
40
+ arm64-darwin-22
45
41
  x86_64-linux
46
42
 
47
43
  DEPENDENCIES
48
44
  huawei_solar!
49
45
  minitest (~> 5.0)
50
- pry (~> 0.14)
51
46
  rake (~> 13.0)
52
47
  rubocop (~> 1.21)
53
48
  rubocop-minitest (~> 0.19)
data/README.md CHANGED
@@ -19,14 +19,26 @@ hs = HuaweiSolar.new("192.168.0.110", 502)
19
19
 
20
20
  hs.read(:inverter_model) # => "SUN2000-3.68KTL-L1"
21
21
  hs.read(:inverter_input_power) # => 234.0
22
- hs.read(:inverter_input_power, with_unit: true) # => "234.0 W"
22
+ hs.read(:inverter_input_power, unit: true) # => "234.0 W"
23
23
 
24
24
  hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power])
25
25
  # => [225.0, 5.82, -339.0]
26
26
 
27
- hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power], with_unit: true)
27
+ hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power], units: true)
28
28
  # => ["225.0 W", "5.82 kWh", "-339.0 W"]
29
29
 
30
+ hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power], units: true, keys: true)
31
+ # => {:inverter_output_power=>"606.0 W", :inverter_daily_energy=>"15.15 kWh", :meter_grid_power=>"353.0 W"}
32
+
33
+ hs.read_all
34
+ # => ["SUN2000-3.68KTL-L1", "XXXXXXXX", 2, 224.8, 3.08, ..]
35
+
36
+ hs.read_all(units: true)
37
+ # => ["SUN2000-3.68KTL-L1", "XXXXXXXX", 2, "224.8 V", "3.08 A", ..]
38
+
39
+ hs.read_all(keys: true)
40
+ # => { "inverter_model"=>"SUN2000-3.68KTL-L1", "inverter_serial_number"=>"XXXXXXXX", "inverter_pv_strings"=>2, ... }
41
+
30
42
  hs.close
31
43
  ```
32
44
 
@@ -4,7 +4,7 @@ class HuaweiSolar
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 0
7
- TINY = 4
7
+ TINY = 5
8
8
  PRE = nil
9
9
 
10
10
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
data/lib/huawei_solar.rb CHANGED
@@ -12,8 +12,12 @@ class HuaweiSolar
12
12
  @registers = YAML.load_file(File.expand_path("../data/registers.yml", __dir__))
13
13
  end
14
14
 
15
- def read(name, with_unit: false)
16
- name.is_a?(Array) ? read_multiple(name, with_unit:) : read_single(name, with_unit:)
15
+ def read(name, **options)
16
+ name.is_a?(Array) ? read_multiple(name, **options) : read_single(name, **options)
17
+ end
18
+
19
+ def read_all(**options)
20
+ read_multiple(@registers.keys, **options)
17
21
  end
18
22
 
19
23
  def close
@@ -22,7 +26,7 @@ class HuaweiSolar
22
26
 
23
27
  private
24
28
 
25
- def read_single(name, with_unit: false) # rubocop:disable Metrics/AbcSize
29
+ def read_single(name, **options) # rubocop:disable Metrics/AbcSize
26
30
  register = register_by_name(name)
27
31
  type = find_type(register["type"])
28
32
  gain = register["gain"]
@@ -35,11 +39,15 @@ class HuaweiSolar
35
39
  value = value.is_a?(Array) && value.size == 1 ? value.first : value
36
40
  value = gain ? value / (gain * 1.0) : value
37
41
 
38
- with_unit && !unit.nil? ? "#{value} #{unit}" : value
42
+ (options[:units] || options[:unit]) && !unit.nil? ? "#{value} #{unit}" : value
39
43
  end
40
44
 
41
- def read_multiple(names, with_unit: false)
42
- names.map { |name| read_single(name, with_unit:) }
45
+ def read_multiple(names, **options)
46
+ if options[:keys]
47
+ names.to_h { |name| [name, read_single(name, **options)] }
48
+ else
49
+ names.map { |name| read_single(name, **options) }
50
+ end
43
51
  end
44
52
 
45
53
  def register_by_name(name)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: huawei_solar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Aranda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-25 00:00:00.000000000 Z
11
+ date: 2023-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rmodbus
@@ -26,7 +26,7 @@ dependencies:
26
26
  version: 1.3.3
27
27
  description:
28
28
  email:
29
- - javier.aranda.varo@gmail.com
29
+ - aranda@hey.com
30
30
  executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files:
@@ -35,7 +35,7 @@ extra_rdoc_files:
35
35
  files:
36
36
  - ".editorconfig"
37
37
  - ".envrc"
38
- - ".pryrc"
38
+ - ".irbrc"
39
39
  - ".rubocop.yml"
40
40
  - ".tool-versions"
41
41
  - CHANGELOG.md
@@ -58,8 +58,8 @@ licenses:
58
58
  - MIT
59
59
  metadata:
60
60
  homepage_uri: https://github.com/javierav/huawei_solar
61
- source_code_uri: https://github.com/javierav/huawei_solar/tree/v0.0.4
62
- changelog_uri: https://github.com/javierav/huawei_solar/blob/v0.0.4/CHANGELOG.md
61
+ source_code_uri: https://github.com/javierav/huawei_solar/tree/v0.0.5
62
+ changelog_uri: https://github.com/javierav/huawei_solar/blob/v0.0.5/CHANGELOG.md
63
63
  rubygems_mfa_required: 'true'
64
64
  post_install_message:
65
65
  rdoc_options:
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0'
79
79
  requirements: []
80
- rubygems_version: 3.3.7
80
+ rubygems_version: 3.4.10
81
81
  signing_key:
82
82
  specification_version: 4
83
83
  summary: A library for connect to Huawei Solar inverters using Modbus TCP
data/.pryrc DELETED
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Pry.config.prompt_name = "[huawei_solar]"