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 authenticated as the "mist" user
YAMCS_USERNAME=mist YAMCS_PASSWORD=mist mist-client tm list

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

# Download with specific time range
mist-client 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-client tm get -p "/PUS/Large_Data" --defrag all -f ./fragments

# Show help
mist-client --help
mist-client tm get --help

Library Usage

from mist_client import TelemetryDownloader
from datetime import datetime, timedelta, timezone
from yamcs.client import YamcsClient

# Create downloader
td = TelemetryDownloader(client=YamcsClient(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(client: YamcsClient, 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.3.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mist_client-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 10336ceddf50e756bc995f5bcfc5dd7a8b8a59141e1063b6175ce8ae9eed2959
MD5 7be87c0c190ee66e58156653a4bed216
BLAKE2b-256 b4c779b812d43b4473c8d1c3e8e3d60d022599635b60fc25566490f5b5819874

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