Data Output

Measurement data produced by Thingsee BEAM — MQTT streams and GraphQL queries for distance measurement

Overview

Thingsee BEAM produces measurement data that you can access through the Haltian IoT Platform — receive JSON measurements via MQTT Stream API or query via GraphQL Service API.

This page documents the measurement types, payload formats, and how to access the data.


Haltian IoT Measurements

The BEAM sensor produces the following measurement types:

Measurement TypeDescription
distanceDistance to target surface in mm
batteryPercentageRemaining battery level
deviceOrientationAccelerometer data (when enabled)

distance

Reports the measured distance from the sensor to the nearest solid surface.

MQTT Topic:

haltian-iot/events/{integration-id}/{api-key-id}/measurements/distance/{device-uuid}

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "distance": 350
}

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
distanceInteger (mm)Distance from sensor to target surface. Range: 40–4000 mm

Interpretation:

  • Distance increases → fill level decreasing (material consumed)
  • Distance decreases → fill level increasing (bin filling up)

GraphQL Query:

query {
  measurementLastDistance(
    where: {deviceId: {_eq: "your-device-uuid"}}
  ) {
    deviceId
    measuredAt
    distance
  }
}

batteryPercentage

Reports remaining battery capacity.

MQTT Topic:

haltian-iot/events/{integration-id}/{api-key-id}/measurements/batteryPercentage/{device-uuid}

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "batteryPercentage": 87
}

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp
batteryPercentageInteger (%)Remaining capacity. Warning at 20%, critical at 10%

deviceOrientation

Reports accelerometer data (only when accelerometer is enabled via configuration).

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "accx": 0.02,
  "accy": 0.01,
  "accz": 1.0
}

Fields:

FieldTypeDescription
accxFloat (g)X-axis acceleration
accyFloat (g)Y-axis acceleration
acczFloat (g)Z-axis acceleration

Use this to detect if the sensor has been tilted or moved from its installed position.


Fill-Level Calculation

Convert raw distance to fill-level percentage:

Fill level % = (empty_distance − current_distance) / (empty_distance − full_distance) × 100

Example:

  • Sensor to full dispenser: 100 mm
  • Sensor to empty dispenser: 800 mm
  • Current reading: 450 mm
  • Fill level: (800 − 450) / (800 − 100) × 100 = 50%

Thingsee IoT Message Reference

For customers using the legacy Thingsee IoT platform or self-hosted gateways, the raw message format is:

tsmIdEventFieldsDescription
17200tsmEv=10dist, status, ambientRate, numberOfSPADs, signalPerSPADTimed distance report (hourly heartbeat)
17200tsmEv=9Same as aboveEvent-based distance report (threshold exceeded)
1110tsmEv=10batlBattery level (every 6 hours)
1111tsmEv=10accx, accy, acczAcceleration data (when enabled)
1100tsmEv=11swVersion, modelCode, psnSystem startup info

For the full mapping between Thingsee and Haltian IoT measurement types, see Measurement Mapping.