diff --git a/src/dashboard/api.py b/src/dashboard/api.py index adab17e..7b6d8a7 100644 --- a/src/dashboard/api.py +++ b/src/dashboard/api.py @@ -374,6 +374,69 @@ def save_configuration(config: SystemConfig): except Exception as e: logger.error(f"Error saving configuration: {str(e)}") +# SCADA Configuration endpoints +@dashboard_router.get("/scada-status") +async def get_scada_status(): + """Get SCADA system status""" + try: + # Mock data for demonstration + return { + "modbus_enabled": True, + "modbus_port": 502, + "opcua_enabled": True, + "opcua_port": 4840, + "device_connections": 3, + "data_acquisition": True, + "last_update": datetime.now().strftime("%Y-%m-%d %H:%M:%S") + } + except Exception as e: + logger.error(f"Error getting SCADA status: {str(e)}") + raise HTTPException(status_code=500, detail=f"Failed to get SCADA status: {str(e)}") + +@dashboard_router.get("/scada-config") +async def get_scada_config(): + """Get current SCADA configuration""" + try: + # Mock data for demonstration + return { + "modbus": { + "enabled": True, + "port": 502, + "slave_id": 1, + "baud_rate": "115200" + }, + "opcua": { + "enabled": True, + "port": 4840, + "security_mode": "SignAndEncrypt" + }, + "device_mapping": "1,40001,Holding Register,Temperature Sensor\n2,40002,Holding Register,Pressure Sensor\n3,10001,Coil,Relay Output\n4,10002,Coil,Valve Control" + } + except Exception as e: + logger.error(f"Error getting SCADA configuration: {str(e)}") + raise HTTPException(status_code=500, detail=f"Failed to get SCADA configuration: {str(e)}") + +@dashboard_router.post("/scada-config") +async def save_scada_config(config: dict): + """Save SCADA configuration""" + try: + # In a real implementation, this would save to configuration + logger.info(f"SCADA configuration saved: {config}") + return {"success": True, "message": "SCADA configuration saved successfully"} + except Exception as e: + logger.error(f"Error saving SCADA configuration: {str(e)}") + return {"success": False, "error": str(e)} + +@dashboard_router.get("/test-scada") +async def test_scada_connection(): + """Test SCADA connection""" + try: + # Mock connection test + return {"success": True, "message": "SCADA connection test successful"} + except Exception as e: + logger.error(f"Error testing SCADA connection: {str(e)}") + return {"success": False, "error": str(e)} + # Signal Overview endpoints @dashboard_router.get("/signals") async def get_signals():