pvoutput 0.3.0 → 1.1.0
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 +5 -5
- data/.github/dependabot.yml +14 -0
- data/.github/workflows/gem-push.yaml +25 -0
- data/.github/workflows/ruby.yml +30 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +20 -5
- data/CHANGELOG.md +28 -0
- data/Gemfile +2 -0
- data/README.md +21 -2
- data/Rakefile +2 -0
- data/bin/console +2 -1
- data/lib/pvoutput.rb +2 -0
- data/lib/pvoutput/client.rb +31 -14
- data/lib/pvoutput/version.rb +3 -1
- data/pvoutput.gemspec +11 -8
- metadata +23 -22
- data/circle.yml +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 12f23ce00da08b8c11d608678814059ea944ceb96690cf9472d10bc4c28cc9bf
|
4
|
+
data.tar.gz: be107b5aa1b8b11fd0a7fb728a5c8ee8cd0b71ca7b57b59a3c4330d42fd5da29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f7fb19d50a77f73aea7d86f323a8f8c6c55ebba5e02fb5c79248f6821da91e4046f94f40e3032cf682d8a5a258200ace172dad73e7bd70bae089c52c95ebba3
|
7
|
+
data.tar.gz: 4c22868b8b80f8202a8cde10ff1b131dd3e4f2de66a83ebd8c68c25ec466a3e5819021fbaa6bfd86323a1ae5dcda960c35e6e17ea342d55aa30053ee372645d8
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Set update schedule for GitHub Actions
|
2
|
+
version: 2
|
3
|
+
updates:
|
4
|
+
- package-ecosystem: "github-actions"
|
5
|
+
directory: "/"
|
6
|
+
schedule:
|
7
|
+
interval: "weekly"
|
8
|
+
day: "saturday"
|
9
|
+
|
10
|
+
- package-ecosystem: "bundler"
|
11
|
+
directory: "/"
|
12
|
+
schedule:
|
13
|
+
interval: "weekly"
|
14
|
+
day: "saturday"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
name: Ruby Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
release:
|
5
|
+
types: [ published ]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
build:
|
9
|
+
name: Build + Publish
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
- name: Set up Ruby 2.7
|
15
|
+
uses: ruby/setup-ruby@v1
|
16
|
+
with:
|
17
|
+
ruby-version: 2.7
|
18
|
+
|
19
|
+
- name: Install dependencies
|
20
|
+
run: bundle install
|
21
|
+
- name: Publish to RubyGems
|
22
|
+
run: |
|
23
|
+
rake release
|
24
|
+
env:
|
25
|
+
GEM_HOST_API_KEY: "${{secrets.GEM_HOST_API_KEY}}"
|
@@ -0,0 +1,30 @@
|
|
1
|
+
name: Test
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
schedule:
|
9
|
+
- cron: '0 1 * * SUN'
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
test:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
strategy:
|
15
|
+
matrix:
|
16
|
+
ruby-version: [ '2.5', '2.6', '2.7', '3.0', 'ruby-head' ]
|
17
|
+
|
18
|
+
steps:
|
19
|
+
- uses: actions/checkout@v2
|
20
|
+
- name: Setup ruby
|
21
|
+
uses: ruby/setup-ruby@v1
|
22
|
+
with:
|
23
|
+
ruby-version: ${{ matrix.ruby-version }}
|
24
|
+
bundler-cache: true
|
25
|
+
- name: Install dependencies
|
26
|
+
run: bundle install
|
27
|
+
- name: Lint files
|
28
|
+
run: bundle exec rubocop
|
29
|
+
- name: Run tests
|
30
|
+
run: bundle exec rake
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require: rubocop-rspec
|
2
2
|
|
3
|
-
|
3
|
+
AllCops:
|
4
|
+
NewCops: enable
|
5
|
+
|
6
|
+
Style/HashSyntax:
|
4
7
|
EnforcedStyle: hash_rockets
|
5
8
|
|
6
9
|
Style/Documentation:
|
@@ -9,17 +12,29 @@ Style/Documentation:
|
|
9
12
|
Style/Lambda:
|
10
13
|
Enabled: false
|
11
14
|
|
12
|
-
Style/
|
13
|
-
EnforcedStyleForMultiline:
|
15
|
+
Style/TrailingCommaInArrayLiteral:
|
16
|
+
EnforcedStyleForMultiline: consistent_comma
|
17
|
+
|
18
|
+
Style/TrailingCommaInHashLiteral:
|
19
|
+
EnforcedStyleForMultiline: consistent_comma
|
14
20
|
|
15
21
|
Metrics/MethodLength:
|
16
22
|
Max: 20
|
17
23
|
|
18
|
-
|
24
|
+
Layout/LineLength:
|
19
25
|
Max: 120
|
20
26
|
|
27
|
+
RSpec/ExampleLength:
|
28
|
+
Max: 15
|
29
|
+
|
21
30
|
Style/ModuleFunction:
|
22
31
|
Enabled: false
|
23
32
|
|
24
|
-
|
33
|
+
Layout/HashAlignment:
|
25
34
|
EnforcedHashRocketStyle: table
|
35
|
+
|
36
|
+
Style/OptionalBooleanParameter:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
RSpec/MultipleExpectations:
|
40
|
+
Max: 2
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,33 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
# 1.1.0 (2021-07-12)
|
4
|
+
|
5
|
+
* add_batch_output is now using addoutput with a batch size of 1 in regular mode and 100 in donation mode (@jwillemsen)
|
6
|
+
|
7
|
+
# Changelog
|
8
|
+
|
9
|
+
# 1.0.0 (2021-02-14)
|
10
|
+
|
11
|
+
* Require a minimum of Ruby 2.5 (@jwillemsen)
|
12
|
+
* Clean up ruby gem publish GitHub Action (@jwillemsen)
|
13
|
+
|
14
|
+
# 0.6.0 (2021-02-06)
|
15
|
+
|
16
|
+
This test has no code changes but tests the new release process.
|
17
|
+
|
18
|
+
* Move tests from CircleCI to GitHub Actions (@johnf)
|
19
|
+
* Keep an eye on dependencies with Dependabot (@jwillemsen)
|
20
|
+
* Schedule regular tests against multiple rubys (@jwillemsen)
|
21
|
+
|
22
|
+
# 0.5.0 (2020-09-20)
|
23
|
+
|
24
|
+
* Add more detail to error messages (@jwillemsen)
|
25
|
+
* Support debugging (@johnf)
|
26
|
+
|
27
|
+
# 0.4.0 (20160911)
|
28
|
+
|
29
|
+
* Add retries to batch_output (@jwillemsen)
|
30
|
+
|
3
31
|
# 0.3.0 (20160229)
|
4
32
|
|
5
33
|
* Add donation mode (@jwillemsen)
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# PVOutput
|
2
2
|
|
3
|
-
[](https://github.com/johnf/pvoutput/actions)
|
4
4
|
[](https://coveralls.io/github/johnf/pvoutput?branch=master)
|
5
|
+
[](http://badge.fury.io/rb/pvoutput)
|
6
|
+
|
5
7
|
|
6
8
|
Ruby library for talking to the PVOutput API.
|
7
9
|
|
@@ -147,11 +149,28 @@ client.add_output(
|
|
147
149
|
)
|
148
150
|
```
|
149
151
|
|
152
|
+
## Debugging
|
153
|
+
|
154
|
+
You can enable HTTParty debugging to see the requests by setting `PVOUTPUT_DEBUG=true`
|
155
|
+
|
150
156
|
## Development
|
151
157
|
|
152
158
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
153
159
|
|
154
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
160
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
161
|
+
|
162
|
+
## Release
|
163
|
+
|
164
|
+
To release a new version:
|
165
|
+
* Create a branch for the release
|
166
|
+
* Update the version number in `version.rb`
|
167
|
+
* Update CHANGELOG.md
|
168
|
+
* git commit -pm 'Release 1.x.x'
|
169
|
+
* git tag v1.x.x
|
170
|
+
* git push
|
171
|
+
* git push --tags
|
172
|
+
* In GitHub add the Change Log section to the release and save it
|
173
|
+
* Check everything looks OK in GitHub Actions
|
155
174
|
|
156
175
|
## Contributing
|
157
176
|
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/lib/pvoutput.rb
CHANGED
data/lib/pvoutput/client.rb
CHANGED
@@ -1,22 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'httparty'
|
2
4
|
|
3
5
|
module PVOutput
|
4
6
|
class Client
|
5
7
|
include HTTParty
|
6
8
|
base_uri 'pvoutput.org'
|
7
|
-
|
9
|
+
debug_output $stdout if ENV['PVOUTPUT_DEBUG']
|
8
10
|
|
9
11
|
def initialize(system_id, api_key, donation_mode = false)
|
10
12
|
@system_id = system_id.to_s
|
11
13
|
@api_key = api_key.to_s
|
12
|
-
|
13
|
-
#
|
14
|
-
|
14
|
+
|
15
|
+
# The add_batch_output operation has a default limit of 1 sets of data in one
|
16
|
+
# request, when you are using the donation mode the limit is 100 sets
|
17
|
+
@batch_size = 1
|
15
18
|
@batch_size = 100 if donation_mode
|
16
19
|
|
17
20
|
self.class.headers 'X-Pvoutput-Apikey' => @api_key, 'X-Pvoutput-SystemId' => @system_id
|
18
21
|
end
|
19
22
|
|
23
|
+
# Helper method to post batch request to pvoutput that retries at the moment we get
|
24
|
+
# a 400 error back with body containing 'Load in progress'
|
25
|
+
def post_request(path, options = {}, &block)
|
26
|
+
loop do
|
27
|
+
response = self.class.post(path, options, &block)
|
28
|
+
|
29
|
+
if response.code == 400 && response.body =~ /Load in progress/
|
30
|
+
# We can't send data too fast, when the previous request is still loaded we
|
31
|
+
# have to wait so sleep 10 seconds and try again
|
32
|
+
sleep(10)
|
33
|
+
elsif response.code == 200
|
34
|
+
return
|
35
|
+
else
|
36
|
+
raise("Bad Post: #{response.body}")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
20
41
|
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
21
42
|
def add_status(options)
|
22
43
|
time = options[:when] || Time.now
|
@@ -66,29 +87,25 @@ module PVOutput
|
|
66
87
|
end
|
67
88
|
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
68
89
|
|
69
|
-
# rubocop:disable Metrics/AbcSize
|
70
90
|
def add_batch_output(options)
|
71
|
-
keys = %i
|
72
|
-
keys += %i
|
73
|
-
keys += %i
|
74
|
-
keys += %i
|
91
|
+
keys = %i[energy_generated energy_export energy_used]
|
92
|
+
keys += %i[peak_power peak_time condition min_temp]
|
93
|
+
keys += %i[max_temp comments import_peak import_off_peak]
|
94
|
+
keys += %i[import_shoulder]
|
75
95
|
|
76
96
|
options.to_a.each_slice(@batch_size) do |slice|
|
77
97
|
data = ''
|
78
98
|
slice.each do |entry|
|
79
99
|
date, values = entry
|
80
|
-
data += "#{date}
|
100
|
+
data += "#{date},#{keys.map { |key| values[key] }.join(',')};"
|
81
101
|
end
|
82
102
|
|
83
103
|
params = {
|
84
104
|
:data => data.chop,
|
85
105
|
}
|
86
106
|
|
87
|
-
|
88
|
-
|
89
|
-
raise('Bad Post') unless response.code == 200
|
107
|
+
post_request('/service/r2/addoutput.jsp', :body => params)
|
90
108
|
end
|
91
109
|
end
|
92
|
-
# rubocop:enable Metrics/AbcSize
|
93
110
|
end
|
94
111
|
end
|
data/lib/pvoutput/version.rb
CHANGED
data/pvoutput.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'pvoutput/version'
|
5
6
|
|
@@ -18,16 +19,18 @@ Gem::Specification.new do |spec|
|
|
18
19
|
spec.require_paths = ['lib']
|
19
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
21
|
|
22
|
+
spec.required_ruby_version = '>= 2.5'
|
23
|
+
|
21
24
|
spec.add_dependency 'httparty'
|
22
25
|
|
23
|
-
spec.add_development_dependency 'bundler', '
|
24
|
-
spec.add_development_dependency '
|
26
|
+
spec.add_development_dependency 'bundler', '>= 2.1'
|
27
|
+
spec.add_development_dependency 'coveralls'
|
25
28
|
spec.add_development_dependency 'pry'
|
29
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
26
30
|
spec.add_development_dependency 'rspec'
|
27
|
-
spec.add_development_dependency '
|
28
|
-
spec.add_development_dependency 'timecop'
|
31
|
+
spec.add_development_dependency 'rspec_junit_formatter'
|
29
32
|
spec.add_development_dependency 'rubocop'
|
30
33
|
spec.add_development_dependency 'rubocop-rspec'
|
31
|
-
spec.add_development_dependency '
|
32
|
-
spec.add_development_dependency '
|
34
|
+
spec.add_development_dependency 'timecop'
|
35
|
+
spec.add_development_dependency 'webmock'
|
33
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pvoutput
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Ferlito
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -28,30 +28,30 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1
|
33
|
+
version: '2.1'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1
|
40
|
+
version: '2.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: coveralls
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,21 +67,21 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 12.3.3
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 12.3.3
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rspec_junit_formatter
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: timecop
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: webmock
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -171,6 +171,9 @@ executables: []
|
|
171
171
|
extensions: []
|
172
172
|
extra_rdoc_files: []
|
173
173
|
files:
|
174
|
+
- ".github/dependabot.yml"
|
175
|
+
- ".github/workflows/gem-push.yaml"
|
176
|
+
- ".github/workflows/ruby.yml"
|
174
177
|
- ".gitignore"
|
175
178
|
- ".rspec"
|
176
179
|
- ".rubocop.yml"
|
@@ -182,7 +185,6 @@ files:
|
|
182
185
|
- Rakefile
|
183
186
|
- bin/console
|
184
187
|
- bin/setup
|
185
|
-
- circle.yml
|
186
188
|
- lib/pvoutput.rb
|
187
189
|
- lib/pvoutput/client.rb
|
188
190
|
- lib/pvoutput/version.rb
|
@@ -199,15 +201,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
199
201
|
requirements:
|
200
202
|
- - ">="
|
201
203
|
- !ruby/object:Gem::Version
|
202
|
-
version: '
|
204
|
+
version: '2.5'
|
203
205
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
206
|
requirements:
|
205
207
|
- - ">="
|
206
208
|
- !ruby/object:Gem::Version
|
207
209
|
version: '0'
|
208
210
|
requirements: []
|
209
|
-
|
210
|
-
rubygems_version: 2.4.5.1
|
211
|
+
rubygems_version: 3.1.6
|
211
212
|
signing_key:
|
212
213
|
specification_version: 4
|
213
214
|
summary: Library to speak to the PVOutput API
|