aemo 0.1.6 → 0.1.7
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/aemo.gemspec +2 -2
- data/lib/aemo.rb +1 -0
- data/lib/aemo/nmi.rb +41 -11
- data/lib/aemo/version.rb +29 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ea10bd77f54b36de7128da38ceb13247b0b08b1
|
4
|
+
data.tar.gz: 89f8f122e89391b19d3ba3b84c4b2a93d2eb9928
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8962bbee938ad756b7e3ea72e9416ae90f66eecd534d7d157ba9b9131cf9e57900d8b7934b00ccb53d06bd8ac6674fd003223487be3df7f8d47439d66b219f1e
|
7
|
+
data.tar.gz: c5acfee90eacd6344c41d5167fc709744cad92db4aeea9f6fed983fb2c12229414e08f650f8130f32a11ff6d136aa6ed654e9eb0e0425623538e5e8ec8827b0a
|
data/aemo.gemspec
CHANGED
@@ -3,9 +3,9 @@ $:.push File.expand_path('../lib', __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'aemo'
|
6
|
-
s.version = '0.1.
|
6
|
+
s.version = '0.1.7'
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
|
-
s.date = '2015-02-
|
8
|
+
s.date = '2015-02-26'
|
9
9
|
s.summary = 'AEMO Gem'
|
10
10
|
s.description = 'Gem providing functionality for the Australian Energy Market Operator data'
|
11
11
|
s.authors = ['Joel Courtney']
|
data/lib/aemo.rb
CHANGED
data/lib/aemo/nmi.rb
CHANGED
@@ -435,7 +435,7 @@ module AEMO
|
|
435
435
|
raise ArgumentError.new("NMI is not constructed with valid characters") unless AEMO::NMI.valid_nmi?(nmi)
|
436
436
|
|
437
437
|
@nmi = nmi
|
438
|
-
@meters =
|
438
|
+
@meters = []
|
439
439
|
@roles = {}
|
440
440
|
@data_streams = []
|
441
441
|
end
|
@@ -503,11 +503,15 @@ module AEMO
|
|
503
503
|
@classification_code = @msats_detail['MasterData']['NMIClassificationCode']
|
504
504
|
@status = @msats_detail['MasterData']['Status']
|
505
505
|
@address = @msats_detail['MasterData']['Address']
|
506
|
-
@meters
|
506
|
+
@meters ||= []
|
507
|
+
@roles ||= {}
|
508
|
+
@data_streams ||= []
|
507
509
|
# Meters
|
508
510
|
unless @msats_detail['MeterRegister'].nil?
|
509
|
-
@msats_detail['MeterRegister']['Meter']
|
510
|
-
|
511
|
+
meters = @msats_detail['MeterRegister']['Meter']
|
512
|
+
meters = [meters] if meters.is_a?(Hash)
|
513
|
+
meters.select{|x| !x['Status'].nil? }.each do |meter|
|
514
|
+
@meters << OpenStruct.new(
|
511
515
|
status: meter['Status'],
|
512
516
|
installation_type_code: meter['InstallationTypeCode'],
|
513
517
|
next_scheduled_read_date: meter['NextScheduledReadDate'],
|
@@ -515,11 +519,10 @@ module AEMO
|
|
515
519
|
registers: [],
|
516
520
|
serial_number: meter['SerialNumber']
|
517
521
|
)
|
518
|
-
puts "@meters.inspect: #{@meters.inspect}"
|
519
|
-
@meters[meter['SerialNumber']] = m
|
520
522
|
end
|
521
|
-
|
522
|
-
|
523
|
+
meters.select{|x| x['Status'].nil? }.each do |registers|
|
524
|
+
m = @meters.find{|x| x.serial_number == registers['SerialNumber']}
|
525
|
+
m.registers << register = OpenStruct.new(
|
523
526
|
controlled_load: (registers['RegisterConfiguration']['Register']['ControlledLoad'] == 'Y'),
|
524
527
|
dial_format: registers['RegisterConfiguration']['Register']['DialFormat'],
|
525
528
|
multiplier: registers['RegisterConfiguration']['Register']['Multiplier'],
|
@@ -529,18 +532,21 @@ module AEMO
|
|
529
532
|
time_of_day: registers['RegisterConfiguration']['Register']['TimeOfDay'],
|
530
533
|
unit_of_measure: registers['RegisterConfiguration']['Register']['UnitOfMeasure']
|
531
534
|
)
|
532
|
-
@meters[registers['SerialNumber']].registers << register
|
533
535
|
end
|
534
536
|
end
|
535
537
|
# Roles
|
536
538
|
unless @msats_detail['RoleAssignments'].nil?
|
537
|
-
@msats_detail['RoleAssignments']['RoleAssignment']
|
539
|
+
role_assignments = @msats_detail['RoleAssignments']['RoleAssignment']
|
540
|
+
role_assignments = [role_assignments] if role_assignments.is_a?(Hash)
|
541
|
+
role_assignments.each do |role|
|
538
542
|
@roles[role['Role']] = role['Party']
|
539
543
|
end
|
540
544
|
end
|
541
545
|
# DataStreams
|
542
546
|
unless @msats_detail['DataStreams'].nil?
|
543
|
-
@msats_detail['DataStreams']['DataStream']
|
547
|
+
data_streams = @msats_detail['DataStreams']['DataStream']
|
548
|
+
data_streams = [data_streams] if data_streams.is_a?(Hash) # Deal with issue of only one existing
|
549
|
+
data_streams.each do |stream|
|
544
550
|
@data_streams << OpenStruct.new(suffix: stream['Suffix'], profile_name: stream['ProfileName'],averaged_daily_load: stream['AveragedDailyLoad'], data_stream_type: stream['DataStreamType'],status: stream['Status'])
|
545
551
|
end
|
546
552
|
end
|
@@ -557,6 +563,30 @@ module AEMO
|
|
557
563
|
end
|
558
564
|
friendly_address
|
559
565
|
end
|
566
|
+
|
567
|
+
# Returns the meter OpenStructs for the requested status (C/R)
|
568
|
+
#
|
569
|
+
# @param status [String] the stateus [C|R]
|
570
|
+
# @return [Array<OpenStruct>] Returns an array of OpenStructs for Meters with the status provided
|
571
|
+
def meters_by_status(status = 'C')
|
572
|
+
@meters.select{|x| x.status == "#{status}"}
|
573
|
+
end
|
574
|
+
|
575
|
+
# Returns the data_stream OpenStructs for the requested status (A/I)
|
576
|
+
#
|
577
|
+
# @param status [String] the stateus [A|I]
|
578
|
+
# @return [Array<OpenStruct>] Returns an array of OpenStructs for the current Meters
|
579
|
+
def data_streams_by_status(state = 'A')
|
580
|
+
@data_streams.select{|x| x.status == "#{status}"}
|
581
|
+
end
|
582
|
+
|
583
|
+
# The current daily load
|
584
|
+
#
|
585
|
+
# @return [Integer] the current daily load for the meter
|
586
|
+
def current_daily_load
|
587
|
+
active_data_streams = data_streams_by_status()
|
588
|
+
current_daily_load = 0 + data_streams_by_status.map{|x| x.averaged_daily_load.to_i }.reduce(:+)
|
589
|
+
end
|
560
590
|
|
561
591
|
# A function to validate the NMI provided
|
562
592
|
#
|
data/lib/aemo/version.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright 2014 Joel Courtney
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
# Deal with AEMO data - nicely!
|
18
|
+
#
|
19
|
+
# The namespace for code of aemo gem
|
20
|
+
#
|
21
|
+
#
|
22
|
+
# @author Joel Courtney <euphemize@gmail.com>
|
23
|
+
module AEMO
|
24
|
+
# aemo version
|
25
|
+
VERSION = '0.1.7'
|
26
|
+
|
27
|
+
# aemo version split amongst different revisions
|
28
|
+
MAJOR_VERSION, MINOR_VERSION, REVISION = VERSION.split('.').map(&:to_i)
|
29
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aemo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Courtney
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/aemo/nem13.rb
|
87
87
|
- lib/aemo/nmi.rb
|
88
88
|
- lib/aemo/region.rb
|
89
|
+
- lib/aemo/version.rb
|
89
90
|
- lib/data/TNI-MLF-Codes.csv
|
90
91
|
- lib/data/aemo-dlf-dnsp.csv
|
91
92
|
- lib/data/aemo-dlf.json
|