Installing the entire SUSANOO system is unnecessary. The basic installation unit is the DeviceClass package distributed for the instrument you want to use. When you install that package with pip, pip resolves the Python dependencies declared by the package. Ordinary users do not need to install communication frames separately in advance.
python -m pip install <device-package>
Replace <device-package> with the actual PyPI distribution name. A Python import name, a PyPI distribution name, and a command name do not necessarily match. See the DeviceClass list and the README or PyPI page for each package for its exact name and availability. Devices that are not publicly distributed may require separate access or distribution arrangements.
| Component | Responsibility | What users normally do |
|---|---|---|
| DeviceClass | Instrument-specific control, operations, and status acquisition | Install the package for the instrument |
| Communication frame | Shared functions for exposing and calling a DeviceClass over a network | No separate action for dependencies declared by the DeviceClass |
| DeviceProxy / Client | Operate a remote DeviceClass through an interface resembling a Python object | Follow the device package documentation |
| Common utilities | Logging, process execution, management, and related functions | Use as required by the device package and application |
Communication frames include ese774-frame (REST / FastAPI), grpc-frame (gRPC), and tango-frame (TANGO). Common components include xlogger-py and device_proxy_factory. These are not packages that every user must install individually. Each DeviceClass package determines its required dependencies.
Local use: Import the installed DeviceClass as an ordinary Python class and use it directly. Neither a device server nor a running communication frame is required.
Network use: On the computer connected to the instrument, use a device-server startup script included with the DeviceClass package. A client connects using the corresponding communication method. Instrument-specific behavior remains in the DeviceClass; shared server functions belong to the communication frame. There is no need to reimplement instrument control for each server protocol.
Local: Application ── DeviceClass ── Instrument
Network:
Application ── Client / Proxy ── Network ── Frame / Server ── DeviceClass ── Instrument
For concrete communication examples, see the ese774 Quick Start. For API exposure, see Dynamic Dispatch.
The following command convention avoids making users locate example programs and server startup scripts within each installed package. module_name is a placeholder; consult the individual package documentation for the actual command name.
module_name install sample
module_name install server_ese774
module_name install server_grpc
module_name install server_tango
module_name install windows
sample copies example programs, while server_ese774, server_grpc, and server_tango copy the corresponding device-server startup scripts into the current working directory. These commands do not install the communication frame itself. Users can inspect and, where necessary, edit the copied scripts and configuration before starting a server.
windows concerns deployment of a device server as a Windows service where the DeviceClass provides that capability. Windows service registration and its configuration GUI are the parts still being developed. Configuration includes such values as the service name, execution environment, startup script, configuration file, listening address, and port. Whether Windows-service deployment is supported is determined by each DeviceClass package.
Package-specific support: Each DeviceClass package decides which of
sample,server_ese774,server_grpc,server_tango, andwindowsit provides. The existence of a communication frame does not imply that a particular DeviceClass supports it: the package must supply the corresponding server startup script. Some packages have not yet implemented the unified command interface. Check the individual package documentation for the files and commands actually provided.
When developing a new DeviceClass or device server, developers may install a communication frame directly. This is not a prerequisite for normal users.
python -m pip install ese774-frame
python -m pip install grpc-frame
Refer to each frame project’s documentation for details. The distribution principle is to declare dependencies in the DeviceClass package rather than require users to install components manually in a particular order.
The earlier instructions described checking out the x_logger, ese774_frame, and grpc_frame source directories and installing them sequentially with pip install .. That procedure predates the PyPI distribution and DeviceClass-based dependency management and is not the current standard installation method. The original article is preserved in Japanese as Previous installation instructions.
Author: Kengo NAKADA