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