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 namestart(datetime, optional): Start time (inclusive)stop(datetime, optional): Stop time (exclusive)defrag(str, optional):"complete","all", orNone
Returns: List of Telemetry objects
Telemetry
Dataclass representing a telemetry packet or defragmented block.
Attributes:
apid(int): Application Process IDpacket_name(str): Yamcs packet name (e.g., "/PUS/HOUSEKEEPING")time(datetime): Generation timestampdata(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
--urlto specify the correct server - Check the instance: Set
YAMCS_INSTANCEif 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)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|