User event

Hello Tango Community,

I have been using Tango for a while, but have never used "User event".
Are there any examples or use-cases?

Regards.
Hi Alex,

User events are device server dependent and can be used to send an event which is device server specific and does not fit into the strict definition of CHANGE, PERIODIC or ARCHIVE or any of the other pre-defined event types. Because they are device dependent they must be triggered by the device server using the manual push call. Examples are anything you need to inform clients about via events e.g. DeviceOnFire

Here is some documentation on pushing events from the server:

https://tango-controls.readthedocs.io/en/latest/development/device-api/generating-events.html#generating-events-in-a-device-server

Andy
Edited 5 months ago
Hi Andy,

Thanks for your reply!
I understand the general concept of a user event.
I'm curious about the experience of using it in "real world" devices.

At the moment I can think of the following use-cases: sending attribute value with some meta-data, sending a kind of "diff" for a large attribute.
I don't have a real world example in mind right now, I will ask around to see how it is used at the ESRF and feedback to the forum …
I've performed some tests and checked source code.
It seems that current ZMQ-based implementation does not use filterable_names and filterable_vals arguments.
More over, I misunderstood the purpose of these arguments.
So my idea of attaching meta information was wrong.
Hi Alex

Yes, you are right. The ZMQ events don't use those parameters. They were only used by the previous event system: notifyd.

We also discovered that recently in PyTango, and have updated the docstrings. That will be in PyTango v10.0.0.

/Anton
Hi AlexS

AlexS
I'm curious about the experience of using it in "real world" devices.

One use case could be to inform subscribers when a device is leaving init_device or is entering delete_device. This allows subscribers to know when a device should be ready or that it will be unavailable.

A simple example for PyTango is here.

Cheers,
Thomas
 
Register or login to create to post a reply.