aemo 0.1.19 → 0.1.20
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/lib/aemo.rb +0 -1
- data/lib/aemo/market.rb +2 -7
- data/lib/aemo/msats.rb +19 -12
- data/lib/aemo/nem12.rb +4 -25
- data/lib/aemo/nmi.rb +66 -70
- data/lib/aemo/region.rb +16 -17
- data/lib/aemo/version.rb +1 -1
- data/spec/fixtures/MSATS/c4.xml +275 -0
- data/spec/fixtures/MSATS/msats_limits.xml +67 -0
- data/spec/fixtures/MSATS/nmi_details.xml +144 -0
- data/spec/fixtures/MSATS/nmi_details.xml.zip +0 -0
- data/spec/fixtures/MSATS/nmi_discovery_by_address.xml +141 -0
- data/spec/fixtures/MSATS/participant_system_status.xml +30 -0
- data/spec/lib/aemo/market/interval_spec.rb +49 -0
- data/spec/lib/aemo/market_spec.rb +14 -8
- data/spec/lib/aemo/msats_spec.rb +84 -0
- data/spec/lib/aemo/nem12_spec.rb +21 -23
- data/spec/lib/aemo/nmi_spec.rb +78 -0
- data/spec/lib/aemo/region_spec.rb +49 -1
- data/spec/spec_helper.rb +41 -2
- metadata +63 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3e40a98a48936fc6d75e8ca014f672a364cf929
|
4
|
+
data.tar.gz: 40af65e47491619e9a0dfcfb3df1a612577b7dac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7070f2d1022a383ddba4283f418f3e6c093500d14ee27632124609df94a6e23cd3bd55ffbd92ad849baa032488768ae5a4a508f1c5d19f89bbe0b80ff494445e
|
7
|
+
data.tar.gz: 884cd99295dbeeb6c302420d186e5c72dc3ff87b2217b3211e67ae7b211b52ae6babb793acc8e0aef87e302db0dacbe398949527879dddc8f05bf8e2853749c9
|
data/lib/aemo.rb
CHANGED
data/lib/aemo/market.rb
CHANGED
@@ -2,11 +2,7 @@ module AEMO
|
|
2
2
|
module Market
|
3
3
|
include HTTParty
|
4
4
|
base_uri 'www.nemweb.com.au'
|
5
|
-
|
6
|
-
def self.regions
|
7
|
-
AEMO::Region::REGIONS
|
8
|
-
end
|
9
|
-
|
5
|
+
|
10
6
|
def self.current_dispatch(region)
|
11
7
|
response = AEMO::Market.get "/mms.GRAPHS/GRAPHS/GRAPH_5#{region}1.csv"
|
12
8
|
values = AEMO::Market.parse_response(response)
|
@@ -18,7 +14,7 @@ module AEMO
|
|
18
14
|
values = AEMO::Market.parse_response(response)
|
19
15
|
values
|
20
16
|
end
|
21
|
-
|
17
|
+
|
22
18
|
# ######### #
|
23
19
|
protected
|
24
20
|
# ######### #
|
@@ -37,4 +33,3 @@ module AEMO
|
|
37
33
|
end
|
38
34
|
|
39
35
|
end
|
40
|
-
|
data/lib/aemo/msats.rb
CHANGED
@@ -52,7 +52,7 @@ module AEMO
|
|
52
52
|
options[:inittransId] ||= nil
|
53
53
|
|
54
54
|
query = {
|
55
|
-
transactionId:
|
55
|
+
transactionId: transaction_id,
|
56
56
|
NMI: nmi.nmi, # Note: AEMO has case sensitivity but no consistency across requests.
|
57
57
|
fromDate: from_date,
|
58
58
|
toDate: to_date,
|
@@ -74,11 +74,11 @@ module AEMO
|
|
74
74
|
# /MSATSLimits/PARTICIPANT_IDENTIFIER?transactionId=XXX
|
75
75
|
#
|
76
76
|
# @return [Hash] The report results from the MSATS Limits web service query
|
77
|
-
def self.msats_limits
|
77
|
+
def self.msats_limits(options={})
|
78
78
|
query = {
|
79
|
-
transactionId:
|
79
|
+
transactionId: transaction_id,
|
80
80
|
}
|
81
|
-
response =
|
81
|
+
response = self.get( "/MSATSLimits/#{@@participant_id}", basic_auth: @@auth, headers: { 'Accept' => 'text/xml', 'Content-Type' => 'text/xml'}, query: query, verify: (options[:verify_ssl] != false) )
|
82
82
|
if response.response.code != '200'
|
83
83
|
response
|
84
84
|
else
|
@@ -91,13 +91,13 @@ module AEMO
|
|
91
91
|
# @param [String] jurisdiction_code The Jurisdiction Code
|
92
92
|
# @param [Integer] delivery_point_identifier Delivery Point Identifier
|
93
93
|
# @return [Hash] The response
|
94
|
-
def self.nmi_discovery_by_delivery_point_identifier(jurisdiction_code,delivery_point_identifier)
|
94
|
+
def self.nmi_discovery_by_delivery_point_identifier(jurisdiction_code,delivery_point_identifier,options={})
|
95
95
|
raise ArgumentError, 'jurisdiction_code is not valid' unless %w(ACT NEM NSW QLD SA VIC TAS).include?(jurisdiction_code)
|
96
96
|
raise ArgumentError, 'delivery_point_identifier is not valid' unless delivery_point_identifier.respond_to?("to_i")
|
97
97
|
raise ArgumentError, 'delivery_point_identifier is not valid' if( delivery_point_identifier.to_i < 10000000 || delivery_point_identifier.to_i > 99999999)
|
98
98
|
|
99
99
|
query = {
|
100
|
-
transactionId:
|
100
|
+
transactionId: transaction_id,
|
101
101
|
jurisdictionCode: jurisdiction_code,
|
102
102
|
deliveryPointIdentifier: delivery_point_identifier.to_i
|
103
103
|
}
|
@@ -115,11 +115,11 @@ module AEMO
|
|
115
115
|
# @param [String] jurisdiction_code The Jurisdiction Code
|
116
116
|
# @param [Integer] meter_serial_number The meter's serial number
|
117
117
|
# @return [Hash] The response
|
118
|
-
def self.nmi_discovery_by_meter_serial_number(jurisdiction_code,meter_serial_number)
|
118
|
+
def self.nmi_discovery_by_meter_serial_number(jurisdiction_code,meter_serial_number,options={})
|
119
119
|
raise ArgumentError, 'jurisdiction_code is not valid' unless %w(ACT NEM NSW QLD SA VIC TAS).include?(jurisdiction_code)
|
120
120
|
|
121
121
|
query = {
|
122
|
-
transactionId:
|
122
|
+
transactionId: transaction_id,
|
123
123
|
jurisdictionCode: jurisdiction_code,
|
124
124
|
meterSerialNumber: meter_serial_number.to_i
|
125
125
|
}
|
@@ -157,7 +157,7 @@ module AEMO
|
|
157
157
|
options[:state_or_territory] ||= jurisdiction_code
|
158
158
|
|
159
159
|
query = {
|
160
|
-
transactionId:
|
160
|
+
transactionId: transaction_id,
|
161
161
|
jurisdictionCode: jurisdiction_code,
|
162
162
|
buildingOrPropertyName: options[:building_or_property_name],
|
163
163
|
locationDescriptor: options[:location_descriptor],
|
@@ -197,7 +197,7 @@ module AEMO
|
|
197
197
|
options[:reason] ||= nil
|
198
198
|
|
199
199
|
query = {
|
200
|
-
transactionId:
|
200
|
+
transactionId: transaction_id,
|
201
201
|
nmi: nmi.nmi,
|
202
202
|
checksum: nmi.checksum,
|
203
203
|
type: options[:type],
|
@@ -216,9 +216,9 @@ module AEMO
|
|
216
216
|
# /ParticipantSystemStatus/PARTICIPANT_IDENTIFIER?transactionId=XXX
|
217
217
|
#
|
218
218
|
# @return [Hash] The report results from the Participant System Status web service query
|
219
|
-
def self.system_status
|
219
|
+
def self.system_status(options={})
|
220
220
|
query = {
|
221
|
-
transactionId:
|
221
|
+
transactionId: transaction_id,
|
222
222
|
}
|
223
223
|
response = self.get( "/ParticipantSystemStatus/#{@@participant_id}", basic_auth: @@auth, headers: { 'Accept' => 'text/xml', 'Content-Type' => 'text/xml'}, query: query, verify: (options[:verify_ssl] != false) )
|
224
224
|
if response.response.code != '200'
|
@@ -246,5 +246,12 @@ module AEMO
|
|
246
246
|
!(@@participant_id.nil? || @@auth[:username].nil? || @@auth[:password].nil?)
|
247
247
|
end
|
248
248
|
|
249
|
+
# Method for creating a unique transaction id
|
250
|
+
#
|
251
|
+
# @return [String] the transaction id
|
252
|
+
def self.transaction_id
|
253
|
+
Digest::SHA1.hexdigest(Time.now.to_s)[0..35]
|
254
|
+
end
|
255
|
+
|
249
256
|
end
|
250
257
|
end
|
data/lib/aemo/nem12.rb
CHANGED
@@ -265,7 +265,7 @@ module AEMO
|
|
265
265
|
|
266
266
|
# Initialize a NEM12 file
|
267
267
|
def initialize(nmi,options={})
|
268
|
-
@nmi = nmi
|
268
|
+
@nmi = AEMO::NMI.new(nmi) unless nmi.empty?
|
269
269
|
@data_details = []
|
270
270
|
@interval_data = []
|
271
271
|
@interval_events = []
|
@@ -274,21 +274,6 @@ module AEMO
|
|
274
274
|
end
|
275
275
|
end
|
276
276
|
|
277
|
-
# @return [Integer] checksum of the NMI
|
278
|
-
def nmi_checksum
|
279
|
-
summation = 0
|
280
|
-
@nmi.reverse.split(//).each_index do |i|
|
281
|
-
value = nmi[nmi.length - i - 1].ord
|
282
|
-
if(i % 2 == 0)
|
283
|
-
value = value * 2
|
284
|
-
end
|
285
|
-
value = value.to_s.split(//).map{|i| i.to_i}.reduce(:+)
|
286
|
-
summation += value
|
287
|
-
end
|
288
|
-
checksum = (10 - (summation % 10)) % 10
|
289
|
-
checksum
|
290
|
-
end
|
291
|
-
|
292
277
|
# Parses the header record
|
293
278
|
# @param line [String] A single line in string format
|
294
279
|
# @return [Hash] the line parsed into a hash of information
|
@@ -319,10 +304,10 @@ module AEMO
|
|
319
304
|
csv = line.parse_csv
|
320
305
|
|
321
306
|
raise ArgumentError, 'RecordIndicator is not 200' if csv[0] != '200'
|
322
|
-
raise ArgumentError, 'NMI is not valid' if csv[1]
|
307
|
+
raise ArgumentError, 'NMI is not valid' if !AEMO::NMI.valid_nmi?(csv[1])
|
323
308
|
raise ArgumentError, 'NMIConfiguration is not valid' if csv[2].match(/.{1,240}/).nil?
|
324
309
|
unless csv[3].nil?
|
325
|
-
raise ArgumentError, 'RegisterID is not valid'
|
310
|
+
raise ArgumentError, 'RegisterID is not valid' if csv[3].match(/.{1,10}/).nil?
|
326
311
|
end
|
327
312
|
raise ArgumentError, 'NMISuffix is not valid' if csv[4].match(/[A-HJ-NP-Z][1-9A-HJ-NP-Z]/).nil?
|
328
313
|
if !csv[5].nil? && !csv[5].empty? && !csv[5].match(/^\s*$/)
|
@@ -336,7 +321,7 @@ module AEMO
|
|
336
321
|
raise ArgumentError, 'IntervalLength is not valid' unless %w(1 5 10 15 30).include?(csv[8])
|
337
322
|
# raise ArgumentError, 'NextScheduledReadDate is not valid' if csv[9].match(/\d{8}/).nil? || csv[9] != Time.parse("#{csv[9]}").strftime('%Y%m%d')
|
338
323
|
|
339
|
-
@nmi = csv[1]
|
324
|
+
@nmi = AEMO::NMI.new(csv[1])
|
340
325
|
|
341
326
|
# Push onto the stack
|
342
327
|
@data_details << {
|
@@ -501,12 +486,6 @@ module AEMO
|
|
501
486
|
([headers]+self.to_a.map{|row| row[3]=row[3].strftime("%Y%m%d%H%M%S%z"); row}).map{|row| row.join(',')}.join("\n")
|
502
487
|
end
|
503
488
|
|
504
|
-
# @param nmi [String] a NMI that is to be checked for validity
|
505
|
-
# @return [Boolean] determines if the NMI is valid
|
506
|
-
def self.valid_nmi?(nmi)
|
507
|
-
(nmi.class == String && nmi.length == 10 && !nmi.match(/^[A-Z1-9][A-Z0-9]{9}$/).nil?)
|
508
|
-
end
|
509
|
-
|
510
489
|
# @param path_to_file [String] the path to a file
|
511
490
|
# @return [] NEM12 object
|
512
491
|
def self.parse_nem12_file(path_to_file, strict = false)
|
data/lib/aemo/nmi.rb
CHANGED
@@ -25,8 +25,8 @@ module AEMO
|
|
25
25
|
state: 'ACT',
|
26
26
|
type: 'electricity',
|
27
27
|
includes: [
|
28
|
-
|
29
|
-
|
28
|
+
/^(NGGG[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
29
|
+
/^(7001\d{6})$/
|
30
30
|
],
|
31
31
|
excludes: [
|
32
32
|
]
|
@@ -37,14 +37,14 @@ module AEMO
|
|
37
37
|
state: 'NSW',
|
38
38
|
type: 'electricity',
|
39
39
|
includes: [
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
40
|
+
/^(NAAA[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
41
|
+
/^(NBBB[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
42
|
+
/^(NDDD[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
43
|
+
/^(NFFF[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
44
|
+
/^(4001\d{6})$/,
|
45
|
+
/^(4508\d{6})$/,
|
46
|
+
/^(4204\d{6})$/,
|
47
|
+
/^(4407\d{6})$/
|
48
48
|
],
|
49
49
|
excludes: [
|
50
50
|
]
|
@@ -55,8 +55,8 @@ module AEMO
|
|
55
55
|
state: 'NSW',
|
56
56
|
type: 'electricity',
|
57
57
|
includes: [
|
58
|
-
|
59
|
-
|
58
|
+
/^(NCCC[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
59
|
+
/^(410[234]\d{6})$/
|
60
60
|
],
|
61
61
|
excludes: [
|
62
62
|
]
|
@@ -67,8 +67,8 @@ module AEMO
|
|
67
67
|
state: 'NSW',
|
68
68
|
type: 'electricity',
|
69
69
|
includes: [
|
70
|
-
|
71
|
-
|
70
|
+
/^(NEEE[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
71
|
+
/^(431\d{7})$/
|
72
72
|
],
|
73
73
|
excludes: [
|
74
74
|
]
|
@@ -79,8 +79,8 @@ module AEMO
|
|
79
79
|
state: 'NSW',
|
80
80
|
type: 'electricity',
|
81
81
|
includes: [
|
82
|
-
|
83
|
-
|
82
|
+
/^(NTTT[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
83
|
+
/^(460810[0-8]\d{3})$/
|
84
84
|
],
|
85
85
|
excludes: [
|
86
86
|
]
|
@@ -91,7 +91,7 @@ module AEMO
|
|
91
91
|
state: 'NSW',
|
92
92
|
type: 'electricity',
|
93
93
|
includes: [
|
94
|
-
|
94
|
+
/^(4708109\d{3})$/
|
95
95
|
],
|
96
96
|
excludes: [
|
97
97
|
]
|
@@ -102,7 +102,7 @@ module AEMO
|
|
102
102
|
state: 'NT',
|
103
103
|
type: 'electricity',
|
104
104
|
includes: [
|
105
|
-
|
105
|
+
/^(250\d{7})$/
|
106
106
|
],
|
107
107
|
excludes: [
|
108
108
|
]
|
@@ -113,13 +113,13 @@ module AEMO
|
|
113
113
|
state: 'QLD',
|
114
114
|
type: 'electricity',
|
115
115
|
includes: [
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
116
|
+
/^(QAAA[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
117
|
+
/^(QCCC[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
118
|
+
/^(QDDD[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
119
|
+
/^(QEEE[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
120
|
+
/^(QFFF[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
121
|
+
/^(QGGG[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
122
|
+
/^(30\d{8})$/
|
123
123
|
],
|
124
124
|
excludes: [
|
125
125
|
]
|
@@ -130,8 +130,8 @@ module AEMO
|
|
130
130
|
state: 'QLD',
|
131
131
|
type: 'electricity',
|
132
132
|
includes: [
|
133
|
-
|
134
|
-
|
133
|
+
/^(QB\d{2}[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
134
|
+
/^(31\d{8})$/
|
135
135
|
],
|
136
136
|
excludes: [
|
137
137
|
]
|
@@ -142,8 +142,8 @@ module AEMO
|
|
142
142
|
state: 'QLD',
|
143
143
|
type: 'electricity',
|
144
144
|
includes: [
|
145
|
-
|
146
|
-
|
145
|
+
/^(Q[A-HJ-NP-Z\d]{3}W[A-HJ-NP-Z\d]{5})$/,
|
146
|
+
/^(320200\d{4})$/
|
147
147
|
],
|
148
148
|
excludes: [
|
149
149
|
]
|
@@ -154,9 +154,9 @@ module AEMO
|
|
154
154
|
state: 'SA',
|
155
155
|
type: 'electricity',
|
156
156
|
includes: [
|
157
|
-
|
158
|
-
|
159
|
-
|
157
|
+
/^(SAAA[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
158
|
+
/^(SASMPL[\d]{4})$/,
|
159
|
+
/^(200[12]\d{6})$/
|
160
160
|
],
|
161
161
|
excludes: [
|
162
162
|
]
|
@@ -167,8 +167,8 @@ module AEMO
|
|
167
167
|
state: 'SA',
|
168
168
|
type: 'electricity',
|
169
169
|
includes: [
|
170
|
-
|
171
|
-
|
170
|
+
/^(S[A-HJ-NP-Z\d]{3}W[A-HJ-NP-Z\d]{5})$/,
|
171
|
+
/^(210200\d{4})$/
|
172
172
|
],
|
173
173
|
excludes: [
|
174
174
|
]
|
@@ -179,9 +179,9 @@ module AEMO
|
|
179
179
|
state: 'TAS',
|
180
180
|
type: 'electricity',
|
181
181
|
includes: [
|
182
|
-
|
183
|
-
|
184
|
-
|
182
|
+
/^(T000000(([0-4]\d{3})|(500[01])))$/,
|
183
|
+
/^(8000\d{6})$/,
|
184
|
+
/^(8590[23]\d{5})$/
|
185
185
|
],
|
186
186
|
excludes: [
|
187
187
|
]
|
@@ -192,7 +192,7 @@ module AEMO
|
|
192
192
|
state: 'TAS',
|
193
193
|
type: 'electricity',
|
194
194
|
includes: [
|
195
|
-
|
195
|
+
/^(T[A-HJ-NP-Z\d]{3}W[A-HJ-NP-Z\d]{5})$/,
|
196
196
|
],
|
197
197
|
excludes: [
|
198
198
|
]
|
@@ -203,8 +203,8 @@ module AEMO
|
|
203
203
|
state: 'VIC',
|
204
204
|
type: 'electricity',
|
205
205
|
includes: [
|
206
|
-
|
207
|
-
|
206
|
+
/^(VAAA[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
207
|
+
/^(610[23]\d{6})$/
|
208
208
|
],
|
209
209
|
excludes: [
|
210
210
|
]
|
@@ -215,8 +215,8 @@ module AEMO
|
|
215
215
|
state: 'VIC',
|
216
216
|
type: 'electricity',
|
217
217
|
includes: [
|
218
|
-
|
219
|
-
|
218
|
+
/^(VBBB[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
219
|
+
/^(630[56]\d{6})$/
|
220
220
|
],
|
221
221
|
excludes: [
|
222
222
|
]
|
@@ -227,8 +227,8 @@ module AEMO
|
|
227
227
|
state: 'VIC',
|
228
228
|
type: 'electricity',
|
229
229
|
includes: [
|
230
|
-
|
231
|
-
|
230
|
+
/^(VCCC[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
231
|
+
/^(620[34]\d{6})$/
|
232
232
|
],
|
233
233
|
excludes: [
|
234
234
|
]
|
@@ -239,8 +239,8 @@ module AEMO
|
|
239
239
|
state: 'VIC',
|
240
240
|
type: 'electricity',
|
241
241
|
includes: [
|
242
|
-
|
243
|
-
|
242
|
+
/^(VDDD[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
243
|
+
/^(6001\d{6})$/
|
244
244
|
],
|
245
245
|
excludes: [
|
246
246
|
]
|
@@ -251,8 +251,8 @@ module AEMO
|
|
251
251
|
state: 'VIC',
|
252
252
|
type: 'electricity',
|
253
253
|
includes: [
|
254
|
-
|
255
|
-
|
254
|
+
/^(VEEE[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
255
|
+
/^(640[78]\d{6})$/
|
256
256
|
],
|
257
257
|
excludes: [
|
258
258
|
]
|
@@ -263,8 +263,8 @@ module AEMO
|
|
263
263
|
state: 'VIC',
|
264
264
|
type: 'electricity',
|
265
265
|
includes: [
|
266
|
-
|
267
|
-
|
266
|
+
/^(V[A-HJ-NP-Z\d]{3}W[A-HJ-NP-Z\d]{5})$/,
|
267
|
+
/^(650900\d{4})$/
|
268
268
|
],
|
269
269
|
excludes: [
|
270
270
|
]
|
@@ -275,10 +275,10 @@ module AEMO
|
|
275
275
|
state: 'WA',
|
276
276
|
type: 'electricity',
|
277
277
|
includes: [
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
278
|
+
/^(WAAA[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
279
|
+
/^(800[1-9]\d{6})$/,
|
280
|
+
/^(801\d{7})$/,
|
281
|
+
/^(8020\d{6})$/
|
282
282
|
],
|
283
283
|
excludes: [
|
284
284
|
]
|
@@ -289,7 +289,7 @@ module AEMO
|
|
289
289
|
state: 'WA',
|
290
290
|
type: 'electricity',
|
291
291
|
includes: [
|
292
|
-
|
292
|
+
/^(8021\d{6})$/
|
293
293
|
],
|
294
294
|
excludes: [
|
295
295
|
]
|
@@ -300,7 +300,7 @@ module AEMO
|
|
300
300
|
state: 'NSW',
|
301
301
|
type: 'gas',
|
302
302
|
includes: [
|
303
|
-
|
303
|
+
/^(52\d{8})$/
|
304
304
|
],
|
305
305
|
excludes: [
|
306
306
|
]
|
@@ -311,7 +311,7 @@ module AEMO
|
|
311
311
|
state: 'VIC',
|
312
312
|
type: 'gas',
|
313
313
|
includes: [
|
314
|
-
|
314
|
+
/^(53\d{8})$/
|
315
315
|
],
|
316
316
|
excludes: [
|
317
317
|
]
|
@@ -322,7 +322,7 @@ module AEMO
|
|
322
322
|
state: 'QLD',
|
323
323
|
type: 'gas',
|
324
324
|
includes: [
|
325
|
-
|
325
|
+
/^(54\d{8})$/
|
326
326
|
],
|
327
327
|
excludes: [
|
328
328
|
]
|
@@ -333,7 +333,7 @@ module AEMO
|
|
333
333
|
state: 'SA',
|
334
334
|
type: 'gas',
|
335
335
|
includes: [
|
336
|
-
|
336
|
+
/^(55\d{8})$/
|
337
337
|
],
|
338
338
|
excludes: [
|
339
339
|
]
|
@@ -344,7 +344,7 @@ module AEMO
|
|
344
344
|
state: 'WA',
|
345
345
|
type: 'gas',
|
346
346
|
includes: [
|
347
|
-
|
347
|
+
/^(56\d{8})$/
|
348
348
|
],
|
349
349
|
excludes: [
|
350
350
|
]
|
@@ -355,7 +355,7 @@ module AEMO
|
|
355
355
|
state: 'TAS',
|
356
356
|
type: 'gas',
|
357
357
|
includes: [
|
358
|
-
|
358
|
+
/^(57\d{8})$/
|
359
359
|
],
|
360
360
|
excludes: [
|
361
361
|
]
|
@@ -366,7 +366,7 @@ module AEMO
|
|
366
366
|
state: 'NSW',
|
367
367
|
type: 'electricity',
|
368
368
|
includes: [
|
369
|
-
|
369
|
+
/^(NJJJNR[A-HJ-NP-Z\d]{4})$/
|
370
370
|
],
|
371
371
|
excludes: [
|
372
372
|
]
|
@@ -377,8 +377,8 @@ module AEMO
|
|
377
377
|
state: '',
|
378
378
|
type: 'electricity',
|
379
379
|
includes: [
|
380
|
-
|
381
|
-
|
380
|
+
/^(NKKK[A-HJ-NP-VX-Z\d][A-HJ-NP-Z\d]{5})$/,
|
381
|
+
/^(7102\d{6})$/
|
382
382
|
],
|
383
383
|
excludes: [
|
384
384
|
]
|
@@ -389,8 +389,8 @@ module AEMO
|
|
389
389
|
state: '',
|
390
390
|
type: 'electricity',
|
391
391
|
includes: [
|
392
|
-
|
393
|
-
|
392
|
+
/^(880[1-5]\d{6})$/,
|
393
|
+
/^(9\d{9})$/
|
394
394
|
],
|
395
395
|
excludes: [
|
396
396
|
]
|
@@ -665,10 +665,6 @@ module AEMO
|
|
665
665
|
protected
|
666
666
|
# ######### #
|
667
667
|
|
668
|
-
def is_valid_region?(region)
|
669
|
-
REGIONS.keys.include?(region)
|
670
|
-
end
|
671
|
-
|
672
668
|
end
|
673
669
|
|
674
670
|
end
|