MQTT Payload Specification

Reference documentation for the MQTT message format used by CloudUplink test stations.

Connection Details
Parameter Value
Hostlocalhost
Port1883
QoS0 (At most once)
ProtocolMQTT v3.1.1 / v5

For real stations the data topic follows the pattern: gds/station/{"{clientId}"}/data

Test Type Payloads
Triaxial Test

Demo topic: gds/triaxial
Station topic: gds/station/{"{clientId}"}/data

JSON Payload

{
  "id":                 0,          // int
  "timestamp":          "2026-01-01T00:00:00Z", // DateTime (ISO 8601)
  "phase":              "Idle",     // string - "Idle" / "Saturation" / "Consolidation" / "Shear"
  "cell_pressure":      0.0,        // double (kPa) - applied confining stress
  "back_pressure":      0.0,        // double (kPa) - applied pore pressure
  "pore_pressure":      0.0,        // double (kPa) - measured pore water pressure
  "deviator_stress":    0.0,        // double (kPa) - q = sigma1 - sigma3
  "axial_displacement": 0.0,        // double (mm)
  "axial_strain":       0.0,        // double (%)
  "volume_change":      0.0,        // double (mL)
  "axial_force":        0.0,        // double (N)
  "effective_stress":   0.0,        // double (kPa) - sigma3' = cell - pore
  "b_value":            0.0,        // double - Skempton's B parameter
  "elapsed_seconds":    0.0         // double - time since phase start
}
Consolidation Test

Demo topic: gds/consolidation
Station topic: gds/station/{"{clientId}"}/data

JSON Payload

{
  "id":                     0,          // int
  "timestamp":              "2026-01-01T00:00:00Z", // DateTime (ISO 8601)
  "phase":                  "Idle",     // string - "Idle" / "Loading" / "Unloading" / "Complete"
  "load_stage":             0,          // int - current stage number
  "applied_stress":         0.0,        // double (kPa) - vertical stress
  "settlement":             0.0,        // double (mm) - total settlement
  "void_ratio":             0.0,        // double - e, current void ratio
  "pore_pressure":          0.0,        // double (kPa) - excess pore pressure
  "degree_consolidation":   0.0,        // double (%) - U
  "cv":                     0.0,        // double (m2/year) - coefficient of consolidation
  "volume_change":          0.0,        // double (mL)
  "sqrt_time":              0.0,        // double (sqrt-min) - for plotting
  "elapsed_seconds":        0.0         // double
}
Direct Shear Test

Demo topic: gds/directshear
Station topic: gds/station/{"{clientId}"}/data

JSON Payload

{
  "id":                     0,          // int
  "timestamp":              "2026-01-01T00:00:00Z", // DateTime (ISO 8601)
  "phase":                  "Idle",     // string - "Idle" / "Stage1" / "Stage2" / "Stage3" / "Complete"
  "stage":                  0,          // int
  "normal_stress":          0.0,        // double (kPa)
  "shear_stress":           0.0,        // double (kPa)
  "shear_displacement":     0.0,        // double (mm) - horizontal
  "vertical_displacement":  0.0,        // double (mm) - dilation/compression
  "shear_strain":           0.0,        // double (%)
  "peak_shear_stress":      0.0,        // double (kPa) - peak so far
  "friction_angle":         0.0,        // double (degrees) - calculated
  "cohesion":               0.0,        // double (kPa) - calculated
  "elapsed_seconds":        0.0         // double
}
Permeability Test

Demo topic: gds/permeability
Station topic: gds/station/{"{clientId}"}/data

JSON Payload

{
  "id":                     0,          // int
  "timestamp":              "2026-01-01T00:00:00Z", // DateTime (ISO 8601)
  "phase":                  "Idle",     // string - "Idle" / "Saturation" / "Permeation" / "Complete"
  "cell_pressure":          0.0,        // double (kPa)
  "back_pressure":          0.0,        // double (kPa) - upstream
  "outlet_pressure":        0.0,        // double (kPa) - downstream
  "differential_pressure":  0.0,        // double (kPa)
  "flow_rate":              0.0,        // double (mL/min)
  "cumulative_flow":        0.0,        // double (mL)
  "hydraulic_conductivity": 0.0,        // double (m/s) - k value
  "temperature":            0.0,        // double (deg C)
  "hydraulic_gradient":     0.0,        // double - i = delta-h / L
  "elapsed_seconds":        0.0         // double
}
Cyclic Triaxial Test

Demo topic: gds/cyclictriaxial
Station topic: gds/station/{"{clientId}"}/data

JSON Payload

{
  "id":                     0,          // int
  "timestamp":              "2026-01-01T00:00:00Z", // DateTime (ISO 8601)
  "phase":                  "Idle",     // string - "Idle" / "Consolidation" / "Cycling" / "Complete"
  "cycle_number":           0,          // int
  "cell_pressure":          0.0,        // double (kPa)
  "deviator_stress":        0.0,        // double (kPa) - cyclic load
  "axial_strain":           0.0,        // double (%) - total
  "pore_pressure":          0.0,        // double (kPa)
  "excess_pore_ratio":      0.0,        // double - ru = delta-u / sigma'c
  "cyclic_stress_ratio":    0.0,        // double - CSR = qcyc / (2 x sigma'c)
  "axial_strain_amplitude": 0.0,        // double (%) - per cycle
  "resilient_modulus":      0.0,        // double (MPa)
  "damping_ratio":          0.0,        // double (%)
  "elapsed_seconds":        0.0         // double
}

All numeric fields default to 0 or 0.0. Timestamps are ISO 8601 UTC. The phase field indicates the current stage of the test and defaults to "Idle".