huawei_solar 0.0.4 → 0.0.5

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: 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]"