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 +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/README.md +14 -4
- 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: 417416fd874e751c57d7029af2e35058d9f93f1f79ac3c1b9f2a8052b755a2d0
|
|
4
|
+
data.tar.gz: 42a65897b56bdc1111aee3001fab5f7f644b9305b11fa9e4f4beee9d2e091dd2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
+
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
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/README.md
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# Huawei Solar
|
|
2
2
|
|
|
3
|
-

|
|
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,
|
|
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],
|
|
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
|
#
|
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.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-
|
|
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
|
-
-
|
|
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.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.
|
|
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