46045-syslab/syslab-python/syslab/physical/SwitchBoard.py

145 lines
5.5 KiB
Python

from ..core.SyslabUnit import SyslabUnit
class SwitchBoard(SyslabUnit):
"""
The SwitchBoard class represents a SwitchBoard in SYSLAB.
The SwitchBoard class is instantiated using a string with the unique name of the switchboard, ie. 'which'
A full list of available switchboards can be found by calling 'SwitchBoard.getAvailableSwitchBoards()'
Alternatively, the user may specify a host and port to connect to via the *host* and *port* arguments.
"""
__SWITCH_BOARDS = {
'319-2':('syslab-01.syslab.dk', '8080', '319-2'),
'319-3':('syslab-52.syslab.dk', '8080', '319-3'),
'117-2':('syslab-11.syslab.dk', '8080', '117-2'),
'117-4':('syslab-11.syslab.dk', '8080', '117-4'),
'117-5':('syslab-11.syslab.dk', '8080', '117-5'),
'117-6':('syslab-26.syslab.dk', '8080', '117-6'),
'715-2':('syslab-09.syslab.dk', '8080', '715-2'),
'716-2':('syslab-29.syslab.dk', '8080', '716-2'),
'simlab-00': ('192.168.0.1', '8080', '319-2'),
'simlab-10': ('192.168.0.2', '8080', '319-2'),
'simlab-20': ('192.168.0.3', '8080', '319-2'),
'vswitchboard': ('simlab-01', '8080', '319-2')
}
def __init__(self, which=None, host=None, port=None, unitname=None):
baseurl = 'http://{host}:{port}/typebased_WebService_Substation/StandardSubstationWebService/{unit_name}/'
super().__init__(
baseurl=baseurl,
which=which,
units=self.__SWITCH_BOARDS,
host=host,
port=port,
unit_name=unitname,
unit_type="SwitchBoard")
def getName(self):
return self._request_resource('getSwitchboardName')
def getActivePower(self, instrName):
return self._request_resource('getActivePower', instrName)
def getPhaseActivePower(self, instrName):
return self._request_resource('getPhaseActivePower', instrName)
def getReactivePower(self, instrName):
return self._request_resource('getReactivePower', instrName)
def getPhaseReactivePower(self, instrName):
return self._request_resource('getPhaseReactivePower', instrName)
def getApparentPower(self, instrName):
return self._request_resource('getApparentPower', instrName)
def getPhaseApparentPower(self, instrName):
return self._request_resource('getPhaseApparentPower', instrName)
def getPowerFactor(self, instrName):
return self._request_resource('getPowerFactor', instrName)
def getPhasePowerFactor(self, instrName):
return self._request_resource('getPhasePowerFactor', instrName)
def getActiveEnergyExport(self, instrName):
return self._request_resource('getActiveEnergyExport', instrName)
def getActiveEnergyImport(self, instrName):
return self._request_resource('getActiveEnergyImport', instrName)
def getReactiveEnergyExport(self, instrName):
return self._request_resource('getReactiveEnergyExport', instrName)
def getReactiveEnergyImport(self, instrName):
return self._request_resource('getReactiveEnergyImport', instrName)
def isAuthenticated(self):
return self._request_resource('isAuthenticated')
def getBreakerState(self, breakerName):
return self._request_resource('getBreakerState', breakerName)
def getFrequency(self, instrName):
return self._request_resource('getFrequency', instrName)
def getBayNames(self):
return self._request_resource('getBayNames')
def getBreakerName(self, busbarName, bayName):
return self._request_resource('getBreakerName', (busbarName, bayName))
def getInstrumentNames(self, bayName):
return self._request_resource('getInstrumentNamesPerBay', bayName)
def getBusbarNames(self):
return self._request_resource('getBusbarNames')
def getInterphaseVoltage(self, instrName):
return self._request_resource('getInterphaseVoltage', instrName)
def getInterphaseVoltages(self, instrName):
return self._request_resource('getInterphaseVoltages', instrName)
def getPhaseVoltage(self, instrName):
return self._request_resource('getPhaseVoltage', instrName)
def getPhaseVoltages(self, instrName):
return self._request_resource('getPhaseVoltages', instrName)
def getVoltageImbalance(self, instrName):
return self._request_resource('getVoltageImbalance', instrName)
def getPhaseCurrent(self, instrName):
return self._request_resource('getPhaseCurrent', instrName)
def getNeutralCurrent(self, instrName):
return self._request_resource('getNeutralCurrent', instrName)
def getPhaseCurrents(self, instrName):
return self._request_resource('getPhaseCurrents', instrName)
def getCurrentImbalance(self, instrName):
return self._request_resource('getCurrentImbalance', instrName)
def authenticate(self, user, password):
return self._request_resource('authenticate', (user, password), 'put')
def logout(self):
return self._request_resource('logout', (), 'put')
def closeBreaker(self, breakerName):
return self._request_resource('closeBreaker', breakerName, 'put')
def openBreaker(self, breakerName):
return self._request_resource('openBreaker', (breakerName), 'put')
@staticmethod
def getAvailableSwitchBoards():
return list(SwitchBoard.__SWITCH_BOARDS.keys())