From 16d4b96c558aeba0c27b8fdb77dae9e8a2d7f8ca Mon Sep 17 00:00:00 2001 From: DBras Date: Thu, 13 Jun 2024 10:47:31 +0200 Subject: [PATCH] empty branch --- 2024_config_D3_Demo.pdf | Bin 305487 -> 0 bytes data/measurements/dummy_file | 1 - data/measurements/measurements.json | 2450 ----------------- data/setpoints/dummy_file | 1 - demo_datalogger.py | 47 - demo_plotter.py | 139 - requirements.txt | 12 - syslab-python/.gitignore | 109 - syslab-python/README.md | 27 - syslab-python/example.py | 11 - syslab-python/notes.md | 99 - syslab-python/requirements.txt | 2 - syslab-python/setup.cfg | 10 - syslab-python/setup.py | 36 - syslab-python/syslab/__init__.py | 44 - syslab-python/syslab/comm/LogUtils.py | 59 - syslab-python/syslab/comm/__init__.py | 2 - syslab-python/syslab/comm/logrec.py | 80 - syslab-python/syslab/config.py | 19 - syslab-python/syslab/core/SyslabUnit.py | 306 -- syslab-python/syslab/core/__init__.py | 1 - .../syslab/core/datatypes/BattOpMode.py | 47 - .../core/datatypes/CommonDeviceConfig.py | 5 - .../syslab/core/datatypes/CompositeBoolean.py | 68 - .../core/datatypes/CompositeMeasurement.py | 75 - .../syslab/core/datatypes/CompositeStatus.py | 5 - .../syslab/core/datatypes/ConverterTypes.py | 132 - .../syslab/core/datatypes/EVSEState.py | 83 - .../syslab/core/datatypes/FlowBatteryState.py | 88 - .../core/datatypes/HeatCirculationPumpMode.py | 89 - .../datatypes/HeatCirculationPumpState.py | 83 - .../syslab/core/datatypes/Identifiers.py | 73 - .../syslab/core/datatypes/__init__.py | 16 - syslab-python/syslab/get_flexhouse.py | 27 - syslab-python/syslab/physical/B2BConverter.py | 258 -- syslab-python/syslab/physical/Battery.py | 85 - .../syslab/physical/DieselGenerator.py | 100 - syslab-python/syslab/physical/Dumpload.py | 112 - syslab-python/syslab/physical/EVSE.py | 213 -- .../syslab/physical/HeatSwitchBoard.py | 164 -- syslab-python/syslab/physical/MeteoMast.py | 72 - .../syslab/physical/Photovoltaics.py | 61 - syslab-python/syslab/physical/SwitchBoard.py | 144 - syslab-python/syslab/physical/WindTurbine.py | 36 - syslab-python/syslab/physical/__init__.py | 10 - .../syslab/virtual/FlexHouse_real.py | 47 - syslab-python/syslab/virtual/FlexHouse_sim.py | 51 - .../syslab/virtual/FlexHouse_sim_batt.py | 52 - syslab-python/syslab/virtual/MetMast_wb.py | 40 - syslab-python/syslab/virtual/WaterBoiler.py | 28 - syslab-python/syslab/virtual/__init__.py | 1 - syslab-python/syslab/whiteboard/CommModule.py | 143 - .../syslab/whiteboard/WhiteBoardEntry.py | 21 - syslab-python/syslab/whiteboard/Whiteboard.py | 23 - syslab-python/syslab/whiteboard/__init__.py | 3 - .../syslab_ctrl_log_SP_1687041679.json | 0 syslab-python/tests/__init__.py | 0 syslab-python/tests/runall.py | 0 util.py | 5 - 59 files changed, 5915 deletions(-) delete mode 100644 2024_config_D3_Demo.pdf delete mode 100644 data/measurements/dummy_file delete mode 100644 data/measurements/measurements.json delete mode 100644 data/setpoints/dummy_file delete mode 100644 demo_datalogger.py delete mode 100644 demo_plotter.py delete mode 100644 requirements.txt delete mode 100644 syslab-python/.gitignore delete mode 100644 syslab-python/README.md delete mode 100644 syslab-python/example.py delete mode 100644 syslab-python/notes.md delete mode 100644 syslab-python/requirements.txt delete mode 100644 syslab-python/setup.cfg delete mode 100644 syslab-python/setup.py delete mode 100644 syslab-python/syslab/__init__.py delete mode 100644 syslab-python/syslab/comm/LogUtils.py delete mode 100644 syslab-python/syslab/comm/__init__.py delete mode 100644 syslab-python/syslab/comm/logrec.py delete mode 100644 syslab-python/syslab/config.py delete mode 100644 syslab-python/syslab/core/SyslabUnit.py delete mode 100644 syslab-python/syslab/core/__init__.py delete mode 100644 syslab-python/syslab/core/datatypes/BattOpMode.py delete mode 100644 syslab-python/syslab/core/datatypes/CommonDeviceConfig.py delete mode 100644 syslab-python/syslab/core/datatypes/CompositeBoolean.py delete mode 100644 syslab-python/syslab/core/datatypes/CompositeMeasurement.py delete mode 100644 syslab-python/syslab/core/datatypes/CompositeStatus.py delete mode 100644 syslab-python/syslab/core/datatypes/ConverterTypes.py delete mode 100644 syslab-python/syslab/core/datatypes/EVSEState.py delete mode 100644 syslab-python/syslab/core/datatypes/FlowBatteryState.py delete mode 100644 syslab-python/syslab/core/datatypes/HeatCirculationPumpMode.py delete mode 100644 syslab-python/syslab/core/datatypes/HeatCirculationPumpState.py delete mode 100644 syslab-python/syslab/core/datatypes/Identifiers.py delete mode 100644 syslab-python/syslab/core/datatypes/__init__.py delete mode 100644 syslab-python/syslab/get_flexhouse.py delete mode 100644 syslab-python/syslab/physical/B2BConverter.py delete mode 100644 syslab-python/syslab/physical/Battery.py delete mode 100644 syslab-python/syslab/physical/DieselGenerator.py delete mode 100644 syslab-python/syslab/physical/Dumpload.py delete mode 100644 syslab-python/syslab/physical/EVSE.py delete mode 100644 syslab-python/syslab/physical/HeatSwitchBoard.py delete mode 100644 syslab-python/syslab/physical/MeteoMast.py delete mode 100644 syslab-python/syslab/physical/Photovoltaics.py delete mode 100644 syslab-python/syslab/physical/SwitchBoard.py delete mode 100644 syslab-python/syslab/physical/WindTurbine.py delete mode 100644 syslab-python/syslab/physical/__init__.py delete mode 100644 syslab-python/syslab/virtual/FlexHouse_real.py delete mode 100644 syslab-python/syslab/virtual/FlexHouse_sim.py delete mode 100644 syslab-python/syslab/virtual/FlexHouse_sim_batt.py delete mode 100644 syslab-python/syslab/virtual/MetMast_wb.py delete mode 100644 syslab-python/syslab/virtual/WaterBoiler.py delete mode 100644 syslab-python/syslab/virtual/__init__.py delete mode 100644 syslab-python/syslab/whiteboard/CommModule.py delete mode 100644 syslab-python/syslab/whiteboard/WhiteBoardEntry.py delete mode 100644 syslab-python/syslab/whiteboard/Whiteboard.py delete mode 100644 syslab-python/syslab/whiteboard/__init__.py delete mode 100644 syslab-python/syslab_ctrl_log_SP_1687041679.json delete mode 100644 syslab-python/tests/__init__.py delete mode 100644 syslab-python/tests/runall.py delete mode 100644 util.py diff --git a/2024_config_D3_Demo.pdf b/2024_config_D3_Demo.pdf deleted file mode 100644 index 9a5e13bc3c28a50bf757b0841f7806e95d0fb1ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305487 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 z 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

M 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 F=3.7) -- python-requests (>=2.18) -- python-bs4 (>= 4.7) - -## Installation - -To install the package in your local path, run - -```shell - python setup.py install -``` - -Alternatively, copy the `syslab` folder into your project directory. - -# Contributors - -- Anders Thavlov: Initial implementation -- Oliver Gehrke -- Daniel Esteban Morales Bondy -- Tue Vissing Jensen -- Federico Zarelli diff --git a/syslab-python/example.py b/syslab-python/example.py deleted file mode 100644 index ea97246..0000000 --- a/syslab-python/example.py +++ /dev/null @@ -1,11 +0,0 @@ -from syslab import SwitchBoard - -name = '319-2' -SB_connection = SwitchBoard(name) -print("Let's look at what is going on in the switchboard {}.".format(name)) - -for bay in range(SB_connection.getNumBays()): - print(SB_connection.getBayName(bay),' : ',SB_connection.getActivePower(bay)) - - - diff --git a/syslab-python/notes.md b/syslab-python/notes.md deleted file mode 100644 index 7065476..0000000 --- a/syslab-python/notes.md +++ /dev/null @@ -1,99 +0,0 @@ -# Notes on SOAP implementation - - - Units should reflect SOAP methods onto their own namespace (1) - - CompositeMeasurement should convert to/from SOAP - - Type checking via client.get\_type('ns0:compositeMeasurement').elements - - - -# Notes about this module - to be discussed - -SYSLAB\_Unit.py has a whole bunch of static methods - should these be split into a util library instead? -Generally, many places where static methods are used for things that should perhaps just be functions... - -The following files are empty: - - BattOpMode.py - - FlowBatteryState.py - - GaiaWindTurbine.py - - -To check the methods available, use, e.g.: -http://syslab-33.syslab.dk:8080/typebased_WebService_HeatSubstation/HeatSwitchboardWebService/716-h1/resourceNames - -To figure out this URL, look at software.xml for the corresponding machine, and use this template: - -http://(machineName).syslab.dk:(port)/(interfaceName)/(shortServerName)/(unitname)/resourceNames - -| field | corresponds to | notes | -| ----- | -------------- | ----- | -| machineName | N/A | Look this up on the wiki | -| port | N/A | Dynamically allocated, starting at 8080 - good luck! | -| interfaceName | typeBasedWebService, interfaceName | | -| shortServerName | typeBasedWebService, serverClass | Remove the "Server" at the end | -| unitname | dataLogger, unit | Also defined as "name" in hardware.xml | - - -------------------------- - - -SYSLAB COMMON -Broadcast event logger: - -Transcode to python: -https://git.elektro.dtu.dk/syslab/syslab-common/-/blob/master/src/main/java/risoe/syslab/comm/broadcast/BroadcastLogSender.java - -broadcast log sender -:: transcode the "send()" method to python. It byte-encodes the message for UDP. -Java: -send(String origin, byte[] origIP, long timestamp, int ploadType, String message, - int level, int flags, String[] tags) ------------- -Python: -----------. -def send(origin, origIP, timestamp, ploadType, message, level, flags, tags): - ploadbytes = message[:min(1024, len(message))].encode() - origbytes = origin[:min(32, len(origin))].encode() - tagbytes = tagsToBytes(tags, 256) - pktlen = 2 + 2 + 1 + len(origbytes) + 4 + 2 + 2 + 8 + 1 + 2 + len(ploadbytes) + len(tagbytes) - buf = bytearray(pktlen) - buf[0] = BroadcastLogConstants.BROADCASTLOG_PKTID >> 8 - buf[1] = BroadcastLogConstants.BROADCASTLOG_PKTID & 0xff - buf[2] = (pktlen >> 8) & 0xff - buf[3] = pktlen & 0xff - buf[4] = len(origbytes) - buf[5:5+len(origbytes)] = origbytes - writePtr = 5 + len(origbytes) - buf[writePtr:writePtr+4] = origIP - writePtr += 4 - buf[writePtr] = (level >> 8) & 0xff - buf[writePtr+1] = level & 0xff - buf[writePtr+2] = (flags >> 8) & 0xff - buf[writePtr+3] = flags & 0xff - for i in range(8): - buf[writePtr+7-i] = timestamp & 0xff - timestamp >>= 8 - writePtr += 8 - buf[writePtr] = ploadType & 0xff - buf[writePtr+1] = (len(ploadbytes) >> 8) & 0xff - buf[writePtr+2] = len(ploadbytes) & 0xff - buf[writePtr+3:writePtr+3+len(ploadbytes)] = ploadbytes - writePtr += len(ploadbytes) - buf[writePtr:writePtr+len(tagbytes)] = tagbytes - pack = n - pack = DatagramPacket(buf, len(buf), InetAddress.getByName("localhost"), 4445) - sock.send(pack) - - ------------- - -broadcast log receiver -+ needs a logger -listener ist interface for receiver - -gui wall (SYSLAB Userspacce) -broadcast log displet -https://git.elektro.dtu.dk/syslab/syslab-userspace/-/blob/master/src/main/java/risoe/syslab/gui/wall/displets/BroadcastLogDisplet.java -... maybe extend with simple log file writer. - - - - diff --git a/syslab-python/requirements.txt b/syslab-python/requirements.txt deleted file mode 100644 index 25cc339..0000000 --- a/syslab-python/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -requests >= 2.18 -beautifulsoup4 >= 3.7 \ No newline at end of file diff --git a/syslab-python/setup.cfg b/syslab-python/setup.cfg deleted file mode 100644 index 43f9acc..0000000 --- a/syslab-python/setup.cfg +++ /dev/null @@ -1,10 +0,0 @@ -[flake8] -ignore = -max-line-length = 79 -max-complexity = 11 - -[pytest] -addopts = --doctest-glob="*.rst" - -[wheel] -universal = True diff --git a/syslab-python/setup.py b/syslab-python/setup.py deleted file mode 100644 index 8c13382..0000000 --- a/syslab-python/setup.py +++ /dev/null @@ -1,36 +0,0 @@ -from setuptools import setup, find_packages - - -setup( - name='syslab', - version='0.3.0', - author='Tue Vissing Jensen', - author_email='tvjens at elektro.dtu.dk', - description=('SYSLAB webservice client library.'), - long_description=(''), - url='https://www.syslab.dk', - install_requires=[ - 'requests>=2.18', - 'beautifulsoup4>=3.7', - ], - packages=find_packages(exclude=['tests*']), - include_package_data=True, - entry_points={ - 'console_scripts': [ - ], - }, - classifiers=[ - 'Development Status :: 3 - Alpha', - 'Environment :: Console', - 'Intended Audience :: Science/Research', - 'License :: Other/Proprietary License', - 'Natural Language :: English', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Topic :: Scientific/Engineering', - 'Topic :: Software Development :: Libraries :: Python Modules', - ], -) diff --git a/syslab-python/syslab/__init__.py b/syslab-python/syslab/__init__.py deleted file mode 100644 index c7b2d33..0000000 --- a/syslab-python/syslab/__init__.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -SYSLAB library -~~~~~~~~~~~~~~~~~~~~~ - -SYSLAB is a Python 3 library for control and monitoring of units in SYSLAB. Usage of this library requires the running -computer to be located in the SYSLAB network, either physically or virtually, ie. using a VPN connection. - - -""" - -__title__ = 'syslab' -__version__ = '0.3.0' -__author__ = 'Anders Thavlov, Daniel Esteban Morales Bondy, Tue Vissing Jensen' - -__maintainer__ = 'Tue Vissing Jensen' -__license__ = '' -__copyright__ = 'DTU' - -# Raise error if we are not on Python 3 -import sys -if not (sys.version_info.major == 3 and sys.version_info.minor >= 5): - raise RuntimeError("Must be using at least Python 3.5") - -# DataTypes -from .core.datatypes import CompositeMeasurement -from .core.datatypes import CompositeBoolean - -# Physical units -from .physical import \ - SwitchBoard, \ - Dumpload, \ - Photovoltaics, \ - Battery, \ - HeatSwitchBoard, \ - WindTurbine, \ - DieselGenerator, \ - B2BConverter, \ - MeteoMast, \ - EVSE - -# Logging utilities -#from .comm.LogUtils import e \ No newline at end of file diff --git a/syslab-python/syslab/comm/LogUtils.py b/syslab-python/syslab/comm/LogUtils.py deleted file mode 100644 index b755d43..0000000 --- a/syslab-python/syslab/comm/LogUtils.py +++ /dev/null @@ -1,59 +0,0 @@ -############################################################### -# SYSLAB remote logging utilities v0.9 -# collect and record log events -# -# Author: Kai Heussen -# Date: 2023/06/18 -############################################################### -import logging -import logging.handlers -import time -import syslab.config as config - -event_log_formats = '%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(funcName)s - %(message)s' -simple_log_formats = '%(asctime)s - %(name)s - %(message)s' - -def setup_event_logger(loggername=config.EVLOG_NAME, host='localhost', port=config.REMOTE_PORT_EV, level=logging.INFO, formats=simple_log_formats): # UDP - handler1 = logging.handlers.DatagramHandler(config.REMOTE_IP_EV, config.REMOTE_PORT_EV) - handler2 = logging.handlers.DatagramHandler(host, port) - handler3 = logging.StreamHandler() - formatter = logging.Formatter(formats) - handler3.setFormatter(formatter) - loggr = logging.getLogger(loggername) - loggr.setLevel(level) - loggr.addHandler(handler1) - loggr.addHandler(handler2) - loggr.addHandler(handler3) - return loggr - - -def setup_local_logger(loggername=config.EVLOG_NAME, host='localhost', port=config.REMOTE_PORT_EV, level=logging.INFO, formats=simple_log_formats): # UDP - handler = logging.handlers.DatagramHandler(host, port) - formatter = logging.Formatter(formats) - handler.setFormatter(formatter) - loggr = logging.getLogger(loggername) - loggr.setLevel(level) - loggr.addHandler(handler) - return loggr - - -def setup_udp_logger(loggername=config.SPLOG_NAME, host=config.REMOTE_IP_SP, port=config.REMOTE_PORT_SP, level=logging.INFO, formats=config.LOG_FORMATS): # UDP - handler = logging.handlers.DatagramHandler(host, port) - formatter = logging.Formatter(formats) - handler.setFormatter(formatter) - loggr = logging.getLogger(loggername) - loggr.setLevel(level) - loggr.addHandler(handler) - return loggr - - -if __name__ == "__main__": - logging.basicConfig(level=logging.DEBUG, - format='%(asctime)s %(levelname)-8s %(message)s') - - # logging.getLogger().addHandler(logging.handlers.DatagramHandler('10.42.242.3', 51010)) - logger = setup_local_logger() - while True: - logger.debug("This shouldn't show up") - logger.info("This should show up") - time.sleep(3) diff --git a/syslab-python/syslab/comm/__init__.py b/syslab-python/syslab/comm/__init__.py deleted file mode 100644 index 0c228b5..0000000 --- a/syslab-python/syslab/comm/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -#from BroadcastLogger import BroadcastLogSender -#from LogUtils import setup_udp_logger \ No newline at end of file diff --git a/syslab-python/syslab/comm/logrec.py b/syslab-python/syslab/comm/logrec.py deleted file mode 100644 index 6f35820..0000000 --- a/syslab-python/syslab/comm/logrec.py +++ /dev/null @@ -1,80 +0,0 @@ -############################################################### -# SYSLAB remote logger v0.9 -# utility to display and record log events -# usage: move bash to target log directory, then call -# python /syslab/comm/logrec.py -# -# Author: Kai Heussen -# Date: 2023/06/18 -############################################################### -import pickle -import logging -import socket -from syslab import config -# import sys -from time import time -# from json import dump - -BASIC = True -FILE = True -FILE_RAW = False # TODO: write a JSON formatter - based on https://stackoverflow.com/questions/50144628/python-logging-into-file-as-a-dictionary-or-json - -logtype = "EV" -time=time() -logfile =f"syslab_{logtype}_log_{time:.00f}.txt" -logfile_raw =f"syslab_{logtype}_log_{time:.00f}.raw" # not yet json - -DEFAULT_PORT = config.REMOTE_PORT_SP if logtype == "SP" else config.REMOTE_PORT_EV - -port = DEFAULT_PORT - -#simple_formats = '%(asctime)s - %(name)s - %(message)s' -simple_formats = '%(asctime)s - %(module)s - %(message)s' -#formats='foo: %(levelname)s - %(module)s.%(funcName)s - %(message)s' -event_log_formatter = '%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(module)s - %(funcName)s - %(message)s' - -formats = simple_formats -formatter = logging.Formatter(formats) - -if BASIC: - logging.basicConfig(format=formats) -else: - handler = logging.StreamHandler() - handler.setLevel(logging.DEBUG) - handler.setFormatter(formatter) - logging.getLogger().addHandler(handler) - -if FILE: - handler = logging.FileHandler(logfile) - handler.setLevel(logging.INFO) - handler.setFormatter(formatter) - logging.getLogger().addHandler(handler) - - -logger = logging.getLogger() - -s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) -s.bind(('', port)) - -print(f'Listening for log records on port {port}...') -if FILE: - print(f'recording log entries in file: {logfile}') -if FILE_RAW: - print(f'recording raw log entries in file: {logfile_raw}') - -try: - while True: - d, _ = s.recvfrom(1024) - msg = pickle.loads(d[4:]) - logrec = logging.makeLogRecord(msg) - logger.handle(logrec) - if FILE_RAW: - with open(logfile_raw, 'a') as file: - # dump(logrec, file) # requires a JSON formatter - file.write(f'{logrec.__str__() }\n') # Write a newline for each measurement to make loading easier - #print(log) -finally: - s.close() - if FILE_RAW: - file.close() - diff --git a/syslab-python/syslab/config.py b/syslab-python/syslab/config.py deleted file mode 100644 index 3f2c2db..0000000 --- a/syslab-python/syslab/config.py +++ /dev/null @@ -1,19 +0,0 @@ -DEBUG = False -SPLOG_NAME = 'SetPointLogger' -EVLOG_NAME = 'EventLog' -REMOTE_LOGGER = True -REMOTE_IP_SP = '10.42.242.3' # UI Machine 03 -REMOTE_IP_EV = '10.42.242.3' # UI Machine 03 -REMOTE_PORT_SP = 51010 -REMOTE_PORT_EV = 51020 -LOCAL_IP = 'localhost' -LOCAL_PORT_SP = 51010 -LOCAL_PORT_EV = 51020 -LOCAL_LOGGER = False -LOG_FORMATS = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' # '%(asctime)s %(levelname)-8s %(message)s' -TEST_LOCAL = False -if TEST_LOCAL: - REMOTE_PORT_SP = LOCAL_PORT_SP - REMOTE_PORT_EV = LOCAL_PORT_EV - REMOTE_IP_SP = LOCAL_IP - REMOTE_IP_EV = LOCAL_IP diff --git a/syslab-python/syslab/core/SyslabUnit.py b/syslab-python/syslab/core/SyslabUnit.py deleted file mode 100644 index 5d7d832..0000000 --- a/syslab-python/syslab/core/SyslabUnit.py +++ /dev/null @@ -1,306 +0,0 @@ -from .datatypes import CompositeBoolean, BattOpMode, CompositeMeasurement -from .datatypes import FlowBatteryState, ConvState, ConvOpMode -from .datatypes import HeatCirculationPumpMode, HeatCirculationPumpState -import syslab.config as config - - -class SyslabUnit: - __HIDDEN_RESOURCES = { - 'authenticate': ('boolean', 'String', 'String'), - 'isAuthenticated': ('boolean',), - 'checkConnection': ('boolean',), - 'logout': ('void',)} - - def __init__(self, baseurl, units=None, which=None, host=None, port=None, unit_name=None, unit_type=""): - """ - Initialize a proxy to the given unit. - - :param baseurl: Example: 'http://{host}:{port}/typebased_WebService_Battery/VRBBatteryWebService/{unit_name}/' - :param units: dictionary of units to be loaded in the format {'which': ('host', 'port', 'unit_name')} - :param which: string indicating which unit we pick from _units_ - :param host: (optional) override host - :param port: (optional) override port - :param unit_name: (optional) override unit_name - :param unit_type: (optional) Used to indicate the type of the unit. - """ - - if units is None: - units = {} - - if which is not None: - if which not in units: - raise TypeError( - 'The {unit_type} should be one of: "{list_of_units}"'.format( - unit_type=unit_type, - list_of_units='", "'.join(units.keys()) - )) - else: - host, port, unit_name = units.get(which) - if host is not None: - host = host - if port is not None: - port = port - - assert host is not None, "When assigning custom port, host must not be None." - assert port is not None, "When assigning custom host, port must not be None." - assert unit_name is not None, "When assigning custom host and port, unit_name must not be None." - - url = baseurl.format(host=host, port=port, unit_name=unit_name) - print(url) - self._url = url - self._resources = parse_resources(url) - self._resources = {**self._resources, **SyslabUnit.__HIDDEN_RESOURCES} - # TODO: Do type checking on these types. Ignore for now - self._complex_arg_types = ['BattOpMode', 'CompositeMeasurement', 'HeatCirculationPumpMode'] - - - if config.REMOTE_LOGGER: - #import logger - if config.DEBUG: - print(f"Setting up remote logger with default IP: {config.REMOTE_IP} and port: {config.REMOTE_PORT}") - from uuid import uuid1, getnode - from ..comm.LogUtils import setup_udp_logger - self.__logger = setup_udp_logger(config.SPLOG_NAME) - self.__session_id = uuid1().__str__() - self.__host_id = getnode().__str__() - - # TODO: Set up local setpoints Logger - if config.LOCAL_LOGGER: - pass - - def __request_int(self, resource, method, args, body) -> int: - return int(send_request(self._url, resource, method, args, body)) - - def __request_float(self, resource, method, args, body) -> float: - return float(send_request(self._url, resource, method, args, body)) - - def __request_boolean(self, resource, method, args, body) -> bool: - return bool(send_request(self._url, resource, method, args, body)) - - def __request_string(self, resource, method, args, body) -> str: - return send_request(self._url, resource, method, args, body) - - def __request_void(self, resource, method, args, body) -> None: - send_request(self._url, resource, method, args, body) - - def __request_composite_boolean(self, resource, method, args, body) -> CompositeBoolean: - - if self.__get_resource_return_type(resource) == 'CompositeBoolean': - json_string = self.__request_string(resource, method, args, body) - result = CompositeBoolean.parseFromJSON(json_string) - else: - raise TypeError('Error: resource "{0}" does not return a CompositeBoolean.'.format(resource)) - - return result - - def __request_composite_measurement(self, resource, method, args, body) -> CompositeMeasurement: - - if self.__get_resource_return_type(resource) == 'CompositeMeasurement': - json_string = self.__request_string(resource, method, args, body) - result = CompositeMeasurement.parseFromJSON(json_string) - else: - raise TypeError('Error: resource "{0}" does not return a CompositeMeasurement.'.format(resource)) - - return result - - def _request_resource(self, resource, args=(), method='get', body=None, check_types=True): - if not type(resource) is str: - raise TypeError("Resource should be a string, found {0}.".format(type(resource))) - - if resource not in self._resources: - # print(resource) - # FIXME: Workaround for metmast, where string-based methods are suffixed by a '2' and int-based methods by a '1' - if not resource[-1] in ('1', '2'): - raise ValueError('Unknown resource: {0} - no such resource found for {1}'.format(resource, self._url)) - - if type(args) is int or type(args) is float or type(args) is str: - args = (args,) - - if config.DEBUG: - print("Resource: ", resource, " and args: ", args, "with method: ", method) - - if config.REMOTE_LOGGER and method == 'put': - logstr = f'SessionID:{self.__session_id}||SenderID:{self.__host_id}||Unit-URL:{self._url}||Setterfcn:{resource}||ArgValue:{args}' - self.__logger.info(logstr) - - return_type = self.__get_resource_return_type(resource) - self.__check_argument(resource, args) - result = None - - if check_types: - try: - if return_type == 'CompositeMeasurement': - result = self.__request_composite_measurement(resource, method, args, body) - elif return_type == 'CompositeBoolean': - result = self.__request_composite_boolean(resource, method, args, body) - elif return_type == 'String': - result = self.__request_string(resource, method, args, body) - elif return_type == 'int': - result = self.__request_int(resource, method, args, body) - elif return_type == 'boolean': - result = self.__request_boolean(resource, method, args, body) - elif return_type == 'float' or return_type == 'double': - result = self.__request_float(resource, method, args, body) - elif return_type == 'void': - self.__request_string(resource, method, args, body) - elif return_type == 'BattOpMode': - result = BattOpMode.parseFromJSON(self.__request_string(resource, method, args, body)) - elif return_type == 'FlowBatteryState': - result = FlowBatteryState.parseFromJSON(self.__request_string(resource, method, args, body)) - elif return_type == 'ConvState': - result = ConvState.parseFromJSON(self.__request_string(resource, method, args, body)) - elif return_type == 'EVSEState': - result = EVSEState.parseFromJSON(self.__request_string(resource, method, args, body)) - elif return_type == 'ConvOpMode': - result = ConvOpMode.parseFromJSON(self.__request_string(resource, method, args, body)) - elif return_type == 'HeatCirculationPumpMode': - result = HeatCirculationPumpMode.parseFromJSON(self.__request_string(resource, method, args, body)) - elif return_type == 'HeatCirculationPumpState': - result = HeatCirculationPumpState.parseFromJSON(self.__request_string(resource, method, args, body)) - elif return_type == 'WYEV' or return_type == 'WYEA' or return_type == 'DELV': - import json - result = json.loads(self.__request_string(resource, method, args, body)) - else: - raise TypeError( - 'TypeError: The return type {0} by {1} is unknown or not supported yet.'.format(return_type, - resource)) - except KeyError as e: - # raise e - raise ValueError('{0} - no such resource found for {1}'.format(resource, self._url)) - else: - import json - return_string = self.__request_string(resource, method, args, body) - try: - result = json.loads(return_string) - except RecursionError: - raise RecursionError( - "Maximum recursion depth exceeded while decoding " - "a JSON array from a unicode string. Length: {0}".format( - len(return_string))) - - return result - - def __get_resource_return_type(self, resource): - if not resource[-1] in ('1', '2'): - # FIXME: Workaround for metmast, where string-based methods are suffixed by a '2' and int-based methods by a '1' - return self._resources[resource][0] - else: - return self._resources[resource[:-1]][0] - - def __get_resource_argument_types(self, resource): - if not resource[-1] in ('1', '2'): - # FIXME: Workaround for metmast, where string-based methods are suffixed by a '2' and int-based methods by a '1' - return self._resources[resource][1:] - else: - return self._resources[resource[:-1]][1:] - - def __check_argument(self, resource, args): - arg_types = self.__get_resource_argument_types(resource) - try: - # TODO Ignore complex arguments (for now) - for complex_arg_type in self._complex_arg_types: - if complex_arg_type in arg_types: - return - - if len(args) == len(arg_types): - for arg, arg_type in zip(args, arg_types): - - if arg_type == 'String' and type(arg) is not str: - raise TypeError() - elif arg_type == 'int' and type(arg) is not int: - raise TypeError() - elif (arg_type == 'float' or arg_type == 'double') and type(arg) is not float and type( - arg) is not int: - raise TypeError() - else: - raise TypeError() - - except TypeError: - raise TypeError( - 'The resource "{0}" requires exactly {1} argument(s) of type {2}.'.format(resource, len(arg_types), - arg_types)) - - -def parse_resources(url): - import re - from ast import literal_eval - result = {} - resources = send_request(url, 'resourceNames', 'get') - resources = literal_eval(resources) - - for resource in resources: - try: - # TODO - handle java arrays, ie, [] - m = re.match("(\w+)\[?\]? (\w+)(\([\w ,]*\))?", resource).groups() - except AttributeError as e: - print(e) - continue - args = '' - - if m[2] is not None: - args = tuple(m[2].replace(' ', '').replace('(', '').replace(')', '').split(',')) - result[m[1]] = (m[0],) + args - else: - result[m[1]] = (m[0],) - if config.DEBUG: - print(f'Key: {m[1]} - {m[0]} -- {args}') - - return result - - -def send_request(url, resource, method, args=None, body=None): - from requests import request - from requests.exceptions import ConnectionError, RequestException - - if not type(url) is str: - raise TypeError('URL should be a string, found {0}'.format(type(url))) - if not type(resource) is str: - raise TypeError('URL should be a string, found {0}'.format(type(resource))) - - kwargs = {} - kwargs.setdefault('allow_redirects', True) - kwargs.setdefault('headers', {'accept': 'application/json', 'content-type': 'application/json'}) - - if not url.endswith('/'): - url += '/' - - full_url = url + resource + '/' - - if args is not None and len(args) > 0: - full_url += '/'.join(tuple(str(x) for x in args)) - - if config.DEBUG: - print(f'Calling: {full_url}') - - try: - response = request(method, full_url, data=body, **kwargs) - except ConnectionError as e: - print('Unable to connect to host: {0}.'.format(url)) - raise e - except RequestException as e: - print('Request error from host: {0}.'.format(full_url)) - raise e - - if 200 <= response.status_code < 300: - result = response.text - elif response.status_code == 404: - raise ConnectionError( - 'Resource not found on host or arguments are not formatted correctly: {0}'.format(response.text)) - elif response.status_code == 405: - raise ConnectionError('Method not allowed on host: \n {0}'.format(response.text)) - elif response.status_code == 500: - from pprint import pprint - # TODO: Handle exception - print('Exception on server:') - pprint(response.json()) - raise - else: - raise ConnectionError( - 'Unable to successfully connect to host. Returned with HTTP status code {0}.\n Content: {1}'.format( - response.status_code, response.text)) - - if config.DEBUG: - print(f'Succesfully called {full_url}') - print(f'Returned: {result}') - - return result diff --git a/syslab-python/syslab/core/__init__.py b/syslab-python/syslab/core/__init__.py deleted file mode 100644 index 1e136c6..0000000 --- a/syslab-python/syslab/core/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import * diff --git a/syslab-python/syslab/core/datatypes/BattOpMode.py b/syslab-python/syslab/core/datatypes/BattOpMode.py deleted file mode 100644 index 285a31b..0000000 --- a/syslab-python/syslab/core/datatypes/BattOpMode.py +++ /dev/null @@ -1,47 +0,0 @@ - -class BattOpMode: - - _OPMODES = { - 0: 'BATT_UNKNOWN', - 1: 'BATT_AUTO', - 2: 'BATT_AUTO_SUBMODE1', - 3: 'BATT_AUTO_SUBMODE2', - 4: 'BATT_AUTO_SUBMODE3', - 5: 'BATT_AUTO_SUBMODE4', - 6: 'BATT_MANUAL', - 7: 'BATT_OFF', - 8: 'BATT_NOBMS', - 9: 'BATT_WITHBMS', } - - def __init__(self, mode): - assert mode in BattOpMode.__OPMODES - self._mode = mode - - @property - def mode(self): - return self._mode - - def modeAsString(self): - return BattOpMode.__OPMODES[self.mode] - - def __str__(self): - return 'BattOpMode: {0} ({1})'.format(self.mode, BattOpMode.__OPMODES[self.mode]) - - def parseToJSON(self): - from json import dumps - jsonObj = {}; - jsonObj['mode'] = self.mode; - return dumps(jsonObj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - if not type(jsonString) is str: raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - # result = None ## Appears unused - - try: - jsonObj = loads(jsonString) - return BattOpMode(jsonObj.get('mode')) - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(jsonString)) - raise e diff --git a/syslab-python/syslab/core/datatypes/CommonDeviceConfig.py b/syslab-python/syslab/core/datatypes/CommonDeviceConfig.py deleted file mode 100644 index 09fcbd2..0000000 --- a/syslab-python/syslab/core/datatypes/CommonDeviceConfig.py +++ /dev/null @@ -1,5 +0,0 @@ - - -# TODO: Implement -class CommonDeviceConfig: - pass diff --git a/syslab-python/syslab/core/datatypes/CompositeBoolean.py b/syslab-python/syslab/core/datatypes/CompositeBoolean.py deleted file mode 100644 index 4caa4f9..0000000 --- a/syslab-python/syslab/core/datatypes/CompositeBoolean.py +++ /dev/null @@ -1,68 +0,0 @@ -class CompositeBoolean: - def __init__(self, value, timestampMicros, timePrecision=0, quality=0, validity=0, source=0): - self._value = value - self._timestampMicros = timestampMicros - self._timePrecision = timePrecision if timePrecision != None else 0 - self._quality = quality if quality != None else 0 - self._validity = validity if validity != None else 0 - self._source = source if source != None else 0 - - @property - def value(self): - return self._value - - @property - def timestampMicros(self): - return self._timestampMicros - - @property - def timePrecision(self): - return self._timePrecision - - @property - def quality(self): - return self._quality - - @property - def validity(self): - return self._validity - - @property - def source(self): - return self._source - - def __repr__(self): - return "{0}(".format(self.__class__.__name__) + \ - "{0!r}, {1!r}, ".format(self._value, self._timestampMicros) + \ - "{0!r}, {1!r}, ".format(self._timePrecision, self._quality) + \ - "{0!r}, {1!r})".format(self._validity, self._source) - - def __str__(self): - from datetime import datetime - return 'CompositeBoolean: {0} (@time: {1} UTC) '.format(self.value, datetime.utcfromtimestamp(self.timestampMicros/1000000)) - - def parseToJSON(self): - from json import dumps - jsonObj = {}; - jsonObj['value'] = self.value; - jsonObj['timestampMicros'] = self.timestampMicros; - jsonObj['timePrecision'] = self.timePrecision - jsonObj['quality'] = self.quality - jsonObj['validity'] = self.validity - jsonObj['source'] = self.source; - return dumps(jsonObj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - - if not type(jsonString) is str: raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - try: - jsonObj = loads(jsonString) - result = CompositeBoolean(jsonObj.get('value'), jsonObj.get('timestampMicros'), - jsonObj.get('timePrecision'), - jsonObj.get('quality'), jsonObj.get('validity'), jsonObj.get('source')) - return result - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(jsonString)) - raise e diff --git a/syslab-python/syslab/core/datatypes/CompositeMeasurement.py b/syslab-python/syslab/core/datatypes/CompositeMeasurement.py deleted file mode 100644 index 76a5263..0000000 --- a/syslab-python/syslab/core/datatypes/CompositeMeasurement.py +++ /dev/null @@ -1,75 +0,0 @@ -MICROS_PER_SECOND = 1000000 - -def none_to_zero(x): - if x is None: - return 0 - return x - -class CompositeMeasurement: - def __init__(self, value, timestampMicros, timePrecision=0, quality=0, validity=0, source=0): - self._value = value - self._timestampMicros = timestampMicros - self._timePrecision = none_to_zero(timePrecision) - self._quality = quality if quality != None else 0 - self._validity = validity if validity != None else 0 - self._source = source if source != None else 0 - - @property - def value(self): - return self._value - - @property - def timestampMicros(self): - return self._timestampMicros - - @property - def timePrecision(self): - return self._timePrecision - - @property - def quality(self): - return self._quality - - @property - def validity(self): - return self._validity - - @property - def source(self): - return self._source - - def __str__(self): - from datetime import datetime - return 'CompositeMeasurement: {0} (@time: {1})'.format(self.value, datetime.fromtimestamp(self.timestampMicros/MICROS_PER_SECOND)) - - def __repr__(self): - return "{0}(".format(self.__class__.__name__) + \ - "{0!r}, {1!r}, ".format(self._value, self._timestampMicros) + \ - "{0!r}, {1!r}, ".format(self._timePrecision, self._quality) + \ - "{0!r}, {1!r})".format(self._validity, self._source) - - def parseToJSON(self): - from json import dumps - jsonObj = {}; - jsonObj['value'] = self.value; - jsonObj['timestampMicros'] = self.timestampMicros; - jsonObj['timePrecision'] = self.timePrecision - jsonObj['quality'] = self.quality - jsonObj['validity'] = self.validity - jsonObj['source'] = self.source; - return dumps(jsonObj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - - if not type(jsonString) is str: raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - try: - jsonObj = loads(jsonString) - result = CompositeMeasurement(jsonObj.get('value'), jsonObj.get('timestampMicros'), - jsonObj.get('timePrecision'), - jsonObj.get('quality'), jsonObj.get('validity'), jsonObj.get('source')) - return result - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(jsonString)) - raise e diff --git a/syslab-python/syslab/core/datatypes/CompositeStatus.py b/syslab-python/syslab/core/datatypes/CompositeStatus.py deleted file mode 100644 index e5af1e5..0000000 --- a/syslab-python/syslab/core/datatypes/CompositeStatus.py +++ /dev/null @@ -1,5 +0,0 @@ -# TODO: Add Processing here - - -class CompositeStatus: - pass diff --git a/syslab-python/syslab/core/datatypes/ConverterTypes.py b/syslab-python/syslab/core/datatypes/ConverterTypes.py deleted file mode 100644 index 6073522..0000000 --- a/syslab-python/syslab/core/datatypes/ConverterTypes.py +++ /dev/null @@ -1,132 +0,0 @@ -from .CompositeStatus import CompositeStatus - -class ConvOpMode: - - _OPMODES = { - 0: 'CONV_UNKNOWN', - 1: 'CONV_PQ', - 2: 'CONV_UF', - 3: 'CONV_OFF', - } - - def __init__(self, status, timestampMicros, timePrecision=0, quality=0, validity=0, source=0): - assert status in ConvOpMode._OPMODES - self._status = status - self._timestampMicros = timestampMicros - self._timePrecision = timePrecision - self._quality = quality - self._validity = validity - self._source = source - - @property - def mode(self) -> int: - return self._status - - def modeAsString(self): - return ConvOpMode._OPMODES[self.mode] - - def __str__(self): - return f'ConvOpMode({self.mode}; {ConvOpMode._OPMODES[self.mode]})' - - def parseToJSON(self): - from json import dumps - jsonObj = {'mode': self.mode} - return dumps(jsonObj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - if not type(jsonString) is str: - raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - try: - jsonObj = loads(jsonString) - return ConvOpMode(**jsonObj.get('mode')) - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(jsonString)) - raise e - - -class ConvState: - - _STATES = { - 0: 'CONV_UNKNOWN', - 1: 'CONV_STOPPED', - 2: 'CONV_STARTING', - 4: 'CONV_RUNNING', - 8: 'CONV_STOPPING', - 16: 'CONV_SYNCED', - 32: 'CONV_DROOP', - 64: 'CONV_LOADENABLED', - 128: 'CONV_INHIBITED', - 1024: 'CONV_READY', - 2048: 'CONV_WARNING', - 4096: 'CONV_ALARM'} - - def __init__(self, status, timestampMicros, timePrecision=0, quality=0, validity=0, source=0): - self._status = status - self._timestampMicros = timestampMicros - self._timePrecision = timePrecision - self._quality = quality - self._validity = validity - self._source = source - - @property - def status(self): - return self._status - - @property - def timestampMicros(self): - return self._timestampMicros - - @property - def timePrecision(self): - return self._timePrecision - - @property - def quality(self): - return self._quality - - @property - def validity(self): - return self._validity - - @property - def source(self): - return self._source - - def statusAsString(self): - return ConvState._STATES[self.status] - - def __repr__(self): - return "{0}(".format(self.__class__.__name__) + \ - "{0!r}, {1!r}, ".format(self._status, self._timestampMicros) + \ - "{0!r}, {1!r}, ".format(self._timePrecision, self._quality) + \ - "{0!r}, {1!r})".format(self._validity, self._source) - - def __str__(self): - from datetime import datetime - return 'FlowBatteryState: {0} : {1} (@time: {2}))'.format( - self._status, - # status & statuscode evaluates to True if statuscode is 2^k and in the binary expansion of status - ";".join([label for statuscode, label in ConvState._STATES.items() if self._status & statuscode]), - datetime.fromtimestamp(self.timestampMicros / 1000000)) - - def parseToJSON(self): - from json import dumps - json_obj = {'status': self._status} - return dumps(json_obj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - if not type(jsonString) is str: raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - # result = None - try: - jsonObj = loads(jsonString).get('status') - return ConvState( - jsonObj.get('status'), jsonObj.get('timestampMicros'), - jsonObj.get('timePrecision'), - jsonObj.get('quality'), jsonObj.get('validity'), jsonObj.get('source')) - except JSONDecodeError as e: - print('Not a valid JSON string in parsing Converter Status: {0}.'.format(jsonString)) - raise e diff --git a/syslab-python/syslab/core/datatypes/EVSEState.py b/syslab-python/syslab/core/datatypes/EVSEState.py deleted file mode 100644 index bb55ba3..0000000 --- a/syslab-python/syslab/core/datatypes/EVSEState.py +++ /dev/null @@ -1,83 +0,0 @@ - -class EVSEState: - - _STATES = { - 0: 'EVSE_UNKNOWN', - 1: 'EVSE_NO_EV', - 2: 'EVSE_EV_STOPPED', - 4: 'EVSE_EV_READY', - 8: 'EVSE_EV_STARTING', - 16: 'EVSE_EV_CHARGING', - 32: 'EVSE_EV_DISCHARGING', - 64: 'EVSE_EV_PAUSED', - 128: 'EVSE_EV_ALARM', - 256: 'EVSE_EV_ESD', } - - def __init__(self, status, timestampMicros, timePrecision=0, quality=0, validity=0, source=0): - self._status = status - self._timestampMicros = timestampMicros - self._timePrecision = timePrecision - self._quality = quality - self._validity = validity - self._source = source - - @property - def status(self): - return self._status - - @property - def timestampMicros(self): - return self._timestampMicros - - @property - def timePrecision(self): - return self._timePrecision - - @property - def quality(self): - return self._quality - - @property - def validity(self): - return self._validity - - @property - def source(self): - return self._source - - def statusAsString(self): - return EVSEState.__STATES[self.status] - - def __repr__(self): - return "{0}(".format(self.__class__.__name__) + \ - "{0!r}, {1!r}, ".format(self._status, self._timestampMicros) + \ - "{0!r}, {1!r}, ".format(self._timePrecision, self._quality) + \ - "{0!r}, {1!r})".format(self._validity, self._source) - - def __str__(self): - from datetime import datetime - return 'EVSEState: {0} : {1} (@time: {2}))'.format( - self.status, - # status & statuscode evaluates to True if statuscode is 2^k and in the binary expansion of status - ";".join([label for statuscode, label in EVSEState._STATES.items() if self._status & statuscode]), - datetime.fromtimestamp(self.timestampMicros / 1000000)) - - def parseToJSON(self): - from json import dumps - jsonObj = {'status': self.status} - return dumps(jsonObj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - if not type(jsonString) is str: raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - # result = None - try: - jsonObj = loads(jsonString).get('status') - return EVSEState( - jsonObj.get('status'), jsonObj.get('timestampMicros'), - jsonObj.get('timePrecision'), - jsonObj.get('quality'), jsonObj.get('validity'), jsonObj.get('source')) - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(jsonString)) - raise e diff --git a/syslab-python/syslab/core/datatypes/FlowBatteryState.py b/syslab-python/syslab/core/datatypes/FlowBatteryState.py deleted file mode 100644 index 6cc5a42..0000000 --- a/syslab-python/syslab/core/datatypes/FlowBatteryState.py +++ /dev/null @@ -1,88 +0,0 @@ - -class FlowBatteryState: - - _STATES = { - 0: 'BATT_UNKNOWN', - 1: 'BATT_STOPPED', - 2: 'BATT_STARTING', - 4: 'BATT_FLOODING', - 8: 'BATT_RUNNING', - 16: 'BATT_STOPPING', - 32: 'BATT_DRAINING', - 64: 'BATT_PUMPSRAMP', - 128: 'BATT_TANKVALVESOP', - 256: 'BATT_PUMPSRUN', - 512: 'BATT_DCBREAKER', - 1024: 'PCS_READY', - 2048: 'PCS_RUNNING', - 4096: 'BATT_ALARM', - 8192: 'BATT_ESD'} - - def __init__(self, status, timestampMicros, timePrecision=0, quality=0, validity=0, source=0): - self._status = status - self._timestampMicros = timestampMicros - self._timePrecision = timePrecision - self._quality = quality - self._validity = validity - self._source = source - - @property - def status(self): - return self._status - - @property - def timestampMicros(self): - return self._timestampMicros - - @property - def timePrecision(self): - return self._timePrecision - - @property - def quality(self): - return self._quality - - @property - def validity(self): - return self._validity - - @property - def source(self): - return self._source - - def statusAsString(self): - return FlowBatteryState.__STATES[self.status] - - def __repr__(self): - return "{0}(".format(self.__class__.__name__) + \ - "{0!r}, {1!r}, ".format(self._status, self._timestampMicros) + \ - "{0!r}, {1!r}, ".format(self._timePrecision, self._quality) + \ - "{0!r}, {1!r})".format(self._validity, self._source) - - def __str__(self): - from datetime import datetime - return 'FlowBatteryState: {0} : {1} (@time: {2}))'.format( - self.status, - # status & statuscode evaluates to True if statuscode is 2^k and in the binary expansion of status - ";".join([label for statuscode, label in FlowBatteryState._STATES.items() if self._status & statuscode]), - datetime.fromtimestamp(self.timestampMicros / 1000000)) - - def parseToJSON(self): - from json import dumps - jsonObj = {'status': self.status} - return dumps(jsonObj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - if not type(jsonString) is str: raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - # result = None - try: - jsonObj = loads(jsonString).get('status') - return FlowBatteryState( - jsonObj.get('status'), jsonObj.get('timestampMicros'), - jsonObj.get('timePrecision'), - jsonObj.get('quality'), jsonObj.get('validity'), jsonObj.get('source')) - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(jsonString)) - raise e diff --git a/syslab-python/syslab/core/datatypes/HeatCirculationPumpMode.py b/syslab-python/syslab/core/datatypes/HeatCirculationPumpMode.py deleted file mode 100644 index 0b08ccb..0000000 --- a/syslab-python/syslab/core/datatypes/HeatCirculationPumpMode.py +++ /dev/null @@ -1,89 +0,0 @@ - -class HeatCirculationPumpMode: - - __OPMODES = { - -1: 'PUMP_MODE_UNKNOWN', - 0: 'PUMP_MODE_CONSTANT_SPEED', - 1: 'PUMP_MODE_CONSTANT_FREQUENCY', - 3: 'PUMP_MODE_CONSTANT_HEAD', - 4: 'PUMP_MODE_CONSTANT_PRESSURE', - 5: 'PUMP_MODE_CONSTANT_DIFF_PRESSURE', - 6: 'PUMP_MODE_PROPORTIONAL_PRESSURE', - 7: 'PUMP_MODE_CONSTANT_FLOW', - 8: 'PUMP_MODE_CONSTANT_TEMP', - 10: 'PUMP_MODE_CONSTANT_LEVEL', - 128: 'PUMP_MODE_AUTO_ADAPT', - 129: 'PUMP_MODE_FLOW_ADAPT' } - - __OPMODES_R = {v: k for k, v in __OPMODES.items()} - - def __init__(self, status, timestampMicros, timePrecision=0, quality=0, validity=0, source=0): - """ - @Input: - mode (int or str): Pump operating mode, can be both int and string - - To get list of available modes: HeatCirculationPumpMode.opmodes() - """ - if status in HeatCirculationPumpMode.__OPMODES: - self._status = status - elif mode in HeatCirculationPumpMode.__OPMODES_R: - self._status = HeatCirculationPumpMode.__OPMODES_R[status] - else: - raise AssertionError('HeatCirculationPumpMode not recognized: \'{0}\''.format(mode)) - self._timestampMicros = timestampMicros - self._timePrecision = timePrecision - self._quality = quality - self._validity = validity - self._source = source - - @staticmethod - def opmodes(): - return HeatCirculationPumpMode.__OPMODES.copy() - - @property - def mode(self): - return self._status - - @property - def modeAsString(self): - return HeatCirculationPumpMode.__OPMODES[self.mode] - - def __repr__(self): - return "{0}(".format(self.__class__.__name__) + \ - "{0!r}, {1!r}, ".format(self._status, self._timestampMicros) + \ - "{0!r}, {1!r}, ".format(self._timePrecision, self._quality) + \ - "{0!r}, {1!r})".format(self._validity, self._source) - def __str__(self): - return 'HeatCirculationPumpMode: {0} ({1})'.format(self.mode, self.modeAsString) - - def parseToJSON(self): - from json import dumps - jsonObj = {}; - jsonObj['mode'] = { - 'status': self._status, - 'timestampMicros': self._timestampMicros, - 'timePrecision': self._timePrecision, - 'quality': self._quality, - 'validity': self._validity, - 'source': self._source, - } - return dumps(jsonObj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - if not type(jsonString) is str: raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - # result = None ## Appears unused - - try: - jsonObj = loads(jsonString).get('mode') - return HeatCirculationPumpMode( - jsonObj.get('status'), - jsonObj.get('timestampMicros'), - jsonObj.get('timePrecision'), - jsonObj.get('quality'), - jsonObj.get('validity'), - jsonObj.get('source')) - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(jsonString)) - raise e diff --git a/syslab-python/syslab/core/datatypes/HeatCirculationPumpState.py b/syslab-python/syslab/core/datatypes/HeatCirculationPumpState.py deleted file mode 100644 index 2628b16..0000000 --- a/syslab-python/syslab/core/datatypes/HeatCirculationPumpState.py +++ /dev/null @@ -1,83 +0,0 @@ - -class HeatCirculationPumpState: - - __OPSTATES = { - -1: 'PUMP_STATE_UNKNOWN', - 0: 'PUMP_STATE_STOPPED', - 1: 'PUMP_STATE_RUNNING', - 2: 'PUMP_STATE_ERROR',} - __OPSTATES_R = {v: k for k, v in __OPSTATES.items()} - - def __init__(self, status, timestampMicros, timePrecision=0, quality=0, validity=0, source=0): - """ - @Input: - status (int or str): Pump operating mode, can be both int and string - - To get list of available modes: HeatCirculationPumpState.opstates() - """ - if status in HeatCirculationPumpState.__OPSTATES: - self._status = status - elif state in HeatCirculationPumpState.__OPSTATES_R: - self._status = HeatCirculationPumpState.__OPSTATES_R[status] - else: - raise AssertionError('HeatCirculationPumpState not recognized: \'{0}\''.format(mode)) - self._timestampMicros = timestampMicros - self._timePrecision = timePrecision - self._quality = quality - self._validity = validity - self._source = source - - - @staticmethod - def opstates(): - return HeatCirculationPumpState.__OPSTATES.copy() - - @property - def state(self): - return self._status - - @property - def stateAsString(self): - return HeatCirculationPumpState.__OPSTATES[self._status] - - def __repr__(self): - return "{0}(".format(self.__class__.__name__) + \ - "{0!r}, {1!r}, ".format(self._status, self._timestampMicros) + \ - "{0!r}, {1!r}, ".format(self._timePrecision, self._quality) + \ - "{0!r}, {1!r})".format(self._validity, self._source) - - - def __str__(self): - return 'HeatCirculationPumpState: {0} ({1})'.format(self.state, self.stateAsString) - - def parseToJSON(self): - from json import dumps - jsonObj = {} - jsonObj['state'] = { - 'status': self._status, - 'timestampMicros': self._timestampMicros, - 'timePrecision': self._timePrecision, - 'quality': self._quality, - 'validity': self._validity, - 'source': self._source, - } - return dumps(jsonObj) - - @staticmethod - def parseFromJSON(jsonString): - from json import JSONDecodeError, loads - if not type(jsonString) is str: raise TypeError('jsonString should be a string, found {0}'.format(type(jsonString))) - # result = None ## Appears unused - - try: - jsonObj = loads(jsonString).get('state') - return HeatCirculationPumpState( - jsonObj.get('status'), - jsonObj.get('timestampMicros'), - jsonObj.get('timePrecision'), - jsonObj.get('quality'), - jsonObj.get('validity'), - jsonObj.get('source')) - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(jsonString)) - raise e diff --git a/syslab-python/syslab/core/datatypes/Identifiers.py b/syslab-python/syslab/core/datatypes/Identifiers.py deleted file mode 100644 index bb7367b..0000000 --- a/syslab-python/syslab/core/datatypes/Identifiers.py +++ /dev/null @@ -1,73 +0,0 @@ -from dataclasses import dataclass -from . import CompositeMeasurement -from typing import Optional -# TODO: Add processing to these. - - -@dataclass -class DELV: - phaseAB: CompositeMeasurement - phaseBC: CompositeMeasurement - phaseCA: CompositeMeasurement - phaseAverage: CompositeMeasurement - - @staticmethod - def parseFromJSON(json_string): - from json import JSONDecodeError, loads - if not type(json_string) is str: - raise TypeError('jsonString should be a string, found {0}'.format(type(json_string))) - - try: - jsonObj = loads(json_string) - phaseABcm = CompositeMeasurement(**jsonObj.get('phaseAB')) - phaseBCcm = CompositeMeasurement(**jsonObj.get('phaseBC')) - phaseCAcm = CompositeMeasurement(**jsonObj.get('phaseCA')) - phaseAVGcm = CompositeMeasurement(**jsonObj.get('phaseAverage')) - return DELV(phaseABcm, phaseBCcm, phaseCAcm, phaseAVGcm) - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(json_string)) - raise e - - -class GPSL: - pass - - -class HLTH: - pass - - -class LNPL: - pass - - -class PNPL: - pass - - -@dataclass() -class WYEA: - phaseAB: CompositeMeasurement - phaseBC: CompositeMeasurement - phaseCA: CompositeMeasurement - neutral: Optional[CompositeMeasurement] = None - - @staticmethod - def parseFromJSON(json_string): - from json import JSONDecodeError, loads - if not type(json_string) is str: - raise TypeError('jsonString should be a string, found {0}'.format(type(json_string))) - - try: - jsonObj = loads(json_string) - phaseAcm = CompositeMeasurement(**jsonObj.get('phaseA')) - phaseBcm = CompositeMeasurement(**jsonObj.get('phaseB')) - phaseCcm = CompositeMeasurement(**jsonObj.get('phaseC')) - neutral = jsonObj.get('neutral') - if neutral is not None: - neutral = CompositeMeasurement(**neutral) - return WYEA(phaseAcm, phaseBcm, phaseCcm, neutral) - - except JSONDecodeError as e: - print('Not a valid JSON string: {0}.'.format(json_string)) - raise e diff --git a/syslab-python/syslab/core/datatypes/__init__.py b/syslab-python/syslab/core/datatypes/__init__.py deleted file mode 100644 index 56e0773..0000000 --- a/syslab-python/syslab/core/datatypes/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -__all__ = [] - -# Composite Data Types -from .CompositeBoolean import CompositeBoolean -from .CompositeMeasurement import CompositeMeasurement -from .CompositeStatus import CompositeStatus - -# SYSLAB-specific data types -from .Identifiers import DELV, GPSL, HLTH, LNPL, PNPL, WYEA - -# Unit-specific data types -from .BattOpMode import BattOpMode -from .FlowBatteryState import FlowBatteryState -from .HeatCirculationPumpMode import HeatCirculationPumpMode -from .HeatCirculationPumpState import HeatCirculationPumpState -from .ConverterTypes import ConvState, ConvOpMode diff --git a/syslab-python/syslab/get_flexhouse.py b/syslab-python/syslab/get_flexhouse.py deleted file mode 100644 index e4bd1d6..0000000 --- a/syslab-python/syslab/get_flexhouse.py +++ /dev/null @@ -1,27 +0,0 @@ -def get_flexhouse(simulated=False, physical=False, simulate_on_dumpload_ID="", simulate_on_battery=False): - """ - Return an instantiated object which operates as a flexhouse. - input: - simulated (bool): Whether the flexhouse should be simulated - physical (bool): Whether the flexhouse should be the real flexhouse - simulate_on_dumpload_ID (string): The ID of the dumpload on which to simulate the flexhouse - simulate_on_battery (bool): Whether to simulate on battery - - return: - flexhouse: A flexhouse object - """ - - if simulated: - if simulate_on_battery: - from .virtual.FlexHouse_sim_batt import FlexHouse_sim_batt - return FlexHouse_sim_batt('batt1') - else: - from .virtual.FlexHouse_sim import FlexHouse_sim - assert simulate_on_dumpload_ID != "", "Must supply an ID string for the dumpload used in Flexhouse simulation if not simulating on battery" - return FlexHouse_sim(simulate_on_dumpload_ID) - elif physical: - from .physical.FlexHouse_real import FlexHouse_real - return FlexHouse_real() - else: - raise Exception('Must define if FlexHouse instance is real or simulated') - diff --git a/syslab-python/syslab/physical/B2BConverter.py b/syslab-python/syslab/physical/B2BConverter.py deleted file mode 100644 index a2ca48e..0000000 --- a/syslab-python/syslab/physical/B2BConverter.py +++ /dev/null @@ -1,258 +0,0 @@ -from ..core.SyslabUnit import SyslabUnit -from ..core.datatypes import CompositeMeasurement, CompositeBoolean, CompositeStatus -from ..core.datatypes import CommonDeviceConfig -from ..core.datatypes import DELV, WYEA, GPSL, PNPL, LNPL, HLTH, ConvOpMode, ConvState -from typing import List, Union -from time import time - - -def cast_to_cm(m: Union[CompositeMeasurement, float]): - if type(m) == float: - # TODO: Is there a better way to estimate precision of time.time? - request = CompositeMeasurement(m, timestampMicros=time()*1e6, timePrecision=1000) - elif type(m) == CompositeMeasurement: - request = m - else: - raise TypeError(f"Unknown request type: {type(m)}") - return request - - -class B2BConverter(SyslabUnit): - """ - Class covering back-to-back converters in SYSLAB. - - 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. - """ - - _CONVERTERS = { - 'ABBB2B': ('syslab-04.syslab.dk', '8080', 'B2BConverter'), - } - MAXP = 60 - MAXQ = 60 - - @staticmethod - def getAvailableUnits(): - return list(B2BConverter.__CONVERTERS.keys()) - - def __init__(self, which=None, host=None, port=None, unit_name=None): - - baseurl = 'http://{host}:{port}/typebased_WebService_ABBConverter/ABBConverterWebService/{unit_name}/' - - super().__init__( - baseurl=baseurl, - which=which, - units=self._CONVERTERS, - host=host, - port=port, - unit_name=unit_name, - unit_type="B2BConverter") - - # Inventory functions - - # Configuration class used for HMI layout - def getNodeConfiguration(self, ) -> CommonDeviceConfig: - return self._request_resource('getNodeConfiguration') - - # Component description - def getConverterName(self, ) -> str: - return self._request_resource('getConverterName') - - def getConverterLogicalNameplate(self, ) -> LNPL: - raise NotImplementedError - - def getConverterPhysicalNameplate(self, ) -> PNPL: - raise NotImplementedError - - def getConverterHealth(self, ) -> HLTH: - raise NotImplementedError - - def getGPSLocation(self, ) -> GPSL: - raise NotImplementedError - - # Operating characteristics (corresponding to COPR/DRAT node) - def getRatedP(self, ) -> float: - raise NotImplementedError - # return self._request_resource('getRatedP') - - def getRatedS(self, ) -> float: - raise NotImplementedError - # return self._request_resource('getRatedS') - - def getRatedQ(self, ) -> float: - raise NotImplementedError - # return self._request_resource('getRatedQ') - - def getRatedU(self, ) -> float: - raise NotImplementedError - # return self._request_resource('getRatedU') - - def getRatedI(self, ) -> float: - raise NotImplementedError - # return self._request_resource('getRatedI') - - def getRatedf(self, ) -> float: - raise NotImplementedError - # return self._request_resource('getRatedf') - - # Operating mode settings (corresponding to DOPM node) - def getAvailableOperatingModes(self, ) -> List[ConvOpMode]: - raise NotImplementedError - - def getCurrentOperatingMode(self, ) -> ConvOpMode: - return self._request_resource('getCurrentOperatingMode') - - def setOperatingMode(self, mode: ConvOpMode) -> None: - raise NotImplementedError - - def isPSetpointEnabled(self, ) -> CompositeBoolean: - return self._request_resource('isPSetpointEnabled') - - def isQSetpointEnabled(self, ) -> CompositeBoolean: - return self._request_resource('isQSetpointEnabled') - - def isUSetpointEnabled(self, ) -> CompositeBoolean: - return self._request_resource('isUSetpointEnabled') - - def isfSetpointEnabled(self, ) -> CompositeBoolean: - return self._request_resource('isfSetpointEnabled') - - # Status information (corresponding to DPST node) - def getConverterStatus(self, ) -> ConvState: - return self._request_resource('getConverterStatus') - - # Alarms information - def hasActiveFault(self, ) -> CompositeBoolean: - raise NotImplementedError - - def hasActiveWarning(self, ) -> CompositeBoolean: - raise NotImplementedError - - def resetAlarms(self, ) -> None: - raise NotImplementedError - - def getActiveEventCode(self, ) -> CompositeStatus: - raise NotImplementedError - - # DER controller characteristics (corresponding to DRCT node) - def setActivePower(self, m: Union[CompositeMeasurement, float]) -> None: - """ - Send a request for the converter's output active power. Requires the converter to be in PQ mode. - - :param m: [kW] Requested active power. If a float, will be converted to a CompositeMeasurement with the current system time as timestamp.) - :return: None - """ - - P_UpperLimit = 15.0 - P_LowerLimit = -15.0 - - return self._request_resource('setActivePower', (), 'put', cast_to_cm(max(P_LowerLimit, min(m, P_UpperLimit))).parseToJSON()) - - def setFrequency(self, m: Union[CompositeMeasurement, float]) -> None: - """ - Send a request for the converter's output power. Requires the converter to be in UF mode. - - :param m: [Hz] Requested active power. If a float, will be converted to a CompositeMeasurement with the current system time as timestamp.) - :return: None - """ - return self._request_resource('seFrequency', (), 'put', cast_to_cm(m).parseToJSON()) - - def setReactivePower(self, m: Union[CompositeMeasurement, float]) -> None: - """ - Send a request for the converter's output reactive power. Requires the converter to be in PQ mode. - - :param m: [kVA] Requested active power. If a float, will be converted to a CompositeMeasurement with the current system time as timestamp.) - :return: None - """ - - Q_UpperLimit = 15.0 - Q_LowerLimit = -15.0 - - return self._request_resource('setReactivePower', (), 'put', cast_to_cm(max(Q_LowerLimit, min(m, Q_UpperLimit))).parseToJSON()) - - def setVoltage(self, m: Union[CompositeMeasurement, float]) -> None: - """ - Send a request for the converter's output voltage. Requires the converter to be in UF mode. - - :param m: [V] Requested active power. If a float, will be converted to a CompositeMeasurement with the current system time as timestamp.) - :return: None - """ - return self._request_resource('setVoltage', (), 'put', cast_to_cm(m).parseToJSON()) - - def getActivePowerSetpoint(self, ) -> CompositeMeasurement: - raise NotImplementedError - - def getFrequencySetpoint(self, ) -> CompositeMeasurement: - raise NotImplementedError - - def getReactivePowerSetpoint(self, ) -> CompositeMeasurement: - raise NotImplementedError - - def getVoltageSetpoint(self, ) -> CompositeMeasurement: - raise NotImplementedError - - # Synchronisation (corresponding to RSYN node) - def synchronize(self, ) -> None: - raise NotImplementedError - - def unsynchronize(self, ) -> None: - raise NotImplementedError - - def setDroopEnable(self, b: CompositeBoolean) -> None: - raise NotImplementedError - - def setLoadEnable(self, b: CompositeBoolean) -> None: - raise NotImplementedError - - def getVoltageDroopPct(self, ) -> CompositeMeasurement: - raise NotImplementedError - - def getFrequencyDroopPct(self, ) -> CompositeMeasurement: - raise NotImplementedError - - def setVoltageDroopPct(self, pct: CompositeMeasurement) -> None: - raise NotImplementedError - - def setFrequencyDroopPct(self, pct: CompositeMeasurement) -> None: - raise NotImplementedError - - # Reciprocating Engine (corresponds to DCIP node) - def startConverter(self, ) -> None: - return self._request_resource('startConverter', (), 'put') - - def softStopConverter(self, ) -> None: - return self._request_resource('softStopConverter', (), 'put') - - def stopConverter(self, ) -> None: - return self._request_resource('stopConverter', (), 'put') - - # AC quantities (corresponds to MMXU nodes) - def getActivePowerOutput(self, ) -> CompositeMeasurement: - return self._request_resource('getActivePowerOutput') - - def getReactivePowerOutput(self, ) -> CompositeMeasurement: - return self._request_resource('getReactivePowerOutput') - - def getOutputFrequency(self, ) -> CompositeMeasurement: - return self._request_resource('getOutputFrequency') - - def getOutputInterphaseVoltages(self, ) -> DELV: - return self._request_resource('getOutputInterphaseVoltages') - - def getOutputPhaseCurrents(self, ) -> WYEA: - raise NotImplementedError - - def getRectifierInterphaseVoltages(self, ) -> DELV: - return self._request_resource('getRectifierInterphaseVoltages') - - def getRectifierPhaseCurrents(self, ) -> WYEA: - return self._request_resource('getRectifierPhaseCurrents') - - def getSyncBusInterphaseVoltages(self, ) -> DELV: - raise NotImplementedError - - -class ABBB2BConverter(B2BConverter): - def __init__(self): - super(ABBB2BConverter, self).__init__(which='ABBB2B') diff --git a/syslab-python/syslab/physical/Battery.py b/syslab-python/syslab/physical/Battery.py deleted file mode 100644 index 1da016b..0000000 --- a/syslab-python/syslab/physical/Battery.py +++ /dev/null @@ -1,85 +0,0 @@ -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()) diff --git a/syslab-python/syslab/physical/DieselGenerator.py b/syslab-python/syslab/physical/DieselGenerator.py deleted file mode 100644 index ef5b606..0000000 --- a/syslab-python/syslab/physical/DieselGenerator.py +++ /dev/null @@ -1,100 +0,0 @@ -from ..core.SyslabUnit import SyslabUnit - - -class DieselGenerator(SyslabUnit): - """The DieselGenerator class represents a photovoltaic panel array in SYSLAB. - The DieselGenerator class is instantiated using a string with the unique name of the dumpload, ie. 'which' - - A full list of available panel arrays can be found by calling 'DieselGenerator.getAvailableDieselGenerator()' - - Alternatively, the user may specify a host and port to connect to via the *host* and *port* arguments. - """ - - __UNITS = { - 'diesel319': ('syslab-02.syslab.dk', '8080', 'genset1'), - } - - def __init__(self, which=None, host=None, port=None, unitname=None): - - baseurl = 'http://{host}:{port}/typebased_WebService_Diesel/DEIFDieselGensetWebService/{unit_name}/' - super().__init__( - baseurl=baseurl, - which=which, - units=self.__UNITS, - host=host, - port=port, - unit_name=unitname, - unit_type="DieselGenerator") - - def getRatedP(self): - return self._request_resource('getRatedP') - - def getRatedQ(self): - return self._request_resource('getRatedQ') - - def getRatedS(self): - return self._request_resource('getRatedS') - - def getRatedU(self): - return self._request_resource('getRatedU') - - def getRatedf(self): - return self._request_resource('getRatedf') - - def isGeneratorBreakerClosed(self): - return self._request_resource('isGeneratorBreakerClosed') - - def isGensetRunning(self): - return self._request_resource('isGensetRunning') - - def isGensetSynchronized(self): - return self._request_resource('isGensetSynchronized') - - def isSynchronising(self): - return self._request_resource('isSynchronising') - - def closeGB(self): - return self._request_resource('closeGB', method='put') - - def openGB(self): - return self._request_resource('openGB', method='put') - - def startGenset(self): - return self._request_resource('startGenset', method='put') - - def stopGenset(self): - return self._request_resource('stopGenset', method='put') - - def setTargetActivePower(self, setpoint): - return self._request_resource('setTargetActivePower', setpoint, 'put') - - def setTargetReactivePower(self, setpoint): - return self._request_resource('setTargetReactivePower', setpoint, 'put') - - def getActivePower(self): - return self._request_resource('getActivePower') - - def getReactivePower(self): - return self._request_resource('getReactivePower') - - #TODO: Implement - def getCurrentGensetMode(self): - pass - - #TODO: Implement - def getCurrentRunningMode(self): - pass - - #TODO: Implement - def setGensetMode(self, mode): - pass - - #TODO: Implement - def setRunningMode(self, mode): - pass - - @staticmethod - def getAvailableDieselGenerators(): - return list(DieselGenerator.__UNITS.keys()) - - diff --git a/syslab-python/syslab/physical/Dumpload.py b/syslab-python/syslab/physical/Dumpload.py deleted file mode 100644 index dd67582..0000000 --- a/syslab-python/syslab/physical/Dumpload.py +++ /dev/null @@ -1,112 +0,0 @@ -from ..core.SyslabUnit import SyslabUnit -import warnings - -class Dumpload(SyslabUnit): - """The Dumpload class represents a dumpload in SYSLAB. - The Dumpload class is instantiated using a string with the unique name of the dumpload, ie. 'which' - - A full list of available dumploads can be found by calling 'Dumpload.getAvailableDumpLoads()' - - Alternatively, the user may specify a host and port to connect to via the *host* and *port* arguments. - """ - - - __DUMPLOADS = { - 'mobload1': ('syslab-16.syslab.dk', '8080', 'mobload1'), - 'mobload2': ('syslab-17.syslab.dk', '8080', 'mobload2'), - 'mobload3': ('syslab-18.syslab.dk', '8080', 'mobload3'), - 'load1': ('syslab-05.syslab.dk', '8080', 'load1'), - 'vmobload1': ('simlab-16', '8080', 'mobload1'), - 'vmobload2': ('simlab-17', '8080', 'mobload2'), - 'vmobload3': ('simlab-18', '8080', 'mobload3'), - 'vload1': ('simlab-05', '8080', 'load1'), - 'simlab-05': ('192.168.0.105', '8080', 'mobload2'), - 'simlab-11': ('192.168.0.111', '8080', 'mobload1'), - 'simlab-12': ('192.168.0.112', '8080', 'load1'), - } - - def __init__(self, which=None, host=None, port=None, unitname=None): - - baseurl = 'http://{host}:{port}/typebased_WebService_Load/GenericLoadWebService/{unit_name}/' - super().__init__( - baseurl=baseurl, - which=which, - units=self.__DUMPLOADS, - host=host, - port=port, - unit_name=unitname, - unit_type="Battery") - - def startLoad(self): - return self._request_resource('startLoad', (), 'put') - - def stopLoad(self): - return self._request_resource('stopLoad', (), 'put') - - def getPowerSetPoint(self): - return self._request_resource('getConstantP') - - def setPowerSetPoint(self, setPoint): - """ - Set the active power setpoint for the load. - - Inputs: - setPoint (float): Requested power setpoint - Outputs: - Ack (bool): Acknowledgement of receiver - """ - - P_UpperLimit = 15.0 - P_LowerLimit = 0 - - return self._request_resource('setConstantP', max(P_LowerLimit, min(setPoint, P_UpperLimit)), 'put') - - def getActivePower(self): - return self._request_resource('getActivePower') - - def getReactivePower(self): - """ - Get the reactive power draw from the load. - - Outputs: - Q (CompositeMeasurement): Current reactive power draw, calculated from active power draw (see note) - - NOTE: This is a theoretical value calculated from the relation - Q = Q_r * sin (pi * P /P_r) - where P_r and Q_r are the rated active and reactive power draw. - For control purposes, use the measured value from the switchboard - instead to get an actual measurement. - """ - warnings.warn("The output of getReactivePower from the Dumpload class is calculated from the active power draw rather than a measured value. For control purposes, use the measured power draw on the switchboard.") - return self._request_resource('getReactivePower') - - def getRatedPower(self): - return self._request_resource('getRatedP') - - def getRatedReactivePower(self): - return self._request_resource('getRatedQ') - - def getName(self): - return self._request_resource('getLoadName') - - def isLoadOn(self): - return self._request_resource('isLoadOn') - - @staticmethod - def getAvailableDumploads(): - return list(Dumpload.__DUMPLOADS.keys()) - - -class MobileLoad1(Dumpload): - def __init__(self): - super(MobileLoad1, self).__init__("mobload1") - - -class MobileLoad2(Dumpload): - def __init__(self): - super(MobileLoad2, self).__init__("mobload2") - - -class MobileLoad3(Dumpload): - def __init__(self): - super(MobileLoad3, self).__init__("mobload3") diff --git a/syslab-python/syslab/physical/EVSE.py b/syslab-python/syslab/physical/EVSE.py deleted file mode 100644 index bce38fa..0000000 --- a/syslab-python/syslab/physical/EVSE.py +++ /dev/null @@ -1,213 +0,0 @@ -from ..core.SyslabUnit import SyslabUnit -from ..core.datatypes import CompositeMeasurement -from typing import Union -from time import time - -def cast_to_cm(m: Union[CompositeMeasurement, float]): - if type(m) == float: - # TODO: Is there a better way to estimate precision of time.time? - request = CompositeMeasurement(m, timestampMicros=time()*1e6, timePrecision=1000) - elif type(m) == CompositeMeasurement: - request = m - else: - raise TypeError(f"Unknown request type: {type(m)}") - return request - -class EVSE(SyslabUnit): - """The EVSE class represents a charging post in SYSLAB. - The EVSE class is instantiated using a string with the unique name of the charging post, ie. 'which' - - A full list of available charging posts can be found by calling 'EVSE.getAvailableChargingPosts()' - - Alternatively, the user may specify a host and port to connect to via the *host* and *port* arguments. - """ - - __CHARGINGPOSTS = { - 'V2G-319': ('syslab-35.syslab.dk', '8080', 'Endesa_V2G'), - 'EVSE-NEVIC-6': ('10.42.245.96', '8080', 'EVSE_NEVIC_6'), - } - - def __init__(self, which=None, host=None, port=None, unitname=None): - - baseurl = 'http://{host}:{port}/typebased_WebService_EVSE/EVSEWebService/{unit_name}/' - super().__init__( - baseurl=baseurl, - which=which, - units=self.__CHARGINGPOSTS, - host=host, - port=port, - unit_name=unitname, - unit_type="EVSE") - - def isEVPresent(self): - return self._request_resource('isEVPresent') - - def canRemoteStartStop(self): - return self._request_resource('canRemoteStartStop') - - def canLimitChargePower(self): - return self._request_resource('canLimitChargePower') - - def canDischarge(self): - return self._request_resource('canDischarge') - - def hasSOC(self): - return self._request_resource('hasSOC') - - def hasACMeasurements(self): - return self._request_resource('hasACMeasurements') - - def hasDCMeasurements(self): - return self._request_resource('hasDCMeasurements') - - def getAvailableOperatingStates(self): - return self._request_resource('getAvailableOperatingStates') - - def getCurrentOperatingState(self): - return self._request_resource('getCurrentOperatingState') - - def getACActivePower(self): - return self._request_resource('getACActivePower') - - def getACReactivePower(self): - return self._request_resource('getACReactivePower') - - def getACFrequency(self): - return self._request_resource('getACFrequency') - - def getACVoltages(self): - return self._request_resource('getACVoltages') - - def getACCurrents(self): - return self._request_resource('getACCurrents') - - def getSOC(self): - return self._request_resource('getSOC') - - def getMinSOC(self): - return self._request_resource('getMinSOC') - - def getMaxSOC(self): - return self._request_resource('getMaxSOC') - - def startCharge(self): - return self._request_resource('startCharge', (), 'put') - - def stopCharge(self): - return self._request_resource('stopCharge', (), 'put') - - def startDischarge(self): - return self._request_resource('startDischarge', (), 'put') - - def stopDischarge(self): - return self._request_resource('stopDischarge', (), 'put') - - def getMinimumChargePower(self): - return self._request_resource('getMinimumChargePower') - - def getMaximumChargePower(self): - return self._request_resource('getMaximumChargePower') - - def getMinimumDischargePower(self): - return self._request_resource('getMinimumDischargePower') - - def getMaximumDischargePower(self): - return self._request_resource('getMaximumDischargePower') - - def setPowerSetpoint(self, setPoint): - - P_UpperLimit = 10.0 - P_LowerLimit = -10.0 - - return self._request_resource('setP', (), 'put', cast_to_cm(max(P_LowerLimit, min(setPoint, P_UpperLimit))).parseToJSON()) - - def isPSetpointEnabled(self): - return self._request_resource('isPSetpointEnabled') - - def getActiveEnergyImport(self): # TODO not working/implemented - return self._request_resource('getActiveEnergyImport') - - def getActiveEnergyExport(self): # TODO not working/implemented - return self._request_resource('getActiveEnergyExport') - - def getReactiveEnergyImport(self): # TODO not working/implemented - return self._request_resource('getReactiveEnergyImport') - - def getReactiveEnergyExport(self): # TODO not working/implemented - return self._request_resource('getReactiveEnergyExport') - - def getNodeConfiguration(self): # TODO not working/implemented - return self._request_resource('getNodeConfiguration') - - def getEVSEName(self): - return self._request_resource('getEVSEName') - - def getEVSELogicalNameplate(self): # TODO not working/implemented - return self._request_resource('getEVSELogicalNameplate') - - def getEVSEPhysicalNameplate(self): # TODO not working/implemented - return self._request_resource('getEVSEPhysicalNameplate') - - def getEVSEHealth(self): # TODO not working/implemented - return self._request_resource('getEVSEHealth') - - def getGPSLocation(self): # TODO not working/implemented - return self._request_resource('getGPSLocation') - - def getNumberOfEvents(self): # TODO not working/implemented - return self._request_resource('getNumberOfEvents') - - def getEvents(self): # TODO not working/implemented - return self._request_resource('getEvents') - - def getNumberOfAlarms(self): # TODO not working/implemented - return self._request_resource('getNumberOfAlarms') - - def getAlarms(self): # TODO not working/implemented - return self._request_resource('getAlarms') - - def getNumberOfUnacknowledgedAlarms(self): # TODO not working/implemented - return self._request_resource('getNumberOfUnacknowledgedAlarms') - - def getUnacknowledgedAlarms(self): # TODO not working/implemented - return self._request_resource('getUnacknowledgedAlarms') - - def acknowledgeAlarms(self): # TODO not working/implemented - return self._request_resource('acknowledgeAlarms') - - def getRatedP(self): - return self._request_resource('getRatedP') - - def getRatedQ(self): - return self._request_resource('getRatedQ') - - def getRatedS(self): - return self._request_resource('getRatedS') - - def getRatedU(self): - return self._request_resource('getRatedU') - - def getRatedf(self): - return self._request_resource('getRatedf') - - def getInverterName(self): # TODO not working/implemented - return self._request_resource('getInverterName') - - def getInverterLogicalNameplate(self): # TODO not working/implemented - return self._request_resource('getInverterLogicalNameplate') - - def getInverterHealth(self): # TODO not working/implemented - return self._request_resource('getInverterHealth') - - def getDCVoltage(self): # TODO not working/implemented - return self._request_resource('getDCVoltage') - - def getDCPower(self): # TODO not working/implemented - return self._request_resource('getDCPower') - - def isDCContactorClosed(self): # TODO not working/implemented - return self._request_resource('isDCContactorClosed') - - @staticmethod - def getAvailableEVSE(): - return list(EVSE.__CHARGINGPOSTS.keys()) diff --git a/syslab-python/syslab/physical/HeatSwitchBoard.py b/syslab-python/syslab/physical/HeatSwitchBoard.py deleted file mode 100644 index 6de8eb1..0000000 --- a/syslab-python/syslab/physical/HeatSwitchBoard.py +++ /dev/null @@ -1,164 +0,0 @@ -from ..core.SyslabUnit import SyslabUnit -from ..core.datatypes import CompositeMeasurement, HeatCirculationPumpMode, HeatCirculationPumpState - - -class Valve: - """ - Convenience class which calls methods on its associated heatswitchboard - """ - def __init__(self, label, heatswitchboard): - self.label = label - self.heatswitchboard = heatswitchboard - #TODO: Add methods - -class Pump: - """ - Convenience class which calls methods on its associated heatswitchboard - """ - def __init__(self, label, heatswitchboard): - self.label = label - self.heatswitchboard = heatswitchboard - #TODO: Add methods - -class Meter: - """ - Convenience class which calls methods on its associated heatswitchboard - """ - def __init__(self, label, heatswitchboard): - self.label = label - self.heatswitchboard = heatswitchboard - #TODO: Add methods - - -class HeatSwitchBoard(SyslabUnit): - """ - The HeatSwitchBoard class represents a HeatSwitchBoard in SYSLAB. - The HeatSwitchBoard 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. - """ - - __HEAT_SWITCH_BOARDS = { - '716-h1': ('syslab-33.syslab.dk', '8080', '716-h1'), - } - - @staticmethod - def getAvailableHeatSwitchBoards(): - return list(HeatSwitchBoard.__HEAT_SWITCH_BOARDS.keys()) - - - def __init__(self, which=None, host=None, port=None, unitname=None): - - - baseurl = f'http://{host}:{port}/typebased_WebService_HeatSubstation/HeatSwitchboardWebService/{unit_name}/' - super().__init__( - baseurl=baseurl, - which=which, - units=self.__HEAT_SWITCH_BOARDS, - host=host, - port=port, - unit_name=unitname, - unit_type="HeatSwitchBoard") - - # Inventory functions - - #TODO Handle these in core/SYSLAB_unit.py by properly handling arrays. This is a bodge for now. - def getHeatMeters(self): - result = self._request_resource('getHeatMeters', check_types=False) - return result - - #TODO, P1: Awaiting Valve[] - def getValves(self): - raise NotImplementedError - - # Valve functions - - def getValvePosition(self, valve) -> CompositeMeasurement: - return self._request_resource('getValvePosition', valve) - - #TODO: Implement - #def setValvePosition(self, valve: str, position: float, timestamp=0): - def setValvePosition(self, valve: str, position: CompositeMeasurement): - """ - Sets *valve* to *position*. Position must be float in the - interval from 0.0 to 1.0 - Position = 0.0 => *valve* fully closed - Position = 1.0 => *valve* fully open - """ - assert 0.0 <= position.value and position.value <= 1.0 - return self._request_resource('setValvePosition', (valve), 'put', - position.parseToJSON()) - #CompositeMeasurement(value=position, timestampMicros=timestamp).parseToJSON()) - - # Meter functions - - def getBackTemperature(self, meter) -> CompositeMeasurement: - return self._request_resource('getBackTemperature', meter) - - def getFlow(self, meter) -> CompositeMeasurement: - return self._request_resource('getFlow', meter) - - def getThermalPower(self, meter) -> CompositeMeasurement: - return self._request_resource('getThermalPower', meter) - - def getFwdTemperature(self, meter) -> CompositeMeasurement: - return self._request_resource('getFwdTemperature', meter) - - def getPressure(self, meter) -> CompositeMeasurement: - return self._request_resource('getPressure', meter) - - def getVolume(self, meter) -> CompositeMeasurement: - return self._request_resource('getVolume', meter) - - def getMass(self, meter) -> CompositeMeasurement: - return self._request_resource('getMass', meter) - - def getHeatEnergy(self, meter) -> CompositeMeasurement: - return self._request_resource('getHeatEnergy', meter) - - def getCoolingEnergy(self, meter) -> CompositeMeasurement: - return self._request_resource('getCoolingEnergy', meter) - - # Pump functions - - def getPumpState(self, pump) -> HeatCirculationPumpState: - return self._request_resource('getPumpState', pump) - - def getPumpControlMode(self, pump) -> HeatCirculationPumpMode: - return self._request_resource('getPumpControlMode', pump) - - def setPumpControlMode(self, pump, mode: HeatCirculationPumpMode): - return self._request_resource('setPumpControlMode', (pump), 'put', mode.parseToJSON()) - - def setPumpMaxFlow(self, pump, limit: CompositeMeasurement): - return self._request_resource('setPumpMaxFlow', (pump), 'put', limit.parseToJSON()) - - def startPump(self, pump): - return self._request_resource('startPump', pump) - - def stopPump(self, pump): - return self._request_resource('stopPump', pump) - - #TODO: Split into three functions that check against current pump mode. - def setPumpSetpoint(self, pump, setpoint: CompositeMeasurement): - """ - Sets the target for the pump. - NOTE: How to interpret the setpoint depends on the mode which the pump is in. - Here be dragons. - """ - return self._request_resource('setPumpSetpoint', (pump), 'put', setpoint.parseToJSON()) - - def getPumpHead(self, pump) -> CompositeMeasurement: - return self._request_resource('getPumpHead', pump) - - def getPumpFlow(self, pump) -> CompositeMeasurement: - return self._request_resource('getPumpFlow', pump) - - def getPumpRPM(self, pump) -> CompositeMeasurement: - return self._request_resource('getPumpRPM', pump) - - def getPumpRelPerformance(self, pump) -> CompositeMeasurement: - return self._request_resource('getPumpPerformance', pump) - diff --git a/syslab-python/syslab/physical/MeteoMast.py b/syslab-python/syslab/physical/MeteoMast.py deleted file mode 100644 index 87d80b4..0000000 --- a/syslab-python/syslab/physical/MeteoMast.py +++ /dev/null @@ -1,72 +0,0 @@ -from ..core.SyslabUnit import SyslabUnit - - -class MeteoMast(SyslabUnit): - __METMASTS = { - 'metmast1': ('syslab-13.syslab.dk', '8080', 'meteo1'), - } - - def __init__(self, which=None, host=None, port=None, unitname=None): - - baseurl = 'http://{host}:{port}/typebased_WebService_Meteo/MeteoStationWebService/{unit_name}/' - super().__init__( - baseurl=baseurl, - which=which, - units=self.__METMASTS, - host=host, - port=port, - unit_name=unitname, - unit_type="MeteoMast") - - - - def getAirPressure(self, instrumentIndex: int or str): - if type(instrumentIndex) is str: - return self._request_resource('getAirPressure2', instrumentIndex) - if type(instrumentIndex) is int: - return self._request_resource('getAirPressure1', instrumentIndex) - - def getAirTemperature(self, instrumentIndex: int or str): - if type(instrumentIndex) is str: - return self._request_resource('getAirTemperature2', instrumentIndex) - if type(instrumentIndex) is int: - return self._request_resource('getAirTemperature1', instrumentIndex) - - def getHeightAboveGround(self): - return self._request_resource('getHeightAboveGround') - - def getInsolation(self, instrumentIndex: int or str): - if type(instrumentIndex) is str: - return self._request_resource('getInsolation2', instrumentIndex) - if type(instrumentIndex) is int: - return self._request_resource('getInsolation1', instrumentIndex) - - def getMeteoGPSLocation(self): - return self._request_resource('getMeteoGPSLocation') - - def getRelativeHumidity(self, instrumentIndex: int or str): - if type(instrumentIndex) is str: - return self._request_resource('getRelativeHumidity2', instrumentIndex) - if type(instrumentIndex) is int: - return self._request_resource('getRelativeHumidity1', instrumentIndex) - - def getWindDirection(self, instrumentIndex: int or str): - if type(instrumentIndex) is str: - return self._request_resource('getWindDirection2', instrumentIndex) - if type(instrumentIndex) is int: - return self._request_resource('getWindDirection1', instrumentIndex) - - def getWindSpeed(self, instrumentIndex: int or str): - if type(instrumentIndex) is str: - return self._request_resource('getWindSpeed2', instrumentIndex) - if type(instrumentIndex) is int: - return self._request_resource('getWindSpeed1', instrumentIndex) - - def getInstrumentNames(self): - return self._request_resource('getInstrumentNames') - - def getSupportedInstrumentTypes(self): - return self._request_resource('getSupportedInstrumentTypes') - - def getInstrumentNamesForType(self, instrumentType: str): - return self._request_resource('getInstrumentNamesForType', instrumentType) diff --git a/syslab-python/syslab/physical/Photovoltaics.py b/syslab-python/syslab/physical/Photovoltaics.py deleted file mode 100644 index 2915c78..0000000 --- a/syslab-python/syslab/physical/Photovoltaics.py +++ /dev/null @@ -1,61 +0,0 @@ -from ..core.SyslabUnit import SyslabUnit - - -class Photovoltaics(SyslabUnit): - """The Photovoltaics class represents a photovoltaic panel array in SYSLAB. - The Photovoltaics class is instantiated using a string with the unique name of the dumpload, ie. 'which' - - A full list of available panel arrays can be found by calling 'Photovoltaics.getAvailablePhotovoltaics()' - - Alternatively, the user may specify a host and port to connect to via the *host* and *port* arguments. - """ - - __PHOTOVOLTAICS = { - 'pv319': ('syslab-24.syslab.dk', '8080', 'pv319'), - 'pv715': ('syslab-10.syslab.dk', '8080', 'pv715'), - 'pv117': ('syslab-07.syslab.dk', '8080', 'pv117'), - 'simlab-03': ('192.168.0.103', '8080', 'pv715'), - 'simlab-13': ('192.168.0.113', '8080', 'pv319'), - 'vpv319': ('simlab-24', '8080', 'pv319'), - 'vpv715': ('simlab-10', '8080', 'pv715'), - } - - def __init__(self, which=None, host=None, port=None, unitname=None): - - baseurl = 'http://{host}:{port}/typebased_WebService_PV/PVSystemWebService/{unit_name}/' - super().__init__( - baseurl=baseurl, - which=which, - units=self.__PHOTOVOLTAICS, - host=host, - port=port, - unit_name=unitname, - unit_type="Photovoltaics") - - def getACActivePower(self): - return self._request_resource('getACActivePower') - - def getACReactivePower(self): - return self._request_resource('getACReactivePower') - - def getPacLimit(self): - return self._request_resource('getPacLimit') - - def getQSetpoint(self): - return self._request_resource('getQSetpoint') - - def getRatedPower(self): - return self._request_resource('getRatedP') - - def getName(self): - return self._request_resource('getSystemName') - - def setPacLimit(self, setPoint): - return self._request_resource('setPacLimit', setPoint, 'put') - - def setQSetpoint(self, Q): - return self._request_resource('setQ', Q, 'put') - - @staticmethod - def getAvailablePhotovoltaics(): - return list(Photovoltaics.__PHOTOVOLTAICS.keys()) diff --git a/syslab-python/syslab/physical/SwitchBoard.py b/syslab-python/syslab/physical/SwitchBoard.py deleted file mode 100644 index 383fc79..0000000 --- a/syslab-python/syslab/physical/SwitchBoard.py +++ /dev/null @@ -1,144 +0,0 @@ -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()) - - diff --git a/syslab-python/syslab/physical/WindTurbine.py b/syslab-python/syslab/physical/WindTurbine.py deleted file mode 100644 index 64c8f33..0000000 --- a/syslab-python/syslab/physical/WindTurbine.py +++ /dev/null @@ -1,36 +0,0 @@ -from ..core.SyslabUnit import SyslabUnit - - -class WindTurbine(SyslabUnit): - __TURBINES = { - 'gaia1': ('syslab-03.syslab.dk', '8080', 'gaia1'), - 'simlab-01': ('192.168.0.101', '8080', 'gaia1'), - 'vgaia1': ('simlab-03', '8080', 'gaia1'), - } - - def __init__(self, which=None, host=None, port=None, unitname=None): - - baseurl = 'http://{host}:{port}/typebased_WebService_WTGS/GaiaWindTurbineWebService/{unit_name}/' - super().__init__( - baseurl=baseurl, - which=which, - units=self.__TURBINES, - host=host, - port=port, - unit_name=unitname, - unit_type="WindTurbine") - - def getGeneratorName(self): - return self._request_resource('getGeneratorName') - - def getName(self): - return self.getGeneratorName() - - def getActivePower(self): - return self._request_resource('getActivePower') - - def getReactivePower(self): - return self._request_resource('getReactivePower') - - def getWindspeed(self): - return self._request_resource('getWindspeedOutsideNacelle') diff --git a/syslab-python/syslab/physical/__init__.py b/syslab-python/syslab/physical/__init__.py deleted file mode 100644 index e663243..0000000 --- a/syslab-python/syslab/physical/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -from .Battery import Battery -from .DieselGenerator import DieselGenerator -from .Dumpload import Dumpload -from .HeatSwitchBoard import HeatSwitchBoard -from .MeteoMast import MeteoMast -from .Photovoltaics import Photovoltaics -from .SwitchBoard import SwitchBoard -from .WindTurbine import WindTurbine -from .B2BConverter import B2BConverter -from .EVSE import EVSE diff --git a/syslab-python/syslab/virtual/FlexHouse_real.py b/syslab-python/syslab/virtual/FlexHouse_real.py deleted file mode 100644 index 25fb997..0000000 --- a/syslab-python/syslab/virtual/FlexHouse_real.py +++ /dev/null @@ -1,47 +0,0 @@ -class FlexHouse_real(): - def __init__(self): - pass - - def setActivePower(self, power_reference): - if power_reference < -10: - power_reference = -10 - - if power_reference > 0: - raise ValueError("Positive power means production") - self.__setValue('flexHousePowerRef_kW',-power_reference) - - def getTemperature(self): - return self.__getValue('flexHouseTemperature_C') - - def getActivePower(self): - return self.__getValue('flexHousePower_kW') - - def __getValue(self, key): - from requests import get, auth - import re - - if not type(key) is str: raise TypeError('Key should be a string, found {0}'.format(type(key))) - if key is '': raise TypeError('Key should be an empty string') - - url = 'http://whiteboard.syslab.dk/wbget.php' - r = get(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - entries = r.text.split('\n') - - result = None - - for entry in entries: - entry = entry.rstrip().lstrip() - g = re.match('SYSLAB@(\d+):{0}=(.+);'.format(key), entry) - if g is None: - continue - else: - g = g.groups() - result = g[1] - break - - return result - - def __setValue(selv, key, value): - from requests import post, auth - url = '{0}{1}?source=SYSLAB&{2}={3}'.format('http://whiteboard.syslab.dk/', 'wbset.php', key, str(value)) - post(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) \ No newline at end of file diff --git a/syslab-python/syslab/virtual/FlexHouse_sim.py b/syslab-python/syslab/virtual/FlexHouse_sim.py deleted file mode 100644 index 3b0720d..0000000 --- a/syslab-python/syslab/virtual/FlexHouse_sim.py +++ /dev/null @@ -1,51 +0,0 @@ -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 - - - diff --git a/syslab-python/syslab/virtual/FlexHouse_sim_batt.py b/syslab-python/syslab/virtual/FlexHouse_sim_batt.py deleted file mode 100644 index b1ce14b..0000000 --- a/syslab-python/syslab/virtual/FlexHouse_sim_batt.py +++ /dev/null @@ -1,52 +0,0 @@ -from ..physical.Battery import Battery -from datetime import datetime - - -class FlexHouse_sim_batt(Battery): - def __init__(self, which='localhost'): - super().__init__(which) - self.internal_temperature = 20 # Celsius - self.time = datetime.now() - self.loss = 1 # kW - if self.getRemainingFloodTime() == 300: - #print('Battery is not started. I will initiate start sequence, please retry in 5 minutes') - self.startBattery() - raise SystemError('Battery is not started. I will initiate start sequence, please retry in 5 minutes') - if (self.getRemainingFloodTime() > 1) and (self.getRemainingFloodTime() < 300): - #print('Battery is not ready yet') - raise SystemError('Battery is not ready yet, please wait {} seconds'.format(self.getRemainingFloodTime())) - - # The variables below are only relevant for implementing and 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/C - #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: - power_reference = 10 - if power_reference < 0: - raise ValueError("Negative power means production") - self.setActivePower(power_reference) - - def step_sim(self): - time_now = datetime.now() - time_delta = (time_now - self.time).total_seconds() - # Below is a simple house model. A more complex one can be implemented - self.internal_temperature += 0.5*(self.getActivePower().value/3600*time_delta) - 2*(self.loss/3600*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 - - - diff --git a/syslab-python/syslab/virtual/MetMast_wb.py b/syslab-python/syslab/virtual/MetMast_wb.py deleted file mode 100644 index 8389c17..0000000 --- a/syslab-python/syslab/virtual/MetMast_wb.py +++ /dev/null @@ -1,40 +0,0 @@ -class MetMast(): - def __init__(self): - pass - - def getTemperature(self): - return self.__getValue('OutsideTemperature') - - def getInsolation(self): - return self.__getValue('Insolation') - - def getWindDirection(self): - return self.__getValue('WindDirection') - - def getWindSpeed(self): - return self.__getValue('WindSpeed') - - def __getValue(self, key): - from requests import get, auth - import re - - if not type(key) is str: raise TypeError('Key should be a string, found {0}'.format(type(key))) - assert key is not '', 'Key should not be an empty string' - - url = 'http://whiteboard.syslab.dk/wbget.php' - r = get(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - entries = r.text.split('\n') - - result = None - - for entry in entries: - entry = entry.rstrip().lstrip() - g = re.match('SYSLAB@(\d+):{0}=(.+);'.format(key), entry) - if g is None: - continue - else: - g = g.groups() - result = g[1] - break - - return result diff --git a/syslab-python/syslab/virtual/WaterBoiler.py b/syslab-python/syslab/virtual/WaterBoiler.py deleted file mode 100644 index 1ef630e..0000000 --- a/syslab-python/syslab/virtual/WaterBoiler.py +++ /dev/null @@ -1,28 +0,0 @@ -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 diff --git a/syslab-python/syslab/virtual/__init__.py b/syslab-python/syslab/virtual/__init__.py deleted file mode 100644 index 1e136c6..0000000 --- a/syslab-python/syslab/virtual/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import * diff --git a/syslab-python/syslab/whiteboard/CommModule.py b/syslab-python/syslab/whiteboard/CommModule.py deleted file mode 100644 index 16f5096..0000000 --- a/syslab-python/syslab/whiteboard/CommModule.py +++ /dev/null @@ -1,143 +0,0 @@ -from syslab.whiteboard.WhiteBoardEntry import WhiteBoardEntry - -class CommModule(): - __BASE_URL = 'http://whiteboard.syslab.dk/' - - def __init__(self, namespace): - if not type(namespace) is str or len(namespace) == 0: raise TypeError('Namespace should be an non-empty string, found "{0}"'.format(type(namespace))) - - self.__namespace = namespace - self.__entries = {} - - def appendValue(self, key, value): - values = self.getList(key) - - if values == None: - self.publishToWhiteBoardServer(key, '[{0}]'.format(str(value))) - else: - values.append(value) - self.publishList(key, values) - - def getList(self, key): - from ast import literal_eval - if not type(key) is str: raise TypeError('Key should be a string, found {0}'.format(type(key))) - - entry = self.getFromWhiteBoardServer(key) - - values = None - if entry is not None: - values_str = str(entry.value) - values_str = values_str.replace('[','["').replace(']','"]'.replace(',','","')) - values = literal_eval(values_str) - if type(values) is not list: - values = [values, ] - return values - - def getAllEntries(self): - return self.__entries - - def update(self): - from requests import get, auth - import re - - url = CommModule.__BASE_URL + 'wbget.php' - r = get(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - entries = r.text.split('\n') - - result = {} - for entry in entries: - entry = entry.rstrip().lstrip() - g = re.match('SYSLAB@(\d+):{0}::(\w+)=(.+);'.format(self.__namespace), entry) - if g is None: - continue - else: - g = g.groups() - self.__entries[g[1]] = WhiteBoardEntry(g[1], g[2], g[0]) - - def printEntries(self): - if len(self.__entries)==0: - print('No WhiteBoard entries found for namespace: {0}'.format(self.__namespace)) - return - - for e in self.__entries: - print(e) - - def publishList(self, key, values): - from requests import post, auth - if not type(key) is str: raise TypeError('Key should be a string, found {0}'.format(type(key))) - if not type(values) is list: raise TypeError('Values should be represented by a list'.format(type(values))) - - values_str = "[{0}]".format(",".join(map(str,values))) - - url = '{0}{1}?source=SYSLAB&{2}::{3}={4}'.format(CommModule.__BASE_URL, 'wbset.php', self.__namespace, str(key), values_str) - post(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - - def getFromWhiteBoardServer(self, key): - """ - Go in and read/write the value from a key from the whiteboard. The value - should use decimal dot, not comma! - """ - from requests import get, auth - import re - - if not type(key) is str: raise TypeError('Key should be a string, found {0}'.format(type(key))) - if key is '': raise TypeError('Key should be an empty string') - - url = CommModule.__BASE_URL+'wbget.php' - r = get(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - entries = r.text.split('\n') - - result = None - - for entry in entries: - entry = entry.rstrip().lstrip() - g = re.match('SYSLAB@(\d+):{0}::{1}=(.+);'.format(self.__namespace, key), entry) - if g is None: - continue - else: - g = g.groups() - result = WhiteBoardEntry(key, g[1], g[0]) - break - - return result - - def publishToWhiteBoardServer(self, key, value): - from requests import post, auth - if not type(key) is str: raise TypeError('Key should be a string, found {0}'.format(type(key))) - if type(value) is list or type(value) is dict or type(value) is tuple: raise TypeError('This function only supports single values, found {0}'.format(type(value))) - - url = '{0}{1}?source=SYSLAB&{2}::{3}={4}'.format(CommModule.__BASE_URL, 'wbset.php', self.__namespace, str(key), str(value)) - post(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - - def getPoolKeys(self): - from requests import get, auth - import re - - url = CommModule.__BASE_URL+'wbget.php' - r = get(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - entries = r.text.split('\n') - - result = {} - for entry in entries: - entry = entry.rstrip().lstrip() - g = re.match('SYSLAB@(\d+):{0}::(\w+)=(.+)'.format(self.__namespace), entry) - if g is None: - continue - else: - g = g.groups() - result[g[1]] = g[2] - - return result - - def clearKey(self, key): - from requests import post, auth - if not type(key) is str: raise TypeError('Key should be a string, found {0}'.format(type(key))) - - url = '{0}{1}?source=SYSLAB&key={2}::{3}'.format(CommModule.__BASE_URL, 'wbclean.php', self.__namespace, str(key)) - post(url, auth=auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - - def clearAllKeys(self): - entries = self.getPoolKeys() - - for key in entries.keys(): - self.clearKey(key) diff --git a/syslab-python/syslab/whiteboard/WhiteBoardEntry.py b/syslab-python/syslab/whiteboard/WhiteBoardEntry.py deleted file mode 100644 index 54587a3..0000000 --- a/syslab-python/syslab/whiteboard/WhiteBoardEntry.py +++ /dev/null @@ -1,21 +0,0 @@ -class WhiteBoardEntry: - def __init__(self, key, value, time): - self.__key = key - self.__value = value - self.__time = int(time) - - @property - def key(self): - return self.__key - - @property - def value(self): - return self.__value - - @property - def time(self): - return self.__time - - def __str__(self): - from datetime import datetime - return 'WhiteBoardEntry: {0} -> {1} (@time: {2})'.format(self.key, self.value, datetime.fromtimestamp(self.time)) diff --git a/syslab-python/syslab/whiteboard/Whiteboard.py b/syslab-python/syslab/whiteboard/Whiteboard.py deleted file mode 100644 index 24a2347..0000000 --- a/syslab-python/syslab/whiteboard/Whiteboard.py +++ /dev/null @@ -1,23 +0,0 @@ -from bs4 import BeautifulSoup -import requests - -def getFromWhiteBoardServer(key): - """ - Go in and read/write the value from a key from the whiteboard. The value - should use decimal dot, not comma! - """ - - url = 'http://whiteboard.syslab.dk/wbget.php?mode=html' - r = requests.get(url, auth=requests.auth.HTTPBasicAuth('twinPV99', 'twinPV99')) - data = r.text - print(data) - soup = BeautifulSoup(data) - table = soup.find('table') - key = table.find('td', text=key) - value = key.findNext('td') - return value.text - - -def publishToWhiteBoardServer(key, value): - url = 'http://whiteboard.syslab.dk/wbset.php?source=SYSLAB&' + key + '=' + str(value) - r = requests.post(url, auth=requests.auth.HTTPBasicAuth('twinPV99', 'twinPV99')) diff --git a/syslab-python/syslab/whiteboard/__init__.py b/syslab-python/syslab/whiteboard/__init__.py deleted file mode 100644 index 3a95699..0000000 --- a/syslab-python/syslab/whiteboard/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .CommModule import CommModule -from .WhiteBoardEntry import WhiteBoardEntry -from .Whiteboard import publishToWhiteBoardServer, getFromWhiteBoardServer diff --git a/syslab-python/syslab_ctrl_log_SP_1687041679.json b/syslab-python/syslab_ctrl_log_SP_1687041679.json deleted file mode 100644 index e69de29..0000000 diff --git a/syslab-python/tests/__init__.py b/syslab-python/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/syslab-python/tests/runall.py b/syslab-python/tests/runall.py deleted file mode 100644 index e69de29..0000000 diff --git a/util.py b/util.py deleted file mode 100644 index 321e0e9..0000000 --- a/util.py +++ /dev/null @@ -1,5 +0,0 @@ -def clamp(a, x, b): - """ - Restrict x to lie in the range [a, b] - """ - return max(a, min(x, b))