Skip to main content

CLI client for the MIST mission control system

Project description

MIST Client

CLI client for the MIST mission control system.

Features

  • Download telemetry packets from Yamcs by packet name and time range
  • Support for defragmented telemetry blocks (complete and incomplete)
  • Strips PUS TM headers (14 bytes)
  • Both CLI and library interfaces
  • Hole filling for incomplete defragmented blocks

Installation

From PyPI (Recommended)

# Create a virtual environment first (recommended)
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Then install using pip
pip install mist-client

From Source

It's recommended to use a virtual environment to avoid conflicts with system packages:

# Navigate to the client directory
cd yamcs/client

# Create a virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate

# Install the package
pip install -e ".[dev]"

Quick Start

Command Line Usage

# List available telemetry packet formats
mist-cli tm list

# Download housekeeping telemetry from the last hour
mist-cli tm get -p "/PUS/HOUSEKEEPING" -f /tmp/telemetry

# Download with specific time range
mist-cli tm get -p "/PUS/TC_VERIFICATION" \
  -a "2026-03-26T00:00:00" \
  -b "2026-03-27T00:00:00" \
  -f ./output

# Download defragmented telemetry (all blocks including incomplete)
mist-cli tm get -p "/PUS/Large_Data" --defrag all -f ./fragments

# Show help
mist-cli --help
mist-cli tm get --help

Library Usage

from mist_client import TelemetryDownloader
from datetime import datetime, timedelta, timezone

# Create downloader
td = TelemetryDownloader(url="localhost:8090", instance="mist")

# Download telemetry
now = datetime.now(tz=timezone.utc)
start = now - timedelta(hours=1)

telemetries = td.get_telemetry(
    packet_name="/PUS/HOUSEKEEPING",
    start=start,
    stop=now
)

# Process in memory
for tm in telemetries:
    print(f"APID={tm.apid}, packet={tm.packet_name}")
    print(f"Data length: {len(tm.data)} bytes")
    print(f"Complete: {tm.is_complete()}")

Library API Reference

TelemetryDownloader

Main class for downloading telemetry.

TelemetryDownloader(url: str = "localhost:8090", instance: Optional[str] = None)

Methods:

get_telemetry(packet_name, start, stop, defrag=None) -> List[Telemetry]

Retrieve telemetry packets from Yamcs.

Parameters:

  • packet_name (str): Yamcs packet name
  • start (datetime, optional): Start time (inclusive)
  • stop (datetime, optional): Stop time (exclusive)
  • defrag (str, optional): "complete", "all", or None

Returns: List of Telemetry objects

Telemetry

Dataclass representing a telemetry packet or defragmented block.

Attributes:

  • apid (int): Application Process ID
  • packet_name (str): Yamcs packet name (e.g., "/PUS/HOUSEKEEPING")
  • time (datetime): Generation timestamp
  • data (bytes): Source data (headers stripped)
  • holes (List[Tuple[int, int]]): Missing byte ranges (empty if complete)

Methods:

  • is_complete() -> bool: Check if telemetry has no missing fragments

Running Tests

pytest

Troubleshooting

"Could not connect to Yamcs"

  • Verify Yamcs is running: Check http://localhost:8090/ in a browser
  • Check the URL: Use --url to specify the correct server
  • Check the instance: Set YAMCS_INSTANCE if needed.

"No telemetry found"

  • Verify the packet name exists in Yamcs MDB
  • Check the time range includes actual telemetry data
  • Use the Yamcs web interface to verify data availability

Import errors

  • Make sure you installed the package: pip install -e .
  • Check Python version: Requires Python 3.8+

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mist_client-0.1.1-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file mist_client-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mist_client-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for mist_client-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d29cdeca5fd4be143f8e267f9fd78b63268755126bea842c6808dfdef2b359f4
MD5 f1935fb7f64d6933b34a975e52894bae
BLAKE2b-256 6f5fe165b7b9ecb372d1963cf324791610739b7e2ee6e633a9ae7de37c4078e1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page