Class: GreenButtonClasses::IntervalBlock
Instance Attribute Summary collapse
#href, #id, #other_related, #parent_href, #published, #related_hrefs, #title, #updated
Instance Method Summary
collapse
#add_related, #assign_rules, #find_by_href, #find_related_entries, #initialize, #parse_related_entry
Instance Attribute Details
#meter_reading ⇒ Object
Returns the value of attribute meter_reading.
264
265
266
|
# File 'lib/greenbutton/gb_classes.rb', line 264
def meter_reading
@meter_reading
end
|
Instance Method Details
#additional_rules ⇒ Object
270
271
272
273
274
275
|
# 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 ⇒ Object
311
312
313
|
# File 'lib/greenbutton/gb_classes.rb', line 311
def average_interval_value
total/n_readings
end
|
#doc ⇒ Object
277
278
279
|
# File 'lib/greenbutton/gb_classes.rb', line 277
def doc
self.meter_reading.doc
end
|
#end_time ⇒ Object
281
282
283
|
# File 'lib/greenbutton/gb_classes.rb', line 281
def end_time
self.start_time + self.duration
end
|
#n_readings ⇒ Object
315
316
317
|
# File 'lib/greenbutton/gb_classes.rb', line 315
def n_readings
@entry_xml.xpath('.//IntervalReading').length
end
|
#power_of_ten_multiplier ⇒ Object
285
286
287
|
# 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) ⇒ Object
266
267
268
|
# File 'lib/greenbutton/gb_classes.rb', line 266
def pre_rule_assignment(parent)
self.meter_reading = parent
end
|
#reading_at_time(time) ⇒ Object
289
290
291
292
293
294
295
296
297
298
|
# 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) ⇒ Object
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
|
# 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 ⇒ Object
304
305
306
307
308
309
|
# File 'lib/greenbutton/gb_classes.rb', line 304
def total
if @total.nil?
@total = sum
end
@total
end
|
#value_at_time(time) ⇒ Object
300
301
302
|
# File 'lib/greenbutton/gb_classes.rb', line 300
def value_at_time(time)
reading_at_time(time).value*10**power_of_ten_multiplier
end
|