DISCOSClient ============ **DISCOSClient** is a Python library that provides a high-level interface to access real-time telemetry data and send control commands to DISCOS (Development of the Italian Single-dish COntrol System), the control software of the three INAF single-dish radiotelescopes, the Sardinia Radio Telescope (SRT), the Medicina Radio Telescope, and the Noto Radio Telescope. The library provides an interface for accessing the internal state of telescope components such as the `antenna`, `mount`, etc., for interacting with them, and for controlling the telescope by sending it commands. It is designed to be minimal, thread-safe, and self-describing via JSON schemas. DISCOSClient is built on top of `ZeroMQ `_, a high-performance asynchronous messaging library for distributed systems. All message transport is handled through `pyzmq `_, the official Python bindings for ZeroMQ. Key Features ------------ - Subscribe to one or multiple topics (e.g., `mount`, `antenna`) - Send commands to DISCOS - Automatically decodes incoming JSON messages into nested Python namespaces - Supports both blocking and non-blocking access to telemetry data - Cross-platform: works on Linux, macOS, and Windows - Minimal dependencies: only 2 non-built-in Python libraries are used for maximum portability Goals ----- The main goals of `DISCOSClient` are: - To simplify the development of monitoring, visualization and control tools for telescope systems - To allow easy integration with third-party Python applications and dashboards - To provide a minimal yet powerful abstraction over ZMQ-based message subscriptions and command dispatching Overview -------- The library exposes a main class `DISCOSClient` in order to access the telescope telemetry data and send commands to it, along with three pre-configured classes, one for each telescope: - `SRTClient` client for the Sardinia Radio Telescope - `MedicinaClient` client for the Medicina Radio Telescope - `NotoClient` client for the Noto Radio Telescope These specialized clients simplify the setup by pre-filling the `telescope`, `address` and `port` arguments. Internally, each client instance manages a subscription socket for telemetry and a dedicated interface for command transmission. Incoming JSON messages are automatically parsed and stored as structured Python objects, which can be queried or watched. For further details, installation instructions, and usage examples, see the sections below. .. toctree:: :maxdepth: 2 :caption: Getting Started install .. toctree:: :maxdepth: 2 :caption: User Guide :name: user-guide user/user schemas/schemas .. toctree:: :maxdepth: 2 :caption: API Reference :name: api-ref api/api .. toctree:: :maxdepth: 1 :caption: Project Info developer/developer Indices and tables ================== * :ref:`genindex`