Skip to main content

CLI tool for downloading telemetry from MIST Yamcs mission control system

Project description

MIST CLI

CLI tool for downloading telemetry from MIST Yamcs 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)

# Install the package
pip install mist-client

# Or create a virtual environment first (recommended)
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install mist-client

From Source

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

# Navigate to the cli directory
cd yamcs/cli

# Create a virtual environment
python3 -m venv venv

# Activate the virtual environment
# On macOS/Linux:
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: Use --instance or set YAMCS_INSTANCE

"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 Distribution

mist_client-0.1.0.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

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

mist_client-0.1.0-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file mist_client-0.1.0.tar.gz.

File metadata

  • Download URL: mist_client-0.1.0.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for mist_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 dd9c6a22b8e80dcec75fabf00b645da3f2552c24320ee98973b7af7d4b57085a
MD5 1d8394d2359bd73a47048678756daaf9
BLAKE2b-256 21eecca2fb97ebbc2db931749c74a2627c5b998fd7a54ebd7382dc0628b3a87d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for mist_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8c2759213ab4bba989f53756ec5d5fa44843585e1293d7391765fdae22fab427
MD5 b5a14427f65099412507dd4b0c4e6a52
BLAKE2b-256 18db7b81a1d3c625024312d1ecaa282a1f931bf7c72e119a8abddb0b3929602a

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