MQTT Payload Specification
Reference documentation for the MQTT message format used by CloudUplink test stations.
Connection Details
| Parameter | Value |
|---|---|
| Host | localhost |
| Port | 1883 |
| QoS | 0 (At most once) |
| Protocol | MQTT 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".