class GreenButtonClasses::IntervalBlock
Attributes
meter_reading[RW]
Public Instance Methods
additional_rules()
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 270 def additional_rules [ Rule.new(:start_time, './/interval/start', :unix_time), Rule.new(:duration, './/interval/duration', :integer) ] end
average_interval_value()
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 311 def average_interval_value total/n_readings end
doc()
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 277 def doc self.meter_reading.doc end
end_time()
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 281 def end_time self.start_time + self.duration end
n_readings()
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 315 def n_readings @entry_xml.xpath('.//IntervalReading').length end
power_of_ten_multiplier()
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 285 def power_of_ten_multiplier self.meter_reading.reading_type.power_of_ten_multiplier end
pre_rule_assignment(parent)
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 266 def pre_rule_assignment(parent) self.meter_reading = parent end
reading_at_time(time)
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 289 def reading_at_time(time) if (time >= self.start_time) && (time < end_time) @entry_xml.xpath('.//IntervalReading').each do |interval_reading| intervalReading = IntervalReading.new(interval_reading) if (intervalReading.start_time <= time) && (intervalReading.end_time > time) return intervalReading end end end end
sum(starttime=nil, endtime=nil)
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 319 def sum(starttime=nil, endtime=nil) starttime = starttime.nil? ? self.start_time : starttime.utc endtime = endtime.nil? ? self.end_time : endtime.utc sum = 0 @entry_xml.xpath('.//IntervalReading').each do |interval_reading| intervalReading = IntervalReading.new(interval_reading) if intervalReading.start_time >= starttime && intervalReading.start_time < endtime if intervalReading.end_time <= endtime sum += intervalReading.value else ratio = (intervalReading.end_time.to_i - endtime.to_i)/intervalReading.duration sum += ratio*intervalReading.value break end end end sum*10**power_of_ten_multiplier end
total()
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 304 def total if @total.nil? @total = sum end @total end
value_at_time(time)
click to toggle source
# File lib/greenbutton/gb_classes.rb, line 300 def value_at_time(time) reading_at_time(time).value*10**power_of_ten_multiplier end