I would like to track camera status in Smart client (is camera recording or not, is it offline) and I tried to use EventTracer example as a starting point. Is this a way to use this example and filter events to see only one camera? Or maybe should I use some other example?
The mechanism of getting messages by subscribing to the NewEventsIndication will give you all events that happen and you have no way of asking the Event Server to apply some filtering. I think it was discussed here at Milestone whether a server-side filtering for NewEventsIndication should be introduced but it never has been.
You can filter the messages after the reception. If you want messages pertaining to one camera do a test if BaseEvent.EventHeader.Source contains the camera. Check if BaseEvent.EventHeader.Source.FQID.ObjectId matches the camera (Item.FQID.ObjectId).
It would be possible to use the Recorder Status Service from a Smart Client plugin. It is the most direct route to the information. The MIP SDK includes proxy classes. You can see standalone samples they are the Status xx samples.
https://doc.developer.milestonesys.com/html/index.html?base=statushelp/index.html&tree=tree_3.html
It would be possible to use the Event and State Websocket API from a Smart Client plugin.