53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
from ..physical.Battery import Battery
|
|
from datetime import datetime
|
|
|
|
|
|
class FlexHouse_sim_batt(Battery):
|
|
def __init__(self, which='localhost'):
|
|
super().__init__(which)
|
|
self.internal_temperature = 20 # Celsius
|
|
self.time = datetime.now()
|
|
self.loss = 1 # kW
|
|
if self.getRemainingFloodTime() == 300:
|
|
#print('Battery is not started. I will initiate start sequence, please retry in 5 minutes')
|
|
self.startBattery()
|
|
raise SystemError('Battery is not started. I will initiate start sequence, please retry in 5 minutes')
|
|
if (self.getRemainingFloodTime() > 1) and (self.getRemainingFloodTime() < 300):
|
|
#print('Battery is not ready yet')
|
|
raise SystemError('Battery is not ready yet, please wait {} seconds'.format(self.getRemainingFloodTime()))
|
|
|
|
# The variables below are only relevant for implementing and advanced house model.
|
|
#self.__Th = 20 # internal heater state
|
|
#self.__Te = 19 # envelope state
|
|
#self.__Aw = 14.351 # m^2
|
|
#self.__Ce = 4.741 # kWh/C
|
|
#self.__Ch = 0.00225 # kWh/C
|
|
#self.__Ci = 2.555 # kWh/C
|
|
#self.__Rea = 3.265 # C/kW
|
|
#self.__Rie = 0.817 # C/kW
|
|
#self.__Ria = 37.005 # C/kW
|
|
#self.__Rih = 140.44 # C/kW
|
|
|
|
def setPowerConsumption(self, power_reference):
|
|
if power_reference > 10:
|
|
power_reference = 10
|
|
if power_reference < 0:
|
|
raise ValueError("Negative power means production")
|
|
self.setActivePower(power_reference)
|
|
|
|
def step_sim(self):
|
|
time_now = datetime.now()
|
|
time_delta = (time_now - self.time).total_seconds()
|
|
# Below is a simple house model. A more complex one can be implemented
|
|
self.internal_temperature += 0.5*(self.getActivePower().value/3600*time_delta) - 2*(self.loss/3600*time_delta)
|
|
#self.__Th = 20 # internal heater state
|
|
#self.__Te = 19 # envelope state
|
|
self.time = time_now
|
|
|
|
def getTemperature(self):
|
|
self.step_sim()
|
|
return self.internal_temperature
|
|
|
|
|
|
|