SAIV Calibration Suite
Desktop and web apps, plus a heavily tested serial-instrument library, for calibrating SAIV's ocean CTD instruments.
2026case-studypythontypescriptelectronserialinstrumentation
Context
SAIV makes CTD instruments: the conductivity, temperature and depth sensors used to measure the ocean and fjords. Every unit is calibrated against reference equipment before it ships, and again when it comes back for service. That work ran on legacy Windows programs and manual steps that varied between operators.
What I built
- Calibration apps for pressure, temperature and conductivity. Each one talks to the instrument over serial, fits the calibration coefficients, and writes them back to the unit.
- A shared serial-instrument library under all of them. It finds instruments across baud rates and framings and drives their menus safely: every change needs an explicit confirm flag, and configuration and coefficient writes are verified by reading them back.
- Bench automation. A climate cabinet driven over Modbus RTU, whose register writes I worked out by sniffing the vendor's software, plus relay boards and reference-thermometer rigs.
- Service-workflow tools. A LAN service tracker, and a prototype intake app where a local agent talks to the instruments for a web UI.
How it's built
- Guarded writes. Coefficient writes need a serial-number identity match and operator confirmation, are read back to verify, and are audit-logged.
- No hardware needed to develop. Mock services, simulators, scripted serial transports and recorded device captures. The library and the pressure app's test suites never open a physical port; the library alone runs 1,600+ tests in CI.
- Checked against what it replaces. The ported calibration maths was cross-checked against the legacy programs on real calibration data before taking over.
- One record, every artefact. Run reports and the customer certificate, with before/after readings and a deviation chart, are rendered from the same stored run record the fit uses.
- Shipped like a product. The pressure app (Electron + React + Python) ships as an auto-updating Windows installer from an automated release pipeline.
Internal constants, tolerances, reference setups and procedures stay internal, so there are no screenshots or code links here.
Result
The rewritten pressure calibration wizard ran its first real calibration in October 2026. The temperature and conductivity apps are validated against real instruments and in pilot.