DEV Community

KMJ Tire Calgary
KMJ Tire Calgary

Posted on

Engineering a Tire-Pressure Measurement Uncertainty System for Calgary Fleets

Engineering a Tire-Pressure Measurement Uncertainty System for Calgary Fleets

Tire pressure looks like a single number. In a fleet system, it is better understood as an observation with a history: who measured it, which instrument produced it, when and where it was taken, whether the tire was cold or warm, what the surrounding temperature was, and how much confidence the operation should place in the result.

That distinction matters in Calgary. A vehicle can leave a heated bay, sit overnight at minus 20, cross Deerfoot Trail at sustained speed, and return during a chinook. Each pressure reading may be honestly recorded, yet a naive dashboard can make the sequence look like a leak, a repair success, a sensor fault, or random noise depending on which context was discarded.

This article develops a measurement-uncertainty system for fleet tire pressure. It is not a guide to choosing a magic threshold. It is an engineering pattern for storing observations, estimating uncertainty, validating inputs, separating state changes from measurement effects, and creating alerts that operations teams can defend later.

The practical tire foundation still matters. Fleet teams that need a driver-facing primer can start with KMJ Tire's tire-smart guidance, then use the system described here to turn routine checks into reliable operational evidence.

1. Pressure Is a Measurement, Not a Fact

A database column named pressure_psi encourages false certainty. It suggests that 36.0 psi is a property of the tire in the same way a vehicle identification number is a property of a vehicle. It is not. Pressure changes with temperature, tire load, recent motion, measurement technique, instrument condition, and time.

A useful observation can be expressed as:

observed_pressure = underlying_pressure_state
                  + temperature_effect
                  + operating_state_effect
                  + instrument_bias
                  + reading_noise
                  + handling_error
Enter fullscreen mode Exit fullscreen mode

Not every term can be perfectly identified. The goal is not laboratory purity. The goal is to preserve enough context that the system does not pretend all readings are directly comparable.

Consider two records:

{"vehicle":"F-17","position":"LF","psi":34.2}
{"vehicle":"F-17","position":"LF","psi":37.1}
Enter fullscreen mode Exit fullscreen mode

That appears to be a 2.9 psi increase. Now add context: the first reading came from a handheld gauge outdoors at 06:10 after an overnight soak; the second came from TPMS after 35 minutes on Stoney Trail. The difference is no longer surprising. A system that labels it “pressure rising rapidly” has confused unlike states.

The fundamental design rule is therefore simple: never store a pressure value without its measurement context. If an upstream device omits context, store the omission explicitly. Unknown is data. Invented certainty is corruption.

This approach also keeps tire knowledge connected to the implementation. Sidewall markings, service descriptions, and pressure recommendations mean different things; this sidewall information reference helps operational teams avoid treating a molded sidewall maximum as a fleet target.

2. Start with the Decision the Reading Must Support

Uncertainty engineering begins with a decision, not a sensor. A fleet might use pressure observations to support several different actions:

  • ask a driver to repeat a questionable reading;
  • send a vehicle for a tire inspection;
  • identify a slow trend across comparable cold readings;
  • compare measurement devices;
  • evaluate whether a route or yard creates recurring pressure-data gaps;
  • document that a check occurred under a defined procedure.

Each decision needs a different level of rigor. A driver pre-trip check can tolerate a coarser uncertainty estimate if the workflow immediately repeats suspicious values. A long-term leak model requires tighter control over thermal state and instrument identity. A compliance record emphasizes provenance, timestamps, and auditability.

Write a decision contract before building alerts:

decision: request_repeat_measurement
input_state: cold_pre_trip
maximum_observation_age_minutes: 30
required_fields:
  - measured_pressure
  - unit
  - instrument_id
  - measured_at
  - tire_position
minimum_confidence: medium
fallback: mark_inconclusive
Enter fullscreen mode Exit fullscreen mode

The fallback matters. Many operational systems force every observation into “good” or “bad.” A defensible system has a third state: inconclusive. That state protects the fleet from acting aggressively on a reading whose uncertainty interval crosses the decision boundary.

Suppose a nominal threshold is 32 psi and a reading is 32.4 psi with expanded uncertainty of plus or minus 1.0 psi. Declaring it safely above the threshold ignores the lower part of the plausible interval. Declaring it definitely below is equally unjustified. The correct machine result is “near boundary; repeat under controlled conditions.”

Decision contracts also prevent dashboard drift. When managers ask why an alert appeared, the system can identify the exact rule version and evidence used. Without that linkage, a chart is merely an opinion rendered in colour.

3. Model Instruments as First-Class Assets

The instrument is part of every result. A handheld gauge, shop inflator gauge, TPMS sensor, and connected pressure probe have different resolution, calibration history, environmental exposure, and data pathways. Treating them as interchangeable erases the largest sources of avoidable uncertainty.

An instrument registry should include stable identity and time-bounded metadata:

create table pressure_instrument (
  instrument_id text primary key,
  instrument_type text not null,
  manufacturer text,
  model text,
  serial_number text,
  native_unit text not null,
  resolution numeric not null,
  stated_accuracy numeric,
  accuracy_basis text,
  commissioned_at timestamptz,
  retired_at timestamptz,
  status text not null
);

create table instrument_calibration (
  calibration_id uuid primary key,
  instrument_id text references pressure_instrument,
  performed_at timestamptz not null,
  valid_from timestamptz not null,
  valid_until timestamptz,
  reference_standard_id text,
  observed_bias numeric,
  uncertainty numeric,
  unit text not null,
  certificate_uri text,
  result text not null
);
Enter fullscreen mode Exit fullscreen mode

Do not overwrite calibration records when a device is checked again. A pressure observation made in January must remain linked to the calibration state that applied in January, even if the gauge receives a new correction in March.

Provenance also needs to survive device replacement. If the physical gauge labelled YARD-2 is replaced but the asset identifier is reused, the historical series silently joins two instruments. Assign a new immutable identity to the replacement and keep the friendly location label separate.

For TPMS, distinguish the wheel-mounted sensor from the receiving gateway and decoding software. Firmware changes can alter rounding, scaling, missing-value behaviour, or transmission cadence. Record those versions where available. A technically valid sensor packet can still be transformed incorrectly downstream.

Instrument status should be temporal. “Active,” “quarantined,” “verification overdue,” and “retired” are useful states. If later evidence shows a gauge was biased, the fleet can query every affected observation and recalculate confidence without deleting history.

4. Calibration Metadata Needs Operational Semantics

A calibration certificate is not enough by itself. Software needs structured meaning: what range was tested, at which environmental conditions, against what reference, using which procedure, and whether a correction should be applied.

Store calibration points rather than only a pass/fail flag:

{
  "calibration_id": "6ce26b2a-6bb2-4ea2-a832-c9120abf7f48",
  "instrument_id": "GAUGE-014",
  "reference": {"id": "REF-03", "traceability": "certificate-on-file"},
  "points": [
    {"reference_kpa": 200.0, "indicated_kpa": 201.2, "u_kpa": 0.45},
    {"reference_kpa": 250.0, "indicated_kpa": 251.6, "u_kpa": 0.48},
    {"reference_kpa": 300.0, "indicated_kpa": 302.1, "u_kpa": 0.52}
  ],
  "ambient_c": 21.1,
  "procedure_version": "PG-CAL-2.3",
  "result": "pass_with_correction"
}
Enter fullscreen mode Exit fullscreen mode

The correction function may be a constant bias, a piecewise interpolation, or a model supplied by the calibration process. Preserve both raw and corrected values. The raw value is evidence; the corrected value is a derived interpretation.

corrected = raw - interpolated_bias(raw)
Enter fullscreen mode Exit fullscreen mode

Never apply a new calibration backward without declaring a recomputation. If a retrospective analysis uses later knowledge, store the calculation version and time. Otherwise an old dashboard can change silently, weakening trust in the audit trail.

Operational verification can complement formal calibration. For example, two controlled comparisons against a designated reference may detect a gauge damaged after being dropped. Those checks should not be mislabeled as full calibration. Give them their own record type, procedure, acceptance rule, and authority.

Calgary winters make environmental specifications relevant. A gauge that behaves acceptably in a warm office may not have the same response after sitting in a service vehicle overnight. Instrument metadata should include rated operating range, and validation should flag use outside it rather than assuming the stated accuracy still applies.

5. Units Must Be Explicit at Every Boundary

Pressure systems often fail through quiet conversion errors. Drivers may speak in psi, device payloads may report kPa, a vendor API may use bar, and an analytics library may assume SI base units. The safest internal model stores a canonical value plus the original representation.

type PressureValue = {
  rawValue: number;
  rawUnit: "psi" | "kPa" | "bar";
  canonicalKPa: number;
  conversionVersion: string;
};
Enter fullscreen mode Exit fullscreen mode

Useful conversions are exact enough for operational purposes when implemented consistently:

1 psi = 6.894757293168 kPa
1 bar = 100 kPa
Enter fullscreen mode Exit fullscreen mode

Conversion should occur once at ingestion. Repeatedly converting rounded values between units creates drift. A displayed 35 psi should not be parsed back from the user interface and stored as a new measurement.

Reject ambiguous fields such as pressure: 240 unless the device contract fixes the unit and version. Even then, attach the interpreted unit to the normalized event. Schema evolution should make unit changes explicit.

Range validation must occur after parsing but before business rules. A value can be syntactically valid and physically implausible. Keep the raw event in quarantine, record why normalization failed, and avoid substituting zero. Zero is a meaningful pressure value; it is not a universal missing-data marker.

Rounding belongs at the presentation layer. Calculations should retain sufficient precision, while dashboards use a stable display rule. If a threshold sits at 220 kPa, a displayed conversion should not oscillate because one view rounds to the nearest whole psi and another truncates.

When staff interpret load capability or tire markings, pressure is only one part of the picture. The load-index explainer provides useful context, while the fleet data model should keep load assumptions separate from measured pressure.

6. Cold, Warm, and Unknown Are Data States

“Cold pressure” cannot be inferred reliably from a clock alone. A 07:00 reading may follow an overnight park, or the unit may have completed an airport run. A midday observation may still be cold if the vehicle has been stationary long enough. Store the evidence behind the classification.

A thermal-state model could use:

{
  "declared_state": "cold",
  "state_source": "derived",
  "stationary_minutes": 485,
  "distance_last_3h_km": 0.0,
  "last_motion_at": "2026-02-12T22:14:00-07:00",
  "classification_rule": "thermal-state-v4",
  "classification_confidence": 0.96
}
Enter fullscreen mode Exit fullscreen mode

Recommended categories include cold_soaked, recently_operated, warming, cooling, and unknown. Avoid forcing uncertain observations into a binary field. The unknown state is especially valuable for manual readings imported without telematics.

A minimum stationary interval can be part of a fleet procedure, but it should not be confused with direct measurement of internal tire temperature. The classification is an operational proxy. Its uncertainty increases when the vehicle was parked in direct sun, moved briefly, stored inside, or exposed to rapid ambient change.

Chinooks are a sharp example. Calgary can experience a large temperature movement over a relatively short period. A tire that was cold-soaked before dawn and measured again during an afternoon warm-up exists in a different thermal environment, even if neither observation followed highway travel.

Warm readings still have value. They can reveal abrupt loss during a route or support device comparisons. They simply should not be mixed casually with cold baselines. Build separate trend views by state, or normalize only when the model has sufficient inputs and clearly labels the result as estimated.

Seasonal workflows can reinforce comparable measurement routines. Operational teams can connect these controls to seasonal tire change guidance without implying that a seasonal visit replaces routine fleet checks.

7. Capture Temperature, Time, Place, and Motion

Ambient temperature is necessary but not sufficient. Record its source and age. A weather station ten kilometres away is not equivalent to a probe near the vehicle, and neither necessarily equals tire air temperature.

create table pressure_observation (
  observation_id uuid primary key,
  vehicle_id text not null,
  wheel_position text not null,
  measured_at timestamptz not null,
  received_at timestamptz not null,
  latitude numeric,
  longitude numeric,
  location_accuracy_m numeric,
  raw_pressure numeric not null,
  raw_unit text not null,
  pressure_kpa numeric not null,
  ambient_c numeric,
  ambient_source text,
  ambient_observed_at timestamptz,
  instrument_id text not null,
  thermal_state text not null,
  odometer_km numeric,
  uncertainty_kpa numeric,
  quality_state text not null
);
Enter fullscreen mode Exit fullscreen mode

Use timezone-aware timestamps and retain the original offset. Calgary operates on Mountain Time with daylight-saving transitions. UTC supports ordering; local time supports operations. Store both through a reliable timestamp type rather than stripping the offset into a naive string.

Location does not need household-level precision for every use case. A yard identifier, route segment, or coarse geohash may be enough. Minimize personal data while preserving the context needed to distinguish an indoor bay, exposed lot, Highway 1 westbound stop, or remote service area.

Motion features help classify the observation: distance over recent intervals, maximum speed, and stationary duration. Avoid retaining second-by-second paths unless the business purpose requires them. Derived motion summaries often provide the required evidence with less privacy burden.

Late-arriving events deserve special handling. A TPMS gateway may buffer messages when connectivity drops. measured_at drives the physical timeline; received_at drives pipeline monitoring. If analytics use arrival time as measurement time, a batch uploaded after a vehicle returns to the yard can produce impossible jumps.

Service coverage information can be linked as reference data rather than embedded as hard-coded geography. KMJ's service-area overview is a human-readable resource; fleet software should maintain its own versioned operational zones.

8. Build an Uncertainty Budget You Can Explain

An uncertainty budget lists contributors to doubt and combines them under declared assumptions. It does not need to be academically elaborate to be useful. It does need to distinguish known bias corrections from residual uncertainty.

For a controlled handheld reading, contributors might include:

Contributor Standard uncertainty Basis
Calibration reference 0.30 kPa certificate
Residual gauge accuracy 0.60 kPa calibration points
Display resolution 0.29 kPa half-width / sqrt(3)
Repeatability 0.45 kPa controlled trials
Connection technique 0.70 kPa procedure study
Thermal-state estimate 1.20 kPa operational model

If contributors are treated as independent, combine standard uncertainties by root-sum-of-squares:

u_c = sqrt(u1^2 + u2^2 + ... + un^2)
Enter fullscreen mode Exit fullscreen mode

Using the illustrative values above:

u_c = sqrt(0.30² + 0.60² + 0.29² + 0.45² + 0.70² + 1.20²)
    ≈ 1.58 kPa
Enter fullscreen mode Exit fullscreen mode

An expanded uncertainty with coverage factor k = 2 would be approximately 3.16 kPa. These numbers are illustrative, not claims about a particular device or KMJ process.

Correlation complicates the calculation. Temperature-model error may affect several readings in the same direction. Repeated observations from one biased instrument are not independent evidence. If the model ignores correlation, averaging many points can create unjustified confidence.

Store the budget components and calculation version, not only the final interval. That allows recalculation when evidence changes.

{
  "model": "pressure-u-v3",
  "components": [
    {"name":"calibration","u_kpa":0.30,"distribution":"normal"},
    {"name":"resolution","u_kpa":0.29,"distribution":"rectangular"},
    {"name":"thermal_state","u_kpa":1.20,"distribution":"model"}
  ],
  "combined_standard_u_kpa": 1.58,
  "coverage_factor": 2.0,
  "expanded_u_kpa": 3.16
}
Enter fullscreen mode Exit fullscreen mode

9. Design a Schema That Preserves Evidence

Separate immutable observations from interpretations. The raw event should remain stable; quality assessments, corrections, classifications, and alerts may evolve.

instrument -> calibration
     |
     v
raw_observation -> normalized_observation -> quality_assessment
                                            |
                                            +-> derived_pressure_state
                                            +-> alert_evaluation
                                            +-> dashboard_projection
Enter fullscreen mode Exit fullscreen mode

An event envelope can support replay:

{
  "event_id": "01JCH8VX7S29J2VZB0CRF7A8PT",
  "event_type": "pressure.observed",
  "schema_version": 4,
  "producer": "yard-mobile-app/2.8.1",
  "occurred_at": "2026-01-19T06:42:18-07:00",
  "ingested_at": "2026-01-19T13:42:22Z",
  "payload": {
    "vehicle_id": "F-17",
    "wheel_position": "LF",
    "value": 228.0,
    "unit": "kPa",
    "instrument_id": "GAUGE-014"
  }
}
Enter fullscreen mode Exit fullscreen mode

Use controlled vocabularies for wheel positions and observation methods. Free text such as “front driver” becomes hard to join with LF, left-front, or steer-left. Preserve notes separately, but normalize identity fields.

Vehicle configuration must be effective-dated. Wheel positions, tire assemblies, and sensor assignments change. An observation should resolve against the configuration valid when it occurred, not the vehicle's current state.

Pressure targets also require provenance. Store the source, effective interval, vehicle configuration, and approval path. Do not infer a target from tire sidewall maximums. When teams evaluate tire options, Calgary tire-buying guidance can support the human process, but the application should use verified fleet specifications.

Soft deletion is preferable for derived records that are superseded. Keep superseded_by, reason, actor, and timestamp. Immutable evidence plus replaceable interpretation makes audits possible without freezing the system's ability to improve.

10. Validation Should Produce Reasons, Not Just Rejections

Validation has several layers. Schema validation checks types and required fields. Semantic validation checks units, ranges, identities, and timestamps. Context validation checks whether an observation is fit for a particular decision.

function assess(o: Observation, context: Context): QualityAssessment {
  const reasons: string[] = [];
  if (!context.instrumentExists(o.instrumentId)) reasons.push("UNKNOWN_INSTRUMENT");
  if (o.measuredAt > context.now.plus({ minutes: 5 })) reasons.push("FUTURE_TIMESTAMP");
  if (o.pressureKPa <= 0 || o.pressureKPa > 1000) reasons.push("IMPLAUSIBLE_RANGE");
  if (!o.thermalState) reasons.push("THERMAL_STATE_MISSING");
  if (context.calibrationExpired(o.instrumentId, o.measuredAt)) reasons.push("CALIBRATION_STALE");
  return classify(reasons);
}
Enter fullscreen mode Exit fullscreen mode

Use severity levels such as accepted, accepted_with_caution, quarantined, and invalid. A stale calibration may allow a reading to appear in an operational view with widened uncertainty while excluding it from a high-confidence trend model.

Cross-field validation catches subtle errors. A cold_soaked classification conflicts with 42 kilometres travelled during the previous hour. A handheld gauge reading with no operator or procedure version may be incomplete. A location in Calgary paired with an ambient source timestamp six hours old should receive a freshness warning.

Validation results must be append-only or versioned. When rules change, preserve the original result and add the new assessment. That makes it possible to answer, “What did the system know when this alert was raised?”

Error messages should guide correction without rewriting evidence. “Unit missing; cannot normalize” is better than silently assuming psi. “Instrument retired before measurement time” is more useful than “bad record.” Structured reason codes enable analytics; plain descriptions help operators.

11. Handle Outliers Without Erasing Real Events

Outliers can be sensor glitches, typing errors, packet duplication, thermal transitions, genuine rapid loss, or a wheel-position mapping mistake. Automatically deleting them removes the very incidents a safety-oriented system may need to preserve.

Start with robust detection methods. Median absolute deviation works better than mean and standard deviation when the series already contains extreme values. Rate-of-change checks should compare observations with compatible states.

MAD = median(|xi - median(x)|)
robust_z = 0.6745 * (x - median(x)) / MAD
Enter fullscreen mode Exit fullscreen mode

A high robust z-score is a review signal, not proof of error. Add contextual tests:

  • Did another instrument confirm the value?
  • Did the reading repeat within a short interval?
  • Was the tire recently operated?
  • Did ambient temperature shift sharply?
  • Did several wheel positions change together?
  • Was the sensor reassigned or serviced?
  • Did packet sequence numbers reset?

If all four tires decline similarly during a cold snap, the common-mode pattern suggests environment rather than four simultaneous punctures. If one position falls while comparable wheels remain stable, the observation deserves different attention.

Deduplicate by stable event identity where possible. Hashing the payload alone can collapse legitimate repeated readings. A device that reports the same value every five minutes is producing distinct observations even when the number is unchanged.

Keep outlier labels separate from validity. Suggested fields are statistical_outlier, suspected_cause, review_status, and excluded_from_models. An unusual reading may remain valid and operationally important.

When a tire may need professional inspection, fleet operators can use tire repair information for Calgary to understand the service context. The data system should say why it escalated the evidence, not declare a repair outcome.

12. Confidence Bands Beat Single-Value Trend Lines

A trend chart that draws a crisp line through uncertain observations gives viewers more confidence than the data supports. Plot the corrected estimate with an uncertainty band and visibly encode measurement state.

For observation i:

lower_i = estimate_i - expanded_uncertainty_i
upper_i = estimate_i + expanded_uncertainty_i
Enter fullscreen mode Exit fullscreen mode

Use separate symbols for cold-soaked, recently operated, and unknown states. Shade periods when calibration was overdue. Tooltips should expose instrument identity, ambient source, thermal classification, and quality reasons.

Aggregation needs care. A daily average across warm and cold readings is rarely meaningful. Better summaries include:

  • latest high-confidence cold observation by wheel position;
  • change between comparable cold observations;
  • count of inconclusive records;
  • age of last trustworthy reading;
  • fraction of devices within calibration interval;
  • pressure interval relative to the applicable target band.

If a model estimates a cold-equivalent pressure, display it as a derived value and keep the measured value accessible. Do not let a normalized curve masquerade as direct evidence.

Confidence bands also improve communication during Calgary's large day-night swings. A manager can see that apparent movement overlaps expected uncertainty and thermal effects, while a persistent downward sequence across comparable mornings remains visible.

Dashboard colour should represent decisions, not decoration. Red could mean the entire plausible interval lies beyond an action boundary. Amber could mean the interval crosses that boundary or required context is missing. Grey can indicate stale data. Document the semantic meaning and test it for accessibility without relying on colour alone.

For fleets with recurring tire-service needs, KMJ's commercial tire services and fleet-management overview provide service context. The dashboard itself should stay evidence-led and avoid promotional interruptions.

13. Alert Rules Need Hysteresis and State Awareness

Naive alerts fire whenever a point crosses a threshold. Near a boundary, ordinary measurement noise causes repeated opening and closing. Hysteresis, persistence, and uncertainty-aware comparisons reduce that churn.

An interval-based rule might be:

if upper_bound < critical_boundary:
    severity = critical
elif lower_bound < critical_boundary <= upper_bound:
    severity = repeat_measurement
else:
    severity = none
Enter fullscreen mode Exit fullscreen mode

The exact boundary must come from the fleet's verified specification, not from this illustrative logic. Separate rule configuration from application code and effective-date every change.

Trend alerts should require comparable states. Three cold-soaked morning readings that decline may be stronger evidence than ten mixed readings gathered before, during, and after routes. Weighting cannot rescue fundamentally incompatible observations.

Useful alert controls include:

  • minimum persistence across observations;
  • suppression after a known tire service event;
  • deadband before clearing;
  • maximum observation age;
  • separate policies for direct and derived readings;
  • escalation when uncertainty itself grows;
  • grouping of common-mode changes across wheel positions.

Alert payloads should explain themselves:

{
  "rule_id": "cold-pressure-trend-v5",
  "reason": "three comparable cold observations declined",
  "evidence_ids": ["obs-71", "obs-84", "obs-96"],
  "latest_interval_kpa": [211.8, 216.4],
  "rule_effective_at": "2026-01-01T00:00:00-07:00",
  "recommended_action": "repeat controlled measurement and inspect tire"
}
Enter fullscreen mode Exit fullscreen mode

Avoid diagnosing mechanical causes. KMJ Tire performs tire services and oil changes only; steering, suspension, brakes, alignments, and other mechanical concerns belong with an appropriate mechanical provider. A pressure system can identify evidence that merits inspection without claiming to know every cause.

14. Audit Logs Must Connect Inputs to Decisions

An audit trail should answer five questions: what was observed, how it was transformed, which rules evaluated it, who acknowledged the result, and what later changed.

Record events such as:

pressure.observed
pressure.normalized
quality.assessed
uncertainty.calculated
alert.opened
alert.acknowledged
measurement.repeated
alert.resolved
interpretation.superseded
Enter fullscreen mode Exit fullscreen mode

Each derived event should reference parent evidence and code or configuration versions. Content-addressed payload hashes can detect accidental mutation, while access controls protect personal and operational data.

Do not log secrets, authentication tokens, or unnecessary precise location history. Auditability does not justify collecting everything. Define retention periods by record class and business purpose.

Human actions need structured reasons. An operator who suppresses an alert might select duplicate_confirmed, instrument_fault, service_completed, or vehicle_unavailable, then add optional notes. Free text alone is difficult to analyze and easy to misinterpret.

Corrections should be additive. If a driver selected the wrong wheel position, retain the original event, create a correction record, and point downstream projections to the corrected interpretation. This preserves the chain of custody.

Export capability is part of the design. A fleet should be able to retrieve the observation, calibration record, uncertainty budget, validation decisions, and alert lifecycle without reverse-engineering a dashboard screenshot.

15. Test the Measurement Pipeline Like Safety-Relevant Software

Unit tests should cover conversions, boundary comparisons, uncertainty combination, timestamp handling, and classification logic. Property-based tests are valuable for invariants.

def test_psi_round_trip_is_stable(psi):
    assume(-1000 < psi < 1000)
    kpa = psi * 6.894757293168
    recovered = kpa / 6.894757293168
    assert abs(recovered - psi) < 1e-10
Enter fullscreen mode Exit fullscreen mode

Test daylight-saving transitions explicitly. A local timestamp around the fall clock change can be ambiguous without an offset. Verify that event ordering uses actual instants and that local displays remain understandable.

Create golden datasets for Calgary scenarios:

  1. an overnight cold soak followed by a Deerfoot route;
  2. a chinook-driven ambient increase while vehicles remain parked;
  3. intermittent connectivity on Highway 1 west with late event delivery;
  4. gravel-season valve contamination producing inconsistent manual readings;
  5. a dropped gauge that develops a stable bias;
  6. a sensor reassignment between wheel positions;
  7. a day-night swing with mixed indoor and outdoor parking.

Integration tests should replay events through normalization, quality assessment, uncertainty calculation, alerts, and projections. Confirm that raw records remain unchanged after new rule versions are introduced.

Mutation testing is useful around comparisons. Replacing < with <= near a boundary can change behaviour that ordinary examples miss. Load tests should include burst uploads from buffered gateways, not only steady traffic.

Operational drills matter too. Feed a known reference case through the real mobile application and verify the displayed provenance. Revoke a calibration and confirm affected observations are identified. Simulate an offline device, then ensure measured time survives delayed synchronization.

16. Observability for the System Measuring the Tires

The measurement platform needs its own health signals. Otherwise missing pressure data can look like stable pressure.

Track pipeline metrics including:

  • observations expected versus received;
  • ingestion delay percentiles;
  • unknown-instrument rate;
  • missing thermal-state rate;
  • unit-conversion failures;
  • percentage of observations with current calibration;
  • outlier rate by instrument and software version;
  • alert acknowledgement latency;
  • replay failures and dead-letter volume.

A sudden drop in alerts may mean improved fleet condition, a broken rule deployment, or silent sensor loss. Pair outcome metrics with coverage metrics.

Use trace identifiers from gateway ingestion through alert generation. When an operator questions a point, tracing should reveal decoding, conversion, enrichment, validation, uncertainty model, and rule evaluation without searching several unrelated systems.

Service-level objectives should focus on decision fitness. “99.9% API availability” says little if ambient enrichment is stale or wheel mappings are wrong. A stronger objective might state that 95% of expected cold pre-trip observations become decision-ready within ten minutes, with exact terms defined by the fleet.

Monitor model drift. If thermal-state classifications increasingly disagree with driver declarations or direct temperature evidence, investigate the inputs and route patterns. Calgary road construction, yard changes, or a new operating schedule can alter assumptions without any code failure.

17. Calgary Conditions Should Shape the Data Model

Local context is not a paragraph added for search visibility. It changes which variables matter.

Chinooks create rapid ambient transitions. Large day-night swings challenge comparisons across shifts. Sustained speed on Deerfoot and Stoney Trail changes operating state. Highway 1 west introduces elevation, weather, and connectivity changes. Gravel season can affect valve cleanliness and manual measurement repeatability. Road salt and winter exposure influence device handling and inspection routines.

Represent those effects through features, not stereotypes. Store ambient observations, recent motion, route class, parking environment, and instrument exposure when they are relevant and proportionate. A calgary_weather = true flag adds no analytical value.

All-season, all-weather, and winter tire categories also should not be collapsed into one label. Human-facing resources such as all-season tire guidance, all-weather tire information, and winter tire guidance explain those distinctions. In software, use controlled product and configuration attributes sourced from verified records.

Route-aware analysis should avoid unfair comparisons. A city delivery unit and a vehicle making frequent mountain runs may produce different thermal patterns. Segmenting by operating profile can reduce false alerts, provided the system still retains fleet-wide safety rules.

Privacy remains important. Coarse route categories may be enough; exact continuous traces may not be. Collect the minimum context necessary to explain measurement behaviour and support the declared decision.

18. A Worked End-to-End Example

Imagine fleet unit F-17 is parked outdoors overnight. At 06:42, an operator records 228.0 kPa at the left-front position with GAUGE-014. Ambient temperature is minus 18.4 C from a yard probe sampled two minutes earlier. Telematics shows 485 stationary minutes and no recent distance.

The ingestion service validates the unit, instrument identity, wheel position, and timestamp. Calibration metadata indicates a 1.2 kPa positive bias near this range, so the corrected estimate becomes 226.8 kPa. The uncertainty engine combines calibration, resolution, repeatability, connection technique, and thermal-state components. It calculates expanded uncertainty of 3.2 kPa.

The resulting interval is:

[223.6 kPa, 230.0 kPa]
Enter fullscreen mode Exit fullscreen mode

The fleet's effective-dated rule compares that interval with its verified target boundary. Suppose the interval overlaps a repeat-measurement zone. The engine does not declare the tire definitively low. It creates an amber task requesting another controlled observation.

At 06:48, the operator repeats the process with the same gauge. The estimate and interval are similar. A second designated gauge produces a compatible result. The evidence now has stronger repeatability, although shared environmental uncertainty remains.

Later, the vehicle travels on Stoney Trail and TPMS reports a higher pressure. The dashboard plots that point as recently operated and does not use it to clear the cold-state task. After service attention, the next morning's comparable reading provides the appropriate evidence for resolution.

Every step references source events, device metadata, calculation version, rule version, and actor. If the gauge is later found damaged, analysts can query observations made after the suspected damage date, widen or revise their uncertainty, and regenerate affected decisions without erasing the original record.

19. Implementation Sequence for a Fleet Team

Do not begin with predictive models. Build trustworthy observations first.

Phase one establishes identity and evidence:

  • instrument registry;
  • immutable observation events;
  • explicit units;
  • timezone-aware timestamps;
  • wheel-position vocabulary;
  • basic schema and semantic validation.

Phase two adds comparability:

  • calibration history;
  • cold, warm, and unknown states;
  • ambient-source metadata;
  • recent-motion summaries;
  • effective-dated vehicle configurations.

Phase three adds decision support:

  • uncertainty budgets;
  • interval-aware rules;
  • repeat-measurement workflow;
  • confidence-band dashboards;
  • versioned alert explanations.

Phase four hardens operations:

  • replay and backfill tools;
  • calibration revocation analysis;
  • golden Calgary scenarios;
  • audit exports;
  • pipeline coverage monitoring;
  • privacy and retention reviews.

At every phase, measure missing context. A fleet may discover that its largest problem is not sensor accuracy but absent instrument IDs or unclear thermal state. Fixing those collection habits can create more value than adding a sophisticated model.

For operational tire support, teams can review mobile tire service information and KMJ Tire's local Calgary tire service overview. Those resources complement, but do not replace, the fleet's own measurement procedure and verified specifications.

20. The Engineering Standard Is Honest Confidence

A mature tire-pressure platform does not promise certainty that its instruments and context cannot provide. It preserves raw evidence, applies traceable corrections, quantifies doubt, and makes decision boundaries visible.

The strongest design choices are straightforward:

  • keep instrument provenance with every observation;
  • version calibration and correction metadata;
  • retain original units alongside canonical values;
  • distinguish cold, warm, transitional, and unknown states;
  • record temperature source, time, place, and recent motion;
  • calculate uncertainty from named components;
  • preserve outliers and explain exclusions;
  • use confidence bands and interval-aware alerts;
  • link every decision to evidence and rule versions;
  • test with Calgary-specific operating scenarios.

This architecture turns pressure readings from isolated numbers into defensible operational records. It also makes uncertainty useful. Instead of hiding doubt, the system uses it to request better evidence, reduce nuisance alerts, and focus attention where the plausible range supports action.

That is the real goal: not a dashboard that always looks decisive, but a fleet process that knows when its measurements are strong, when they are weak, and what should happen next.

Top comments (0)