Dev and simulator fixes
- Export ParameterEnum from __init__ - Add flask and numpy to dev dependencies - Fix sim: remove run() call from test fixture, handle WEBSERVER_LIST_VARIABLES and WEBSERVER_BATCH_GET, normalize variable names to uppercase - Remove RODS params from sim state (no longer part of sim model) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
c180fe4434
commit
5cfedceab7
@ -1 +1 @@
|
||||
from nucon.core import Nucon, PumpStatus, PumpDryStatus, PumpOverloadStatus, PumpOverloadStatus, CoreState, CoolantCoreState, RodsState, NuconParameter, BreakerStatus
|
||||
from nucon.core import Nucon, ParameterEnum, PumpStatus, PumpDryStatus, PumpOverloadStatus, CoreState, CoolantCoreState, RodsState, NuconParameter, BreakerStatus
|
||||
|
||||
44
nucon/sim.py
44
nucon/sim.py
@ -57,16 +57,6 @@ class OperatingState(Enum):
|
||||
'COOLANT_CORE_CIRCULATION_PUMP_1_SPEED': [0.0],
|
||||
'COOLANT_CORE_CIRCULATION_PUMP_2_SPEED': [0.0],
|
||||
'RODS_STATUS': ['INACTIVE'],
|
||||
'RODS_MOVEMENT_SPEED': [0.0],
|
||||
'RODS_MOVEMENT_SPEED_DECREASED_HIGH_TEMPERATURE': [False],
|
||||
'RODS_DEFORMED': [False],
|
||||
'RODS_TEMPERATURE': (18.0, 22.0),
|
||||
'RODS_MAX_TEMPERATURE': [1000.0],
|
||||
'RODS_POS_ORDERED': [0.0],
|
||||
'RODS_POS_ACTUAL': [0.0],
|
||||
'RODS_POS_REACHED': [True],
|
||||
'RODS_QUANTITY': [100],
|
||||
'RODS_ALIGNED': [True],
|
||||
'GENERATOR_0_KW': [0.0],
|
||||
'GENERATOR_1_KW': [0.0],
|
||||
'GENERATOR_2_KW': [0.0],
|
||||
@ -140,16 +130,6 @@ class OperatingState(Enum):
|
||||
'COOLANT_CORE_CIRCULATION_PUMP_1_SPEED': (95.0, 100.0),
|
||||
'COOLANT_CORE_CIRCULATION_PUMP_2_SPEED': (95.0, 100.0),
|
||||
'RODS_STATUS': ['ACTIVE'],
|
||||
'RODS_MOVEMENT_SPEED': (0.9, 1.1),
|
||||
'RODS_MOVEMENT_SPEED_DECREASED_HIGH_TEMPERATURE': [False],
|
||||
'RODS_DEFORMED': [False],
|
||||
'RODS_TEMPERATURE': (290.0, 310.0),
|
||||
'RODS_MAX_TEMPERATURE': [1000.0],
|
||||
'RODS_POS_ORDERED': [50.0],
|
||||
'RODS_POS_ACTUAL': (49.5, 50.5),
|
||||
'RODS_POS_REACHED': [True],
|
||||
'RODS_QUANTITY': [100],
|
||||
'RODS_ALIGNED': [True],
|
||||
'GENERATOR_0_KW': (950.0, 1050.0),
|
||||
'GENERATOR_1_KW': (950.0, 1050.0),
|
||||
'GENERATOR_2_KW': (950.0, 1050.0),
|
||||
@ -279,19 +259,35 @@ class NuconSimulator:
|
||||
raise ValueError(f"Invalid value specification for parameter {param_name}")
|
||||
self.set(param, value, force=True)
|
||||
|
||||
def _run(self, port: int = 8786, host: str = 'localhost', debug: bool = False):
|
||||
def _run(self, host: str = 'localhost', port: int = 8786, debug: bool = False):
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/', methods=['GET'])
|
||||
def get_parameter():
|
||||
variable = request.args.get('variable')
|
||||
variable = request.args.get('variable', '').upper()
|
||||
if not variable:
|
||||
return jsonify({"error": "No variable specified"}), 400
|
||||
|
||||
|
||||
if variable == 'WEBSERVER_LIST_VARIABLES':
|
||||
return '\n'.join(self._nucon._parameters.keys()), 200
|
||||
|
||||
if variable == 'WEBSERVER_BATCH_GET':
|
||||
value_arg = request.args.get('value', '')
|
||||
names = [n.strip().upper() for n in value_arg.split(',') if n.strip()]
|
||||
if not names:
|
||||
names = list(self._nucon._parameters.keys())
|
||||
result = {}
|
||||
for name in names:
|
||||
try:
|
||||
result[name] = str(self.get(name))
|
||||
except (KeyError, AttributeError):
|
||||
pass
|
||||
return jsonify(result), 200
|
||||
|
||||
try:
|
||||
value = self.get(variable)
|
||||
return str(value), 200
|
||||
except KeyError:
|
||||
except (KeyError, AttributeError):
|
||||
return jsonify({"error": f"Unknown variable: {variable}"}), 404
|
||||
|
||||
@app.route('/', methods=['POST'])
|
||||
|
||||
@ -28,7 +28,7 @@ dependencies = [
|
||||
Homepage = "https://git.dominik-roth.eu/dodox/nucon"
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = ["pytest"]
|
||||
dev = ["pytest", "flask", "numpy"]
|
||||
rl = ["gymnasium", "numpy"]
|
||||
sim = ["torch", "flask"]
|
||||
model = ["torch", "numpy"]
|
||||
|
||||
@ -6,7 +6,6 @@ from nucon.sim import NuconSimulator, OperatingState
|
||||
@pytest.fixture(scope="module")
|
||||
def simulator_setup():
|
||||
simulator = NuconSimulator(port=8786)
|
||||
simulator.run()
|
||||
time.sleep(1) # Give the simulator time to start
|
||||
nucon = Nucon(port=8786)
|
||||
return simulator, nucon
|
||||
|
||||
Loading…
Reference in New Issue
Block a user