pvoutput 0.2.0 → 0.3.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 +4 -4
- data/.rubocop.yml +4 -1
- data/CHANGELOG.md +5 -0
- data/README.md +82 -2
- data/lib/pvoutput/client.rb +41 -7
- data/lib/pvoutput/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aabffd834f87c5ca43ed5d0c04c952fe4969b99c
|
4
|
+
data.tar.gz: d52c7cb268ad9608ce3c6503dd2e3b5cb38ff244
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25b9b1b49b10ca564cb9d23233a16505a17d7703d40a01ca0c48d25f1f0cd8f5328aeff11273aa777b358d20bf453ceaf0f5b91bee36063f7ef46fb820c1d411
|
7
|
+
data.tar.gz: 0a8fa6e7d7841d52a0657489d5ac5b9aedcd4b2105201f63fd5cebef3dfcc92b8664a52b19a8cc129dcf3a7213b26754c77817dfa0eca6596d6987289e814a33
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -35,7 +35,13 @@ First step is to create a PVOutput client using your PVOutput assigned system_id
|
|
35
35
|
pvoutput = PVOutput::Client.new(system_id, api_key)
|
36
36
|
```
|
37
37
|
|
38
|
-
|
38
|
+
At the moment you [donate](http://pvoutput.org/donate.jsp) to PVOutput you can enable the donation mode by creating a PVOutput client using
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
pvoutput = PVOutput::Client.new(system_id, api_key, true)
|
42
|
+
```
|
43
|
+
|
44
|
+
Now you can report your real time status to PVOutput using
|
39
45
|
|
40
46
|
```ruby
|
41
47
|
pvoutput.add_status(
|
@@ -47,7 +53,7 @@ The add_status operation accepts the following options
|
|
47
53
|
|
48
54
|
| Option | PVOutput Parameter |
|
49
55
|
| ---------------- | ------------------ |
|
50
|
-
| energy_generated |v1 |
|
56
|
+
| energy_generated | v1 |
|
51
57
|
| power_generated | v2 |
|
52
58
|
| energy_consumed | v3 |
|
53
59
|
| power_consumed | v4 |
|
@@ -67,6 +73,80 @@ client.add_status(
|
|
67
73
|
)
|
68
74
|
```
|
69
75
|
|
76
|
+
You can report your daily output to PVOutput using
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
pvoutput.add_output(
|
80
|
+
options
|
81
|
+
)
|
82
|
+
```
|
83
|
+
|
84
|
+
The add_output operation accepts the following options
|
85
|
+
|
86
|
+
| Option | PVOutput Parameter |
|
87
|
+
| --------------------- | ------------------ |
|
88
|
+
| output_date | d |
|
89
|
+
| energy_generated | g |
|
90
|
+
| peak_power | pp |
|
91
|
+
| peak_time | pt |
|
92
|
+
| condition | cd |
|
93
|
+
| min_temp | tm |
|
94
|
+
| max_temp | tx |
|
95
|
+
| comments | cm |
|
96
|
+
| import_peak | ip |
|
97
|
+
| import_off_peak | io |
|
98
|
+
| import_shoulder | is |
|
99
|
+
| import_high_shoulder | ih |
|
100
|
+
| consumption | c |
|
101
|
+
|
102
|
+
As example
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
client.add_output(
|
106
|
+
:output_date => '20160228'
|
107
|
+
:energy_generated => 15000,
|
108
|
+
:max_temp => 30
|
109
|
+
)
|
110
|
+
```
|
111
|
+
|
112
|
+
You can report also a batch of daily output values to PVOutput using
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
pvoutput.add_batch_output(
|
116
|
+
options
|
117
|
+
)
|
118
|
+
```
|
119
|
+
|
120
|
+
The add_batch_output operation accepts a hash with the date as key and within that the following options
|
121
|
+
|
122
|
+
| Option | PVOutput Parameter |
|
123
|
+
| --------------------- | ------------------ |
|
124
|
+
| energy_generated | g |
|
125
|
+
| peak_power | pp |
|
126
|
+
| peak_time | pt |
|
127
|
+
| condition | cd |
|
128
|
+
| min_temp | tm |
|
129
|
+
| max_temp | tx |
|
130
|
+
| comments | cm |
|
131
|
+
| import_peak | ip |
|
132
|
+
| import_off_peak | io |
|
133
|
+
| import_shoulder | is |
|
134
|
+
| import_high_shoulder | ih |
|
135
|
+
| consumption | c |
|
136
|
+
|
137
|
+
As example
|
138
|
+
|
139
|
+
```ruby
|
140
|
+
client.add_output(
|
141
|
+
:'20150101' => {
|
142
|
+
:energy_generated => 1239, },
|
143
|
+
:'20150102' => {
|
144
|
+
:energy_generated => 1523 },
|
145
|
+
:'20150103' => {
|
146
|
+
:energy_generated => 2190 },
|
147
|
+
)
|
148
|
+
```
|
149
|
+
|
70
150
|
## Development
|
71
151
|
|
72
152
|
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.
|
data/lib/pvoutput/client.rb
CHANGED
@@ -6,14 +6,18 @@ module PVOutput
|
|
6
6
|
base_uri 'pvoutput.org'
|
7
7
|
# debug_output $stdout
|
8
8
|
|
9
|
-
def initialize(system_id, api_key)
|
9
|
+
def initialize(system_id, api_key, donation_mode = false)
|
10
10
|
@system_id = system_id.to_s
|
11
11
|
@api_key = api_key.to_s
|
12
|
+
# The batch operations have default limit of 30 sets of data in one request, when you
|
13
|
+
# are using the donation mode the limit is 100 sets
|
14
|
+
@batch_size = 30
|
15
|
+
@batch_size = 100 if donation_mode
|
12
16
|
|
13
17
|
self.class.headers 'X-Pvoutput-Apikey' => @api_key, 'X-Pvoutput-SystemId' => @system_id
|
14
18
|
end
|
15
19
|
|
16
|
-
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/
|
20
|
+
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
17
21
|
def add_status(options)
|
18
22
|
time = options[:when] || Time.now
|
19
23
|
|
@@ -33,11 +37,11 @@ module PVOutput
|
|
33
37
|
|
34
38
|
response = self.class.post('/service/r2/addstatus.jsp', :body => params)
|
35
39
|
|
36
|
-
|
40
|
+
raise('Bad Post') unless response.code == 200
|
37
41
|
end
|
38
|
-
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/
|
42
|
+
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
39
43
|
|
40
|
-
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/
|
44
|
+
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
41
45
|
def add_output(options)
|
42
46
|
params = {
|
43
47
|
}
|
@@ -50,11 +54,41 @@ module PVOutput
|
|
50
54
|
params[:tm] = options[:min_temp] if options[:min_temp]
|
51
55
|
params[:tx] = options[:max_temp] if options[:max_temp]
|
52
56
|
params[:cm] = options[:comments] if options[:comments]
|
57
|
+
params[:ip] = options[:import_peak] if options[:import_peak]
|
58
|
+
params[:io] = options[:import_off_peak] if options[:import_off_peak]
|
59
|
+
params[:is] = options[:import_shoulder] if options[:import_shoulder]
|
60
|
+
params[:ih] = options[:import_high_shoulder] if options[:import_high_shoulder]
|
61
|
+
params[:c] = options[:consumption] if options[:consumption]
|
53
62
|
|
54
63
|
response = self.class.post('/service/r2/addoutput.jsp', :body => params)
|
55
64
|
|
56
|
-
|
65
|
+
raise('Bad Post') unless response.code == 200
|
57
66
|
end
|
58
|
-
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/
|
67
|
+
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
68
|
+
|
69
|
+
# rubocop:disable Metrics/AbcSize
|
70
|
+
def add_batch_output(options)
|
71
|
+
keys = %i(energy_generated energy_export energy_used)
|
72
|
+
keys += %i(peak_power peak_time condition min_temp)
|
73
|
+
keys += %i(max_temp comments import_peak import_off_peak)
|
74
|
+
keys += %i(import_shoulder)
|
75
|
+
|
76
|
+
options.to_a.each_slice(@batch_size) do |slice|
|
77
|
+
data = ''
|
78
|
+
slice.each do |entry|
|
79
|
+
date, values = entry
|
80
|
+
data += "#{date}," + keys.map { |key| values[key] }.join(',') + ';'
|
81
|
+
end
|
82
|
+
|
83
|
+
params = {
|
84
|
+
:data => data.chop,
|
85
|
+
}
|
86
|
+
|
87
|
+
response = self.class.post('/service/r2/addbatchoutput.jsp', :body => params)
|
88
|
+
|
89
|
+
raise('Bad Post') unless response.code == 200
|
90
|
+
end
|
91
|
+
end
|
92
|
+
# rubocop:enable Metrics/AbcSize
|
59
93
|
end
|
60
94
|
end
|
data/lib/pvoutput/version.rb
CHANGED
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: 0.
|
4
|
+
version: 0.3.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: 2016-02-
|
11
|
+
date: 2016-02-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|