Skip to main content

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+

Metadata

Release files for mist-client 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for mist-client 0.3.0
File Interpreter ABI Platform
mist_client-0.3.0-py3-none-any.whl Python 3 none any Details

Release files / mist_client-0.3.0-py3-none-any.whl

Download URL mist_client-0.3.0-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
10336ceddf50e756bc995f5bcfc5dd7a8b8a59141e1063b6175ce8ae9eed2959
BLAKE2b-256 checksum
How to use checksums
b4c779b812d43b4473c8d1c3e8e3d60d022599635b60fc25566490f5b5819874
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

0.3.0 This release

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page