Minimal PySide6 desktop chronocat_ground app for Chronocat firmware.
- Receives UDP telemetry on port
5005. - Connects to the firmware TCP command server on
192.168.1.50:5006. - Shows packet counter, firmware timestamp, flags, health, sensor masks, source address, packet count, and packet age.
- Sends binary command packets for ping, telemetry on, telemetry off, and telemetry status.
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -e .Use Python 3.12 for now. Python 3.14 is too new for reliable PySide6 wheel support, and the local Homebrew Python install may fail while bootstrapping pip.
chronocat_groundOr:
python -m chronocat_ground.mainTelemetry UDP app payload, carried inside normal UDP/IP packets. Multi-byte fields are big endian.
Field Bytes
magic = 'CCTM' 4
version 1
message_type 1
flags 2
payload_length = 101 2
packet_timestamp 4
counter 4
health_code 1
temperature_valid_mask 2
temperature_sensors_1_13 26 int16 centi-degrees C
os_adc_valid_mask 2
os_adc_readings_1_12 48 uint32 raw ADC counts
cots_dosimeter 4 uint32 placeholder/raw value
Payload size is 101 bytes. IPv4 and UDP headers are generated by LwIP and are not included in this app payload.
Flags:
bit 0 telemetry enabled
bit 1 TCP server listening
Masks:
temperature_valid_mask bit 0 = temperature sensor 1 valid
temperature_valid_mask bit 12 = temperature sensor 13 valid
os_adc_valid_mask bit 0 = OS ADC channel 1 valid
os_adc_valid_mask bit 11 = OS ADC channel 12 valid
TCP command request app payload, carried inside normal TCP/IP packets:
uint8 command
uint16 arg1 big endian
uint16 arg2 big endian
TCP command response app payload:
uint8 status
uint8 command
uint16 arg1 big endian
uint16 arg2 big endian
Commands:
0x01 ping
0x02 telemetry set
0x03 telemetry status
Values:
Telemetry set uses arg1:
0x00 off
0x01 on