growatt 0.1.1 → 0.1.3

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: 2791314d4017b5a2938b28f53a622bb065c7a7bfe7bcf2f40f11dcd933fc55a0
4
- data.tar.gz: f4c17815a0e1181e85dc6fa427c8e6ea0bbf9fc7a52df71f0b2a42545e111357
3
+ metadata.gz: c4ad3dfd2cb69b9089ded3f89572c129c6681e927ffbbf85c3b95e5257758db3
4
+ data.tar.gz: 266c26a95fa3835e52a3783a669ac10084420be4748d0942ee7af8d3f0ecf19e
5
5
  SHA512:
6
- metadata.gz: b9675bf16f2c91a6dadfce6c8a6db8ba4cf8d353bc1523cb9e17e934c711f070230354b00c34253466b604b841caaa1d515cee1729a42523017d0d4a94d1362d
7
- data.tar.gz: '02828c3dd7555d0eff9964adf3669ac93d7f55aaf5c7b65daa7e181be8cdaeaae506899c2fdba8f130006a3cb4a348820c8ea57b0c2c86f8514e864bc2c78a33'
6
+ metadata.gz: ca2a1abfd1d5df708ae36b60abe0b6d5312ba345431672d92a091db417336421cd004a549ac48c1cc900f4bfcfb3a657978a54d34e68877ebe9ebbc54d125aa9
7
+ data.tar.gz: 8a46f8d312bb5bcd46e27e15c290b31bf8c8270d7583b159d57e0aea0fc5770f194cc36f3a69495fe4a25df34f05d1872b572d4c43fab1c178945de91ba2f177
data/CHANGELOG.md CHANGED
@@ -4,3 +4,7 @@
4
4
  - Initial release
5
5
  ## [0.1.1] - 2024-05-28
6
6
  - remove unused require
7
+ ## [0.1.2] - 2024-05-29
8
+ - add missing dependency
9
+ ## [0.1.3] - 2024-05-30
10
+ - fix api issues to get inverter data
data/growatt.gemspec CHANGED
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
30
30
  s.platform = Gem::Platform::RUBY
31
31
  s.add_runtime_dependency 'wrapi', ">= 0.3.0"
32
+ s.add_runtime_dependency 'faraday-cookie_jar'
32
33
  s.add_development_dependency 'dotenv'
33
34
  s.add_development_dependency 'minitest'
34
35
  s.add_development_dependency 'simplecov'
@@ -52,11 +52,11 @@ module Growatt
52
52
  }).obj.maxSetBean
53
53
  end
54
54
 
55
- def update_inverter_setting(serial_number,command,setting_type,parameters)
55
+ def update_inverter_setting(serial_number,command,param_id,parameters)
56
56
  command_parameters = {
57
57
  'op': command,
58
58
  'serialNum': serial_number,
59
- 'type': setting_type
59
+ 'paramId': param_id
60
60
  }
61
61
  # repeated values to hash { param1: value1 }
62
62
 
@@ -70,7 +70,7 @@ module Growatt
70
70
  # turn invertor on of off
71
71
  def turn_inverter(serial_number,on=true)
72
72
  onoff = (on ? Inverter::ON : Inverter::OFF )
73
- update_inverter_setting(serial_number,'maxSetApi',nil,{'paramId':'max_cmd_on_off','param1':onoff})
73
+ update_inverter_setting(serial_number,'maxSetApi','max_cmd_on_off',[onoff])
74
74
  end
75
75
 
76
76
  # check if invertor is turned on
@@ -79,11 +79,24 @@ module Growatt
79
79
  Inverter::ON.eql? status.max_cmd_on_off
80
80
  end
81
81
 
82
+ def export_limitation(serial_number,enable,value=nil)
83
+ if Inverter::DISABLE.eql? enable
84
+ params = [0]
85
+ else
86
+ raise ArgumentError, "exportlimitation enable should be Inverter::WATT or Inverter::PERCENTAGE" unless [Inverter::WATT,Inverter::PERCENTAGE].include? enable
87
+ raise ArgumentError, "Value should be set for export limitation" unless value
88
+ params = [1, value, enable]
89
+ end
90
+ update_inverter_setting(serial_number,'maxSetApi','backflow_setting',params)
91
+ end
92
+
82
93
  # utility function to get date accordign timespan month/day
83
94
  def timespan_date(timespan=Timespan::DAY,date=Time.now)
84
- if Timespan::MONTH.eql? timespan
95
+ if Timespan::YEAR.eql? timespan
96
+ date.strftime("%Y")
97
+ elsif Timespan::MONTH.eql? timespan
85
98
  date.strftime("%Y-%m")
86
- else
99
+ elsif Timespan::DAY.eql? timespan
87
100
  date.strftime("%Y-%m-%d")
88
101
  end
89
102
  end
@@ -92,13 +105,21 @@ module Growatt
92
105
  # functions below are copied from python example code but not sure if these work with MOD9000 inverters
93
106
  #
94
107
  def inverter_data(inverter_id,type=Timespan::DAY,date=Time.now)
108
+ if Timespan::DAY.eql? type
109
+ operator = 'getInverterData_max'
110
+ elsif Timespan::MONTH.eql? type
111
+ operator = 'getMaxMonthPac'
112
+ elsif Timespan::YEAR.eql? type
113
+ operator = 'getMaxYearPac'
114
+ end
95
115
  _inverter_api({
96
- 'op': 'getInverterData',
97
- 'inverterId': inverter_id,
98
- 'type': type,
116
+ 'op': operator,
117
+ 'id': inverter_id,
118
+ 'type': 1,
99
119
  'date': timespan_date(type,date)
100
120
  })
101
121
  end
122
+ =begin
102
123
  def inverter_detail(inverter_id)
103
124
  _inverter_api({
104
125
  'op': 'getInverterDetailData',
@@ -111,6 +132,7 @@ module Growatt
111
132
  'inverterId': inverter_id
112
133
  })
113
134
  end
135
+ =end
114
136
  def update_mix_inverter_setting(serial_number, setting_type, parameters)
115
137
  update_inverter_setting(serial_number,'mixSetApiNew',setting_type,parameters)
116
138
  end
data/lib/growatt/const.rb CHANGED
@@ -7,13 +7,20 @@ module Growatt
7
7
  end
8
8
  end
9
9
  end
10
+
10
11
  class Timespan
11
12
  HOUR = 0
12
13
  DAY = 1
13
14
  MONTH = 2
15
+ YEAR = 3
14
16
  end
17
+
15
18
  class Inverter
16
19
  ON = "0101"
17
20
  OFF = "0000"
21
+ DISABLE = -1
22
+ WATT = 1
23
+ PERCENTAGE = 0
18
24
  end
25
+
19
26
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Growatt
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: growatt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janco Tanis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-29 00:00:00.000000000 Z
11
+ date: 2024-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wrapi
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.3.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday-cookie_jar
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: dotenv
29
43
  requirement: !ruby/object:Gem::Requirement