Update camera management and MQTT logging for improved functionality
- Changed log level in configuration from WARNING to INFO for better visibility of system operations. - Enhanced StandaloneAutoRecorder initialization to accept camera manager, state manager, and event system for improved modularity. - Updated recording routes to handle optional request bodies and improved error logging for better debugging. - Added checks in CameraMonitor to determine if a camera is already in use before initialization, enhancing resource management. - Improved MQTT client logging to provide more detailed connection and message handling information. - Added new MQTT event handling capabilities to the VisionApiClient for better tracking of machine states.
This commit is contained in:
@@ -4,6 +4,7 @@ Recording-related API routes.
|
||||
|
||||
import logging
|
||||
from fastapi import FastAPI, HTTPException
|
||||
from typing import Optional
|
||||
from ...camera.manager import CameraManager
|
||||
from ..models import StartRecordingResponse, StopRecordingResponse, StartRecordingRequest
|
||||
from ...core.timezone_utils import format_filename_timestamp
|
||||
@@ -17,12 +18,19 @@ def register_recording_routes(
|
||||
"""Register recording-related routes"""
|
||||
|
||||
@app.post("/cameras/{camera_name}/start-recording", response_model=StartRecordingResponse)
|
||||
async def start_recording(camera_name: str, request: StartRecordingRequest):
|
||||
async def start_recording(camera_name: str, request: Optional[StartRecordingRequest] = None):
|
||||
"""Manually start recording for a camera"""
|
||||
try:
|
||||
if not camera_manager:
|
||||
logger.error("Camera manager not available")
|
||||
raise HTTPException(status_code=503, detail="Camera manager not available")
|
||||
|
||||
# Handle case where request body might be None or empty
|
||||
if request is None:
|
||||
request = StartRecordingRequest()
|
||||
|
||||
logger.info(f"📹 Starting recording for {camera_name} - filename: {request.filename}, exposure_ms: {request.exposure_ms}, gain: {request.gain}, fps: {request.fps}")
|
||||
|
||||
success = camera_manager.manual_start_recording(
|
||||
camera_name=camera_name,
|
||||
filename=request.filename,
|
||||
@@ -37,19 +45,28 @@ def register_recording_routes(
|
||||
if request.filename:
|
||||
timestamp = format_filename_timestamp()
|
||||
actual_filename = f"{timestamp}_{request.filename}"
|
||||
else:
|
||||
timestamp = format_filename_timestamp()
|
||||
camera_config = camera_manager.get_camera_config(camera_name)
|
||||
video_format = camera_config.video_format if camera_config else "mp4"
|
||||
actual_filename = f"{camera_name}_manual_{timestamp}.{video_format}"
|
||||
|
||||
logger.info(f"✅ Recording started successfully for {camera_name}: {actual_filename}")
|
||||
return StartRecordingResponse(
|
||||
success=True,
|
||||
message=f"Recording started for {camera_name}",
|
||||
filename=actual_filename
|
||||
)
|
||||
else:
|
||||
logger.error(f"❌ Failed to start recording for {camera_name} - manual_start_recording returned False")
|
||||
return StartRecordingResponse(
|
||||
success=False,
|
||||
message=f"Failed to start recording for {camera_name}"
|
||||
message=f"Failed to start recording for {camera_name}. Check camera status and logs."
|
||||
)
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"Error starting recording: {e}")
|
||||
logger.error(f"❌ Error starting recording for {camera_name}: {e}", exc_info=True)
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.post("/cameras/{camera_name}/stop-recording", response_model=StopRecordingResponse)
|
||||
|
||||
Reference in New Issue
Block a user