86 lines
3.0 KiB
Python
86 lines
3.0 KiB
Python
from ..core.SyslabUnit import SyslabUnit
|
|
from ..core.datatypes.FlowBatteryState import FlowBatteryState
|
|
from ..core.datatypes.BattOpMode import BattOpMode
|
|
|
|
class Battery(SyslabUnit):
|
|
"""The Battery class represents a battery in SYSLAB.
|
|
The Battery class is instantiated using a string with the unique name of the battery, ie. 'which'
|
|
|
|
A full list of available batteries can be found by calling 'Battery.getAvailableBatteries()'
|
|
|
|
Alternatively, the user may specify a host and port to connect to via the *host* and *port* arguments.
|
|
"""
|
|
|
|
__BATTERIES = {
|
|
'batt1': ('syslab-12.syslab.dk', '8080', 'batt1'),
|
|
'battemu': ('syslab-31.syslab.dk', '8080', 'battemu'),
|
|
'battfh1': ('syslab-s01.syslab.dk', '8080', 'battfh1'),
|
|
'simlab-15': ('192.168.0.115', '8080', 'batt1'),
|
|
'vbatt1': ('simlab-12', '8080', 'batt1'),
|
|
}
|
|
|
|
def __init__(self, which=None, host=None, port=None, unitname=None):
|
|
|
|
baseurl = 'http://{host}:{port}/typebased_WebService_Battery/VRBBatteryWebService/{unit_name}/'
|
|
super().__init__(
|
|
baseurl=baseurl,
|
|
which=which,
|
|
units=self.__BATTERIES,
|
|
host=host,
|
|
port=port,
|
|
unit_name=unitname,
|
|
unit_type="Battery")
|
|
|
|
def startBattery(self):
|
|
return self._request_resource('startBattery', (), 'put')
|
|
|
|
def stopBattery(self):
|
|
return self._request_resource('stopBattery', (), 'put')
|
|
|
|
def getActivePower(self):
|
|
return self._request_resource('getACActivePower')
|
|
|
|
def setActivePower(self, setPoint):
|
|
|
|
P_UpperLimit = 15.0
|
|
P_LowerLimit = -15.0
|
|
|
|
return self._request_resource('setP', (max(P_LowerLimit, min(setPoint, P_UpperLimit))), 'put')
|
|
|
|
def getReactivePower(self):
|
|
return self._request_resource('getACReactivePower')
|
|
|
|
def setReactivePower(self, setPoint):
|
|
return self._request_resource('setQ', (setPoint), 'put')
|
|
|
|
def getFrequency(self):
|
|
return self._request_resource('getACFrequency')
|
|
|
|
def getRemainingFloodTime(self):
|
|
return min(self._request_resource('getRemainingFloodTime'), self._request_resource('getRemainingDrainTime'))
|
|
|
|
def getCurrentOperatingMode(self):
|
|
return self._request_resource('getCurrentOperatingMode')
|
|
|
|
def getCurrentOperatingState(self):
|
|
return self._request_resource('getCurrentOperatingState')
|
|
|
|
def setOperatingMode(self, mode):
|
|
return self._request_resource('setOperatingMode', (), 'put', BattOpMode(mode).parseToJSON())
|
|
|
|
def getSOC(self):
|
|
return self._request_resource('getSOC')
|
|
|
|
def getRatedActivePower(self):
|
|
return self._request_resource('getRatedP')
|
|
|
|
def getRatedReactivePower(self):
|
|
return self._request_resource('getRatedQ')
|
|
|
|
def getName(self):
|
|
return self._request_resource('getBatteryName')
|
|
|
|
@staticmethod
|
|
def getAvailableBatteries():
|
|
return list(Battery.__BATTERIES.keys())
|