huawei_solar 0.0.4 → 0.0.6

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: 417416fd874e751c57d7029af2e35058d9f93f1f79ac3c1b9f2a8052b755a2d0
4
+ data.tar.gz: 42a65897b56bdc1111aee3001fab5f7f644b9305b11fa9e4f4beee9d2e091dd2
5
5
  SHA512:
6
- metadata.gz: 3f133930aee9c75e2576db51802c881bde83ad422b539128d08736f36c30822f0f01a51f924b522fd1184734991f303865cd13564f6c04bd02ddcad449f78353
7
- data.tar.gz: 4343da700721f7accee952eb7fed548c96e1e80d358b7be8419dd17db7d508c1d1e530ff8cd9affa510a16d021bbd0f2af7be2aa423f68436beef71da69c02e8
6
+ metadata.gz: 3f9c7c0d4f29d929b8e6ed7947d800d5810ce115933544b88bacaff933ac0c288f8c27ff36508e48b5149bd02f7d8987b4ca4d055270fe2a9bd0917f8fd99013
7
+ data.tar.gz: 55aef700e1ecdda36f117eb918a80beaa6ebcc7905f8487e99f1f63d7add9c37009a20a3317e91a396c53d0781c6329d47c01a6ab3393faef79ac75ab2d0b293
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,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.0.6] - 2023-08-09
4
+ - Add inverter time and tz
5
+
6
+ ## [0.0.5] - 2023-08-05
7
+ - Add `read_all` method
8
+ - Change `with_unit` option to `units` or `unit` option.
9
+ - Add `keys` option for return hash instead of array when retrieve multiple keys
10
+ - Change development console from pry to irb
11
+
3
12
  ## [0.0.4] - 2023-01-25
4
13
  - Add more meter metrics
5
14
 
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
@@ -1,7 +1,5 @@
1
1
  # Huawei Solar
2
2
 
3
- ![CI](https://github.com/javierav/huawei_solar/workflows/CI/badge.svg)
4
-
5
3
  A Ruby library for connect to Huawei Solar inverters using Modbus TCP.
6
4
 
7
5
  ## Status
@@ -19,14 +17,26 @@ hs = HuaweiSolar.new("192.168.0.110", 502)
19
17
 
20
18
  hs.read(:inverter_model) # => "SUN2000-3.68KTL-L1"
21
19
  hs.read(:inverter_input_power) # => 234.0
22
- hs.read(:inverter_input_power, with_unit: true) # => "234.0 W"
20
+ hs.read(:inverter_input_power, unit: true) # => "234.0 W"
23
21
 
24
22
  hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power])
25
23
  # => [225.0, 5.82, -339.0]
26
24
 
27
- hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power], with_unit: true)
25
+ hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power], units: true)
28
26
  # => ["225.0 W", "5.82 kWh", "-339.0 W"]
29
27
 
28
+ hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power], units: true, keys: true)
29
+ # => {:inverter_output_power=>"606.0 W", :inverter_daily_energy=>"15.15 kWh", :meter_grid_power=>"353.0 W"}
30
+
31
+ hs.read_all
32
+ # => ["SUN2000-3.68KTL-L1", "XXXXXXXX", 2, 224.8, 3.08, ..]
33
+
34
+ hs.read_all(units: true)
35
+ # => ["SUN2000-3.68KTL-L1", "XXXXXXXX", 2, "224.8 V", "3.08 A", ..]
36
+
37
+ hs.read_all(keys: true)
38
+ # => { "inverter_model"=>"SUN2000-3.68KTL-L1", "inverter_serial_number"=>"XXXXXXXX", "inverter_pv_strings"=>2, ... }
39
+
30
40
  hs.close
31
41
  ```
32
42
 
data/data/registers.yml CHANGED
@@ -123,6 +123,22 @@ inverter_grid_frequency:
123
123
  unit: Hz
124
124
  gain: 100
125
125
 
126
+ # Hora del inversor
127
+ inverter_time:
128
+ type: u32
129
+ address: 40000
130
+ quantity: 2
131
+ unit: epoch seconds
132
+ gain: 1
133
+
134
+ # Zona horaria del inversor
135
+ inverter_tz:
136
+ type: i16
137
+ address: 43006
138
+ quantity: 1
139
+ unit: minutes
140
+ gain: 1
141
+
126
142
  #
127
143
  ## METER
128
144
  #
@@ -4,7 +4,7 @@ class HuaweiSolar
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 0
7
- TINY = 4
7
+ TINY = 6
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.6
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-09 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.6
62
+ changelog_uri: https://github.com/javierav/huawei_solar/blob/v0.0.6/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]"