52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
from ..physical.Dumpload import Dumpload
|
|
from ..virtual.MetMast import MetMast
|
|
from datetime import datetime
|
|
|
|
class FlexHouse_sim(Dumpload):
|
|
def __init__(self, which='localhost'):
|
|
super().__init__(which)
|
|
self.internal_temperature = 20 # Celsius
|
|
self.time = datetime.now()
|
|
self.mt = MetMast()
|
|
|
|
# The variables below are only relevant for implementing an 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/Cst
|
|
#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:
|
|
self.startLoad()
|
|
power_reference = 10.0
|
|
if power_reference < 0:
|
|
raise ValueError("Negative power means production")
|
|
if power_reference == 0:
|
|
self.stopLoad()
|
|
self.setPowerSetPoint(power_reference)
|
|
|
|
def step_sim(self):
|
|
time_now = datetime.now()
|
|
time_delta = (time_now - self.time).total_seconds()
|
|
T_ambient = self.mt.getTemperature()
|
|
irradiance = self.mt.getInsolation()/1000
|
|
|
|
# Below is a simple house model. A more complex one can be implemented
|
|
self.internal_temperature += 0.5*(self.getActivePower().value/3600*time_delta) - 0.00025*((self.internal_temperature-T_ambient)*time_delta) + 0.001*irradiance*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
|
|
|
|
|
|
|