Data Output

Measurement data produced by Thingsee ENVIRONMENT — MQTT streams and GraphQL queries

Overview

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

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


Haltian IoT Measurements

The ENVIRONMENT sensor produces the following measurement types depending on its configured operating mode:

Measurement TypeSensorDescription
ambientTemperatureWeatherTemperature reading in °C
ambientHumidityWeatherRelative humidity percentage
ambientPressureWeatherBarometric pressure in hPa
ambientLightWeatherLight level in lux
magnetoSwitchStatusHall sensorDoor/window open or closed state
machineUsageSecondsAccelerometerMachine activity duration per interval
batteryPercentageSystemRemaining battery level

ambientTemperature

Reports temperature from the built-in sensor. Available when weather mode is enabled.

MQTT Topic:

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

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "ambientTemperature": 22.4
}

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
ambientTemperatureFloatTemperature in °C (range: -40 to +85)

Reporting behavior:

  • Reports every reportInterval (default 60s for pod3, 3600s for pod4/rugged)
  • Reports immediately when temperature changes exceed the configured hysteresis threshold (default 0.5°C)
  • Reports on device startup

GraphQL query example:

query {
  measurements(
    filter: {
      deviceId: "{device-uuid}"
      type: ambientTemperature
      from: "2026-01-28T00:00:00Z"
      to: "2026-01-28T23:59:59Z"
    }
  ) {
    measuredAt
    ambientTemperature
  }
}

Related: Configure weather mode | Operation — Weather measurements


ambientHumidity

Reports relative humidity. Available when weather mode is enabled.

MQTT Topic:

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

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "ambientHumidity": 67.2
}

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
ambientHumidityFloatRelative humidity in % (range: 0–100)

Reporting behavior:

  • Reports every reportInterval
  • Reports immediately when humidity changes exceed the configured hysteresis threshold (default 2%)

GraphQL query example:

query {
  measurements(
    filter: {
      deviceId: "{device-uuid}"
      type: ambientHumidity
      from: "2026-01-28T00:00:00Z"
      to: "2026-01-28T23:59:59Z"
    }
  ) {
    measuredAt
    ambientHumidity
  }
}

ambientPressure

Reports barometric pressure. Available when weather mode is enabled.

MQTT Topic:

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

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "ambientPressure": 1020.9
}

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
ambientPressureFloatBarometric pressure in hPa (range: 300–1200)

Reporting behavior:

  • Reports every reportInterval
  • Reports immediately when pressure changes exceed the configured hysteresis threshold (default 20 Pa)

GraphQL query example:

query {
  measurements(
    filter: {
      deviceId: "{device-uuid}"
      type: ambientPressure
      from: "2026-01-28T00:00:00Z"
      to: "2026-01-28T23:59:59Z"
    }
  ) {
    measuredAt
    ambientPressure
  }
}

ambientLight

Reports ambient light level. Available when weather mode is enabled.

MQTT Topic:

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

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "ambientLight": 270
}

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
ambientLightIntegerLight level in lux (range: 0–100,000)

Reporting behavior:

  • Reports every reportInterval
  • Reports immediately when light changes exceed the configured hysteresis threshold (default 100 lux)

GraphQL query example:

query {
  measurements(
    filter: {
      deviceId: "{device-uuid}"
      type: ambientLight
      from: "2026-01-28T00:00:00Z"
      to: "2026-01-28T23:59:59Z"
    }
  ) {
    measuredAt
    ambientLight
  }
}

magnetoSwitchStatus

Reports door/window open or closed state from the built-in hall (magnetic) sensor. Available when hall mode is enabled.

MQTT Topic:

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

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "isClosed": true
}

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of state change
isClosedBooleantrue = magnet detected (closed), false = no magnet (open)

Reporting behavior:

  • When hall mode = report on change: reports immediately on each state transition
  • When hall mode = report at interval: reports current state every reportInterval
  • Value persists until the next event — if isClosed: true at 10:00, the door is considered closed until the next false event

GraphQL query example:

query {
  measurements(
    filter: {
      deviceId: "{device-uuid}"
      type: magnetoSwitchStatus
      from: "2026-01-28T00:00:00Z"
      to: "2026-01-28T23:59:59Z"
    }
  ) {
    measuredAt
    isClosed
  }
}

Related: Configure hall mode | Operation — Magneto switch


machineUsageSeconds

Reports machine activity duration when the accelerometer is in machine monitoring mode. This is a pre-aggregated value representing seconds of detected vibration activity within the reporting interval.

MQTT Topic:

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

JSON Payload:

{
  "measured_at": "2026-01-28T08:52:11Z",
  "machineUsageSeconds": 204
}

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
machineUsageSecondsIntegerSeconds of detected vibration activity in the reporting interval

Reporting behavior:

  • Reports every reportInterval when accelerometer is in machine monitoring mode
  • Value resets to 0 at the start of each reporting interval
  • Maximum value equals the reportInterval duration (e.g., 300 if reportInterval = 300s)

GraphQL query example:

query {
  measurements(
    filter: {
      deviceId: "{device-uuid}"
      type: machineUsageSeconds
      from: "2026-01-28T00:00:00Z"
      to: "2026-01-28T23:59:59Z"
    }
  ) {
    measuredAt
    machineUsageSeconds
  }
}

Related: Configure machine monitoring mode | Operation — Machine monitoring


batteryPercentage

Reports remaining battery capacity. Updated every 6 hours.

MQTT Topic:

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

JSON Payload:

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

Fields:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
batteryPercentageInteger (0–100)Remaining battery level as percentage

Reporting behavior:

  • Reports every 6 hours (21600 seconds)
  • Last reported value is the current battery state (infrequent updates)
  • Plan battery replacement when value drops below 10%

GraphQL query example:

query {
  measurements(
    filter: {
      deviceId: "{device-uuid}"
      type: batteryPercentage
      from: "2026-01-01T00:00:00Z"
      to: "2026-01-31T23:59:59Z"
    }
  ) {
    measuredAt
    batteryPercentage
  }
}

How to Access This Data

MQTT Stream API (Real-time)

Subscribe to receive measurements as they arrive. See the Real-Time Data Streaming guide for setup.

Subscribe to all measurements from a specific device:

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

Subscribe to a specific measurement type from all devices:

haltian-iot/events/{integration-id}/{api-key-id}/measurements/ambientTemperature/+

GraphQL Data API (Historical)

Query historical measurements via the Data API. Supports filtering by device, measurement type, and time range.

Data API (Parquet Export)

For bulk data analysis, export measurements as Parquet files via the Data API. Parquet files contain all measurement types in columnar format optimized for analytics tools like Python/pandas and Power BI.