From 9dabcc81d04f1acf97ba4a55b84b82cd5104f963 Mon Sep 17 00:00:00 2001 From: Etienne Chassaing <60154720+cetiennec@users.noreply.github.com> Date: Mon, 18 Aug 2025 10:30:41 +0200 Subject: [PATCH] Adds Qperm setpoint --- classCAN.py | 2 +- main.py | 29 +++++++++++++++-------------- templates/control.html | 31 ++++++++++++++++++++++++++----- utils/download_recordings | 2 +- 4 files changed, 43 insertions(+), 21 deletions(-) diff --git a/classCAN.py b/classCAN.py index 26f76fc..566a484 100644 --- a/classCAN.py +++ b/classCAN.py @@ -302,7 +302,7 @@ class CANBackend: } return state_map.get(state_val, f"UNKNOWN({state_val})") - def send_state_command(self, state: str, pu_number: int, ploop_setpoint: float): + def send_state_command(self, state: str, pu_number: int, ploop_setpoint: float, qperm_setpoint : float): # TODO : use qperm_setpoint """ Send the PU state and pressure loop setpoint to the master node. diff --git a/main.py b/main.py index aa95eb8..f10a9c7 100644 --- a/main.py +++ b/main.py @@ -55,8 +55,6 @@ latest_data: Dict[str, Any] = { active_PUs: list[int] = [] -DEFAULT_FEED_VALVE = 0.0 - # RECORDER recording_flag = False recording_task = None @@ -100,7 +98,7 @@ def format_PU_data(data): "MV07_sp": np.round(data.get("MV07_sp", 0.0), 1), "MV08": np.round(data.get("MV08", 0.0), 1), "MV08_sp": np.round(data.get("MV08_sp", 0.0), 1), - "Qdrain_sp" : np.round(data.get("Qdrain_sp", 0.0), 1), + "Qdrain_sp" : 60*np.round(data.get("Qdrain_sp", 0.0), 2), } def format_DS_data(data): @@ -240,8 +238,7 @@ def is_connected(): # PU CONTROL @app.post("/command/{state}/pu/{pu_number}") -def send_command(state: str, pu_number: int, ploop_setpoint: float = Query(...)): - global DEFAULT_FEED_VALVE +def send_command(state: str, pu_number: int, ploop_setpoint: float = Query(...), qperm_setpoint: float = Query(...)): VALID_STATES = { "IDLE", "PRE-PRODUCTION", @@ -259,6 +256,8 @@ def send_command(state: str, pu_number: int, ploop_setpoint: float = Query(...)) logging.info(f"Sending state '{state}' to PU {pu_number}") + pu_number = [pu_number] if pu_number !=3 else [1,2] # Temporary way of starting two pus + print("pu_number", pu_number) if state == "IDLE": set_patient_skid_users(0) url = f"http://192.168.1.28:8000/stop_test" @@ -270,15 +269,17 @@ def send_command(state: str, pu_number: int, ploop_setpoint: float = Query(...)) logging.info(f"Closing valves on Patient Skid: {response.status_code}") try: - can_backend.send_state_command(state, pu_number, ploop_setpoint) - current_state = can_backend.read_current_state(pu_number) - return { - "status": "success", - "command": state, - "pu": pu_number, - "ploop_setpoint": ploop_setpoint, - "current_state": current_state, - } + for pu in pu_number: + can_backend.send_state_command(state, pu, ploop_setpoint, qperm_setpoint) + current_state = can_backend.read_current_state(pu) + return { + "status": "success", + "command": state, + "pu": pu, + "ploop_setpoint": ploop_setpoint, + "qperm_setpoint": qperm_setpoint, + "current_state": current_state, + } except Exception as e: raise HTTPException(status_code=500, detail=str(e)) diff --git a/templates/control.html b/templates/control.html index 6861483..18cd510 100644 --- a/templates/control.html +++ b/templates/control.html @@ -271,21 +271,21 @@
- +
- +
- +
@@ -297,6 +297,20 @@
+ +
+ +
+ 1200 + 1200 + 1600 +
+ +
+ +
@@ -363,6 +377,11 @@ document.getElementById('currentValue').textContent = value; } + function updateQpermSetpoint(value) { + document.getElementById('qpermCurrent').textContent = value; + } + + async function getConnectionStatus() { const response = await fetch('/is_connected', { method: 'GET' }); const data = await response.json(); @@ -404,7 +423,9 @@ async function sendCommand(state, puNumber, buttonEl) { const ploopSetpoint = document.getElementById('ploopSetpoint').value; - await fetch(`/command/${state}/pu/${puNumber}?ploop_setpoint=${ploopSetpoint}`, { method: 'POST' }); + const qpermSetpoint = document.getElementById('qpermSetpoint').value; + + await fetch(`/command/${state}/pu/${puNumber}?ploop_setpoint=${ploopSetpoint}&qperm_setpoint=${qpermSetpoint}`, { method: 'POST' }); document.querySelectorAll('button').forEach(btn => { btn.classList.remove('in-progress', 'ready', 'production'); }); @@ -554,7 +575,7 @@ console.error('Element with selector "#Qconso .monitor-value" not found.'); } } - + } catch (error) { console.error('Error fetching monitor data:', error); } diff --git a/utils/download_recordings b/utils/download_recordings index b503c72..e2ca32a 100644 --- a/utils/download_recordings +++ b/utils/download_recordings @@ -4,7 +4,7 @@ PI_USER="hmi" PI_HOST="192.168.1.46" REMOTE_FOLDER="/home/hmi/Desktop/HMI/recordings" -LOCAL_FOLDER="/Users/Etienne/GitHub/NorthStar-HMI" +LOCAL_FOLDER="/Users/Etienne/Library/CloudStorage/OneDrive-nehemis/nehemis - 04 Records/HMI_data" echo "Starting folder download from Raspberry Pi"