The device transmits application payloads on LoRaWAN. Payloads include a compact header (reserved byte, serial, temperatures, voltages, status) followed by measurement data for each active port. Port configuration codes determine how bytes are interpreted.
Uplink header (FPort 1)
| Bytes | Content | Notes |
|---|---|---|
| 0 | reserved | Always 0xFF — not in decoded JSON |
| 1–4 | port1..port4 | Configuration code per external port |
| 5–7 | serial_number | 24-bit little-endian |
| 8–9 | boardTemperature, baseTemperature | °C = byte − 40 |
| 10–12 | Packed voltages + status | Storage and thermogenerator voltages; status nibble |
| ≥13 | Measurement data | Concatenation of active port payloads |
| status & 0x03 | Meaning | JSON notes |
|---|---|---|
0 | Keepalive | No port measurement keys |
1 | Normal | Port keys present |
2 | Alarm | + alarm_source_port / alarm_source_system when applicable |
Paired decode examples
Hex and JSON below are paired: JSON is the output of the reference decoder on that payload (alarm_source_* only when status = 2).
Keepalive — hex FF 00 00 00 00 40 5A 00 38 55 2C D1 00
{
"serial_number": 23104,
"boardTemperature": 16,
"baseTemperature": 45,
"storageVoltage": 3600,
"thermogenVoltage": 52,
"status": 0
}
Normal (PT1000 on port 1) — hex FF 01 00 00 00 4E 5A 00 3F 46 2C C5 10 FA 00
{
"serial_number": 23118,
"boardTemperature": 23,
"baseTemperature": 30,
"storageVoltage": 3600,
"thermogenVoltage": 49,
"status": 1,
"pt_1": 25.0
}
Alarm (PT1000 threshold on port 1) — hex FF 01 00 00 00 4E 5A 00 3F 46 2C C5 60 54 03
{
"serial_number": 23118,
"boardTemperature": 23,
"baseTemperature": 30,
"storageVoltage": 3600,
"thermogenVoltage": 49,
"status": 2,
"alarm_source_port": 1,
"alarm_source_system": 0,
"pt_1": 85.2
}
Decoder outputs engineering units. Do not re-scale in your ingest layer.
Downlink
Remote commands use LoRaWAN downlinks on FPort 4 (ACK on FPort 2). See Downlink commands for commands, parameter IDs, encodings, limits, and workflow. Initial commissioning (JoinEUI, AppKey, region, port types) remains Toolbox / USB only.