Within eulabeia we have four different roles.
Although one system can have multiple roles (e.g. a sensor can be a scanner) we differentiate based on:
There can be multiple clients, sensor and scanner within the eulabeia concept but just one director.
The client should just communicate with the director, the director communicates with sensor, sensor with scanner and scanner with director or sensor depending on the implementation and context.
This means that the communication between an external client and director is strict while the internal communication is less so.
This allows us to make internal changes (behind director) without having to change the logic a client communicates with eulabeia, too. Another reason is that this also allows us to introduce supportive scanners without the client knowing about these and thus allows extending results in a transparent fashion.
To make the communication more transparent for audits or other special cases (like an indirect scanner) each message is send via a broker based on MQTTv5.
In theory a client can directly send cmds to a specific sensor, but it is not supported or recommended and on its own risk.
The main responsibility of a director is to delegate requests from a client to a corresponding sensor or serve data when available.
A director is subscribed to the following topics:
scanner/cmd/scan/director
, see scanscanner/cmd/target/director
, see targetscanner/cmd/sensor/director
, see sensorscanner/cmd/vt/director
, see vt
The main responsibility of a sensor is to to handle start
events and control that the actual scan is executed.
A scanner is either also a sensor or is controlled by a dedicated sensor.