Finally i got it working...

If anyone have the same problem or some ideas to improve the code, here it is:

var sPosition = Cesium.Cartesian3.fromDegrees(station[1], station[0], station[2]);

var pPosition = viewer.dataSources.get(0).entities.getById("CesiumPlane").position.getValue(time);

var target = Cesium.Ellipsoid.WGS84.cartesianToCartographic(pPosition);

target.latitude = target.latitude * (180 / Math.PI);

target.longitude = target.longitude * (180 / Math.PI);

var eye = Cesium.Ellipsoid.WGS84.cartesianToCartographic(Cesium.Cartesian3.fromDegrees(station[1], station[0], station[2]));

eye.latitude = eye.latitude * (180 / Math.PI);

eye.longitude = eye.longitude * (180 / Math.PI);

var bearing = bearingDegrees(target.latitude, target.longitude, eye.latitude, eye.longitude);

bearing = (bearing-180) * (Math.PI / 180);

var distance = Cesium.Cartesian3.distance(sPosition, pPosition);

var diff = target.height - eye.height;

var tilt = Math.atan(diff / distance);

var camera = viewer.camera;

camera.setView({

position: Cesium.Cartesian3.fromDegrees(station[1], station[0], station[2]),

heading: bearing,

pitch: tilt,

roll: 0.0

});

viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);

function bearingDegrees(lat1, long1, lat2, long2) {

var degToRad = Math.PI / 180.0;

var phi1 = lat1 * degToRad;

var phi2 = lat2 * degToRad;

var lam1 = long1 * degToRad;

var lam2 = long2 * degToRad;

return Math.atan2(Math.sin(lam2 - lam1) * Math.cos(phi2),

Math.cos(phi1) * Math.sin(phi2) - Math.sin(phi1) * Math.cos(phi2) * Math.cos(lam2 - lam1)

) * 180 / Math.PI;

}