Data Output
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 Type | Description |
|---|---|
distance | Distance to target surface in mm |
batteryPercentage | Remaining battery level |
deviceOrientation | Accelerometer 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:
| Field | Type | Description |
|---|---|---|
measured_at | ISO 8601 string | Timestamp of measurement |
distance | Integer (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
}
}
your-device-uuid— your device UUID
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:
| Field | Type | Description |
|---|---|---|
measured_at | ISO 8601 string | Timestamp |
batteryPercentage | Integer (%) | 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:
| Field | Type | Description |
|---|---|---|
accx | Float (g) | X-axis acceleration |
accy | Float (g) | Y-axis acceleration |
accz | Float (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:
| tsmId | Event | Fields | Description |
|---|---|---|---|
| 17200 | tsmEv=10 | dist, status, ambientRate, numberOfSPADs, signalPerSPAD | Timed distance report (hourly heartbeat) |
| 17200 | tsmEv=9 | Same as above | Event-based distance report (threshold exceeded) |
| 1110 | tsmEv=10 | batl | Battery level (every 6 hours) |
| 1111 | tsmEv=10 | accx, accy, accz | Acceleration data (when enabled) |
| 1100 | tsmEv=11 | swVersion, modelCode, psn | System startup info |
For the full mapping between Thingsee and Haltian IoT measurement types, see Measurement Mapping.
Related Documentation
- Configuration - Adjust reporting intervals and beam settings
- Operation Guide - Interpreting distance data
- MQTT Stream API - Real-time data streaming
- Service API - GraphQL queries