Check whether you use the standard (3D) suite, or the 2D one (colliders 2d, Rigidbody2d etc), you also need to use a matching action, or likewise in your code.
For reading variables like this, you don't need an Fsm... property. You can get it the usual way, which might be sufficient for your case, i.e. like it's in this script:
public PhysicMaterial physicsMaterial;
And then access it as usual.
If you want to store the material like a FSM variable, you apparently have to cast it as the type (I only found this out earlier today, so it's not super tested and may not be the best way to do this).
public FsmObject fsmObject;
PhysicMaterial physicsMaterial;
And then something like this (check the component etc).
var myGameObject = Fsm.GetOwnerDefaultTarget(gameObject);
if (myGameObject == null) return;
var theCollider = myGameObject.GetComponent<Collider???>();
physicsMaterial = theCollider.material;
fsmObject.Value = physicsMaterial;
and to do the reverse (in a different action) to read a FsmObject as a PhysicsMaterial, you could try this:
public FsmObject fsmObject;
PhysicMaterial physicsMaterial;
...
physicsMaterial = (PhysicsMaterial)fsmObject.Value;
This odd construction passes the fsmObject back into a PhysicsMaterial type, and you can then use it again the usual way, e.g. to get the properties.
But I did something like this only earlier today, and I am more of a newbie when it comes to code, but maybe that helps.