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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b47314ec2256d36828e0f6f6d25348541b63442d3adad41b59b13342cbab4793
4
- data.tar.gz: 6330c438d6176a7788ce1bb834df51eccf45e06d7927623c6f214945ff4252f5
3
+ metadata.gz: bb059d5db290300b5ff49e9685ca5fe6bc18620f9b63f48fa30ea5679b45e8d8
4
+ data.tar.gz: f8421e69233715364fe19aa6152f81fabaceb7b503f94911acc5a7e5abe48573
5
5
  SHA512:
6
- metadata.gz: 695249d55a711971fc5226a98e40d3e0e767361052cc1aaea462e2fa9aa3b6c4ed43471d18afb510e53730e496fe3901511ba664b2a20b1ece895afe67d2be05
7
- data.tar.gz: a94b7da5ae772209ba9ff38b7fb429b6f5f43cbc055c7e89f0258e9f0c739ccc99cb1829d703ec956dffafa4bfa2ce502e1c501c9c6866fed08a32a9a59e7033
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,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
@@ -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.3)
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
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2022 Javier Aranda
3
+ Copyright (c) 2023 Javier Aranda
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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, with_unit: true) # => "234.0 W"
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], with_unit: true)
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 © 2022 Javier Aranda. Released under the terms of the [MIT license](LICENSE).
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
@@ -4,7 +4,7 @@ class HuaweiSolar
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 0
7
- TINY = 3
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.3
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: 2022-12-16 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.3
62
- changelog_uri: https://github.com/javierav/huawei_solar/blob/v0.0.3/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]"