huawei_solar 0.0.3 → 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 +4 -4
- data/.irbrc +1 -0
- data/.tool-versions +1 -1
- data/CHANGELOG.md +9 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +2 -7
- data/LICENSE +1 -1
- data/README.md +21 -3
- data/data/registers.yml +16 -0
- data/lib/huawei_solar/version.rb +1 -1
- data/lib/huawei_solar.rb +14 -6
- metadata +7 -7
- data/.pryrc +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bb059d5db290300b5ff49e9685ca5fe6bc18620f9b63f48fa30ea5679b45e8d8
|
|
4
|
+
data.tar.gz: f8421e69233715364fe19aa6152f81fabaceb7b503f94911acc5a7e5abe48573
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
+
ruby 3.2.2
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
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
|
+
|
|
9
|
+
## [0.0.4] - 2023-01-25
|
|
10
|
+
- Add more meter metrics
|
|
11
|
+
|
|
3
12
|
## [0.0.3] - 2022-12-16
|
|
4
13
|
- Add close method
|
|
5
14
|
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
huawei_solar (0.0.
|
|
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/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
A Ruby library for connect to Huawei Solar inverters using Modbus TCP.
|
|
6
6
|
|
|
7
|
+
## Status
|
|
8
|
+
|
|
9
|
+
> :warning: **This project is still experimental, use with caution!**
|
|
10
|
+
|
|
11
|
+
PR are welcome to increase the property list in [data/registers.yml](data/registers.yml)
|
|
12
|
+
|
|
7
13
|
## Example
|
|
8
14
|
|
|
9
15
|
```ruby
|
|
@@ -13,17 +19,29 @@ hs = HuaweiSolar.new("192.168.0.110", 502)
|
|
|
13
19
|
|
|
14
20
|
hs.read(:inverter_model) # => "SUN2000-3.68KTL-L1"
|
|
15
21
|
hs.read(:inverter_input_power) # => 234.0
|
|
16
|
-
hs.read(:inverter_input_power,
|
|
22
|
+
hs.read(:inverter_input_power, unit: true) # => "234.0 W"
|
|
17
23
|
|
|
18
24
|
hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power])
|
|
19
25
|
# => [225.0, 5.82, -339.0]
|
|
20
26
|
|
|
21
|
-
hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power],
|
|
27
|
+
hs.read(%i[inverter_output_power inverter_daily_energy meter_grid_power], units: true)
|
|
22
28
|
# => ["225.0 W", "5.82 kWh", "-339.0 W"]
|
|
23
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
|
+
|
|
24
42
|
hs.close
|
|
25
43
|
```
|
|
26
44
|
|
|
27
45
|
## License
|
|
28
46
|
|
|
29
|
-
Copyright ©
|
|
47
|
+
Copyright © 2023 Javier Aranda. Released under the terms of the [MIT license](LICENSE).
|
data/data/registers.yml
CHANGED
|
@@ -165,3 +165,19 @@ meter_grid_frequency:
|
|
|
165
165
|
quantity: 1
|
|
166
166
|
unit: Hz
|
|
167
167
|
gain: 100
|
|
168
|
+
|
|
169
|
+
# Energia vertida a red
|
|
170
|
+
meter_positive_active_electricity:
|
|
171
|
+
type: i32
|
|
172
|
+
address: 37119
|
|
173
|
+
quantity: 2
|
|
174
|
+
unit: kWh
|
|
175
|
+
gain: 100
|
|
176
|
+
|
|
177
|
+
# Energia consumida de la red
|
|
178
|
+
meter_reverse_active_power:
|
|
179
|
+
type: i32
|
|
180
|
+
address: 37121
|
|
181
|
+
quantity: 2
|
|
182
|
+
unit: kWh
|
|
183
|
+
gain: 100
|
data/lib/huawei_solar/version.rb
CHANGED
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,
|
|
16
|
-
name.is_a?(Array) ? read_multiple(name,
|
|
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,
|
|
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
|
-
|
|
42
|
+
(options[:units] || options[:unit]) && !unit.nil? ? "#{value} #{unit}" : value
|
|
39
43
|
end
|
|
40
44
|
|
|
41
|
-
def read_multiple(names,
|
|
42
|
-
|
|
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
|
+
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:
|
|
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
|
-
-
|
|
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
|
-
- ".
|
|
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.
|
|
62
|
-
changelog_uri: https://github.com/javierav/huawei_solar/blob/v0.0.
|
|
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.
|
|
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