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())