Hardware Telemetry Analysis with TofuPilot
Sensor data from hardware tests is only useful if you can find patterns across thousands of runs. TofuPilot ingests multi-dimensional telemetry, indexes it automatically, and gives you dashboards that surface trends before they become production issues.
What Hardware Telemetry Looks Like in Practice
A single hardware test run can produce hundreds of sensor readings: temperature curves, voltage traces, vibration spectra, pressure waveforms. Without a structured system, this data ends up in CSV files on shared drives, impossible to query at scale.
TofuPilot treats every sensor measurement as a first-class object. Each reading gets a name, unit, limits, and an optional array dimension for time-series or multi-axis data.
Ingesting Sensor Data
OpenHTF Users
OpenHTF measurements flow into TofuPilot automatically. Multi-dimensional arrays (1D waveforms, 2D matrices, ND tensors) are processed without code changes.
import openhtf as htf
from tofupilot.openhtf import TofuPilotClient
@htf.measures(
htf.Measurement("temperature_curve").with_dimensions("time_s"),
htf.Measurement("vibration_spectrum").with_dimensions("freq_hz"),
)
def sensor_sweep(test):
for t in range(100):
test.measurements.temperature_curve[t] = read_thermocouple()
for f in range(500):
test.measurements.vibration_spectrum[f] = read_accelerometer_fft(f)
def main():
test = htf.Test(sensor_sweep)
test.add_output_callbacks(TofuPilotClient())
test.execute(lambda: "DUT-001")Python Client Users
Pass lists or NumPy arrays directly in your measurement payloads.
from tofupilot import TofuPilotClient
import numpy as np
client = TofuPilotClient()
voltage_trace = np.sin(np.linspace(0, 2 * np.pi, 1000)).tolist()
client.create_run(
procedure_id="PSU-RIPPLE-TEST",
unit_under_test={"serial_number": "PSU-2025-0042"},
steps=[{
"name": "Output Ripple",
"step_type": "measurement",
"status": True,
"measurements": [{
"name": "ripple_voltage_mv",
"value": voltage_trace,
"unit": "mV",
"limit_low": -50,
"limit_high": 50,
}],
}],
)Querying Telemetry at Scale
Once ingested, every measurement is queryable through the TofuPilot dashboard. Filter by procedure, unit serial number, date range, or pass/fail status.
| Query | What it shows |
|---|---|
All runs for PSU-RIPPLE-TEST last 7 days | Ripple voltage trends across production |
Failed runs with temperature_curve out of limits | Units that exceeded thermal specs |
Measurement distribution for vibration_spectrum | Histogram of vibration amplitudes across fleet |
Setting Up Alerts on Telemetry Drift
TofuPilot tracks measurement distributions over time. When a sensor reading starts drifting toward its limits, you can catch it before it causes failures.
- Open the procedure dashboard for your test
- Select the measurement you want to monitor
- Set warning thresholds at 80% of your spec limits
- TofuPilot flags runs where readings cross the warning zone
This is especially useful for temperature sensors, where gradual calibration drift can go unnoticed until units start failing in the field.
Real-World Example: Thermal Chamber Telemetry
A medical device manufacturer runs thermal cycling tests across 8 temperature zones. Each test produces 8 time-series measurements (one per zone) with 500 data points each.
Before TofuPilot, engineers downloaded CSV files from each chamber controller, merged them in Excel, and manually checked limits. With TofuPilot, all 8 waveforms upload automatically at the end of each cycle, limits are checked server-side, and the dashboard shows zone-by-zone trends across the full production history.
The result: limit violations that previously took hours to find now surface in seconds.