46045-syslab/syslab-python/syslab/virtual/WaterBoiler.py

29 lines
840 B
Python

from ..physical.Dumpload import Dumpload
from datetime import datetime
class WaterBoiler(Dumpload):
def __init__(self, which='localhost'):
super().__init__(which)
self.energy_state = 10 # kWh
self.energy_max = 15
self.time = datetime.now()
self.loss = 1 # kW
def step_sim(self):
time_now = datetime.now()
time_delta = (time_now - self.time).total_seconds()
power = self.getActivePower().value
self.energy_state += (power - self.loss)/3600*time_delta
self.time = time_now
def getSOC(self):
self.step_sim()
if self.energy_state > self.energy_max:
self.energy_state = self.energy_max
elif self.energy_state < 0:
self.energy_state = 0.0
return self.energy_state