huawei_solar 0.0.3 → 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: 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]"