diff --git a/app/routers.py b/app/routers.py index a84c91a..af62fde 100644 --- a/app/routers.py +++ b/app/routers.py @@ -657,8 +657,9 @@ async def stop_cycle(unit_id: str, payload: StopCyclePayload = None, db: Session return {"status": "ok", "unit_id": unit_id, **result} except Exception as e: - logger.error(f"Stop cycle failed for {unit_id}: {e}") - raise HTTPException(status_code=502, detail=str(e)) + error_msg = str(e) if str(e) else f"{type(e).__name__}: No details available" + logger.error(f"Stop cycle failed for {unit_id}: {error_msg}") + raise HTTPException(status_code=502, detail=error_msg) @router.post("/{unit_id}/store") diff --git a/app/services.py b/app/services.py index e4268f4..f7dbc72 100644 --- a/app/services.py +++ b/app/services.py @@ -1381,8 +1381,13 @@ class NL43Client: result["stopped"] = True logger.info(f"[STOP-CYCLE] Measurement stopped") - # Step 2: Enable FTP - logger.info(f"[STOP-CYCLE] Step 2: Enabling FTP") + # Step 2: Reset FTP (disable then enable) to clear any stale state + logger.info(f"[STOP-CYCLE] Step 2: Resetting FTP (disable then enable)") + try: + await self.disable_ftp() + logger.info(f"[STOP-CYCLE] FTP disabled") + except Exception as e: + logger.warning(f"[STOP-CYCLE] FTP disable failed (may already be off): {e}") await self.enable_ftp() result["ftp_enabled"] = True logger.info(f"[STOP-CYCLE] FTP enabled")