38 lines
879 B
Ruby
38 lines
879 B
Ruby
class Battery
|
|
|
|
attr_accessor :battery_kwh, :battery_max_kwh
|
|
|
|
def initialize(battery_capacity=10.0)
|
|
@battery_kwh = 0.0
|
|
@battery_max_kwh = battery_capacity
|
|
end
|
|
|
|
def charge(kwh)
|
|
return 0.0 if kwh.nil?
|
|
if battery_kwh + kwh <= battery_max_kwh
|
|
@battery_kwh += kwh.to_f
|
|
#p "Battery is now at %s kwh" % battery_kwh
|
|
return kwh
|
|
else
|
|
old_kwh = battery_kwh
|
|
battery_kwh = battery_max_kwh
|
|
#p "Battery is now at %s kwh" % battery_kwh
|
|
return (battery_max_kwh-old_kwh)
|
|
end
|
|
end
|
|
|
|
def discharge(kwh)
|
|
return 0.0 if kwh.nil?
|
|
if battery_kwh > kwh.to_f
|
|
@battery_kwh -= kwh.to_f
|
|
#p "Battery is now at %s kwh" % battery_kwh
|
|
return kwh
|
|
else
|
|
old_kwh = battery_kwh
|
|
battery_kwh = 0.0
|
|
#p "Battery is now at %s kwh" % battery_kwh
|
|
return old_kwh
|
|
end
|
|
end
|
|
end
|