Uplink Messages
This page is primarily for customers who operate their own gateways and cloud infrastructure. It documents every message the AIR sensor transmits over the Wirepas mesh network, shown in both JSON and CBOR format.
Overview
This page documents the Wirepas CBOR messages transmitted by the sensor over the mesh network. These are the raw on-wire messages — field names and structure differ from the Haltian IoT JSON API exposed to end users. For the Haltian IoT API format, see Operation — Data Transmission.
Thingsee AIR transmits CBOR-encoded messages over Wirepas endpoint 21/21. The gateway adds header fields (tsmTs, tsmGw) and forwards messages to the cloud.
Each message is identified by tsmId (message structure ID). Each example below is shown in both JSON (decoded CBOR) and CBOR (numeric indexes as transmitted on the wire).
For CBOR encoding/decoding details, see CBOR-JSON Conversion Reference. For configuration commands sent to the sensor, see Downlink Messages.
Wirepas endpoint: 21/21
MQTT topic: haltian-iot/wirepas/gw-event/received_data/{gateway-id}/sink1/{network-id}/21/21
Carbon Dioxide Level (tsmId 24100)
The primary air quality message. Reports current CO₂ concentration and measurement status.
| JSON Property | CBOR Index | Description |
|---|---|---|
tsmId | 1 | Message ID: 24100 |
tsmEv | 2 | Event type: 10 (timed), 9 (threshold), 11 (startup) |
tsmTs | 3 | UTC timestamp in seconds (added by gateway) |
tsmTuid | 4 | Device unique identifier |
tsmGw | 5 | Gateway identifier (added by gateway) |
carbonDioxide | 283 | CO₂ level in parts per million (ppm) |
status | 27 | Measurement status |
Status Values
| Value | Meaning |
|---|---|
-1 | Measurement failed |
0 | OK |
1 | Auto-calibrated during this measurement |
2 | Auto-calibration failed |
Reporting Behavior
| Condition | Timing |
|---|---|
| Normal operation | Every report interval |
| CO₂ change exceeds hysteresis | Immediate report with tsmEv: 9 |
| Device startup | Immediate report with tsmEv: 11 |
Example
{
"tsmId": 24100,
"tsmEv": 10,
"tsmTs": 1755064655,
"tsmTuid": "TSAR01TSC20204001",
"tsmGw": "TSGW06EWK31903495",
"carbonDioxide": 538,
"status": 0
}
{1: 24100, 2: 10, 283: 538, 27: 0}
Interpretation: CO₂ concentration is 538 ppm with a successful measurement (status OK). Values above 1000 ppm typically indicate poor ventilation.
Total Volatile Organic Compounds (tsmId 24101)
Reports TVOC concentration — an indicator of indoor air quality.
| JSON Property | CBOR Index | Description |
|---|---|---|
tsmId | 1 | Message ID: 24101 |
tsmEv | 2 | Event type: 10 (timed), 9 (threshold) |
tsmTs | 3 | UTC timestamp in seconds (added by gateway) |
tsmTuid | 4 | Device unique identifier |
tsmGw | 5 | Gateway identifier (added by gateway) |
tvoc | 284 | TVOC level in parts per billion (ppb) |
Example
{
"tsmId": 24101,
"tsmEv": 10,
"tsmTs": 1755064700,
"tsmTuid": "TSAR01TSC20204001",
"tsmGw": "TSGW06EWK31903495",
"tvoc": 72
}
{1: 24101, 2: 10, 284: 72}
Interpretation: TVOC level is 72 ppb. Values below 220 ppb generally indicate good air quality.
Weather Info (tsmId 12100)
Reports temperature, humidity, and air pressure from the onboard environmental sensors. The AIR sensor shares this message format with ENVIRONMENT.
| JSON Property | CBOR Index | Multiplier | Description |
|---|---|---|---|
tsmId | 1 | — | Message ID: 12100 |
tsmEv | 2 | — | Event type: 10 (timed), 11 (startup) |
tsmTs | 3 | — | UTC timestamp in seconds (added by gateway) |
tsmTuid | 4 | — | Device unique identifier |
tsmGw | 5 | — | Gateway identifier (added by gateway) |
temp | 30 | 10^1 | Temperature in °C |
humd | 32 | 10^1 | Relative humidity in % |
airp | 33 | 10^3 | Air pressure in Pascals |
temp: CBOR value224=22.4°C (divide by 10)humd: CBOR value672=67.2% (divide by 10)airp: CBOR value102092358=102092.358Pa (divide by 1000)
Example
{
"tsmId": 12100,
"tsmEv": 10,
"tsmTs": 1755064800,
"tsmTuid": "TSAR01TSC20204001",
"tsmGw": "TSGW06EWK31903495",
"temp": 22.4,
"humd": 45.8,
"airp": 101325.000
}
{1: 12100, 2: 10, 30: 224, 32: 458, 33: 101325000}
Interpretation: Temperature 22.4°C, humidity 45.8%, air pressure 1013.25 hPa (standard atmosphere).
System Info (tsmId 1100)
Sent once on device boot-up. Contains firmware version and device model.
| JSON Property | CBOR Index | Description |
|---|---|---|
tsmId | 1 | Message ID: 1100 |
tsmEv | 2 | Event type: 11 (startup) |
swVersion | 70 | Firmware version string |
modelCode | 71 | Device model code |
psn | — | Production serial number |
Example
{
"tsmId": 1100,
"tsmEv": 11,
"tsmTs": 1755060000,
"tsmTuid": "TSAR01TSC20204001",
"tsmGw": "TSGW06EWK31903495",
"swVersion": "3.2.1",
"modelCode": "TSAR01"
}
{1: 1100, 2: 11, 70: "3.2.1", 71: "TSAR01"}
Battery Level (tsmId 1110)
Reported every 6 hours (21600 seconds). Monitors remaining battery capacity.
| JSON Property | CBOR Index | Multiplier | Description |
|---|---|---|---|
tsmId | 1 | — | Message ID: 1110 |
tsmEv | 2 | — | Event type: 10 (timed) |
batl | 21 | 10^1 | Battery level percentage |
batl uses multiplier 10^1 — CBOR value 780 decodes to 78.0% in JSON. Divide the raw CBOR value by 10 when decoding.
Example
{
"tsmId": 1110,
"tsmEv": 10,
"tsmTs": 1755081600,
"tsmTuid": "TSAR01TSC20204001",
"tsmGw": "TSGW06EWK31903495",
"batl": 78
}
{1: 1110, 2: 10, 21: 780}
Network Diagnostics (tsmId 1202)
Reported every 12 hours (43200 seconds). Provides mesh network connectivity metrics.
| JSON Property | CBOR Index | Description |
|---|---|---|
tsmId | 1 | Message ID: 1202 |
tsmEv | 2 | Event type: 10 (timed) |
tuid | 62 | Device identifier |
rssi | 61 | Received signal strength |
rssiDbm | 65 | Signal strength in dBm |
Example
{
"tsmId": 1202,
"tsmEv": 10,
"tsmTs": 1755103200,
"tsmTuid": "TSAR01TSC20204001",
"tsmGw": "TSGW06EWK31903495",
"tuid": "TSAR01TSC20204001",
"rssi": -55,
"rssiDbm": -55
}
{1: 1202, 2: 10, 62: "TSAR01TSC20204001", 61: -55, 65: -55}
Firmware Binary Info (tsmId 1312)
Sent once on boot alongside System Info. Reports firmware binary details.
Example
{
"tsmId": 1312,
"tsmEv": 11,
"tsmTs": 1755060000,
"tsmTuid": "TSAR01TSC20204001",
"tsmGw": "TSGW06EWK31903495",
"binaryType": 1,
"binaryVersion": "3.2.1"
}
{1: 1312, 2: 11}
Error Event (tsmId 1403)
Sent when an error condition occurs. Use errorType and errorCause to diagnose issues.
Example
{
"tsmId": 1403,
"tsmEv": 29,
"tsmTs": 1755064700,
"tsmTuid": "TSAR01TSC20204001",
"tsmGw": "TSGW06EWK31903495",
"errorType": 1,
"errorCause": 3
}
{1: 1403, 2: 29}
Event Types Reference
All tsmEv values used by AIR uplink messages:
| tsmEv | Name | Description |
|---|---|---|
| 9 | Threshold | CO₂ or TVOC hysteresis exceeded |
| 10 | Timed | Periodic report at configured interval |
| 11 | Startup | Device boot-up / power-on |
| 29 | Error | Critical error report |
| 34 | Timed diagnostics | Periodic diagnostic event |
CBOR Index Reference (Uplink)
| CBOR Index | JSON Property | Category |
|---|---|---|
| 1 | tsmId | Header |
| 2 | tsmEv | Header |
| 3 | tsmTs | Header |
| 4 | tsmTuid | Header |
| 5 | tsmGw | Header |
| 21 | batl | System (multiplier 10^1) |
| 27 | status | CO₂ measurement status |
| 30 | temp | Weather (multiplier 10^1) |
| 32 | humd | Weather (multiplier 10^1) |
| 33 | airp | Weather (multiplier 10^3) |
| 61 | rssi | Network |
| 62 | tuid | Network |
| 65 | rssiDbm | Network |
| 70 | swVersion | System |
| 71 | modelCode | System |
| 283 | carbonDioxide | Air quality (ppm) |
| 284 | tvoc | Air quality (ppb) |