C1QX NB-IoT packet format
Packet for Temperature + Humidity + CO2 version
Every packet includes these pieces of information:
- packet type
- devices unique serial number
- battery status indicator
- temperature (in degrees centigrate) reading
- humidity (in % of relative humidity) reading
- CO2 (in parts-per-million) reading
Example parser in Python3
def parse(packet):
d = {"points": []}
# < means little endian
d["packet_type"] = packet[0]
if d["packet_type"] == 1:
d["node_id"] = struct.unpack("<I", bytes(packet[1:5]))[0]
d["points"].append({"note": "battery", "key": 66, "value": packet[5]})
d["points"].append(
{
"note": "temperature_c",
"key": 67,
"value": struct.unpack("<f", bytes(packet[6:10]))[0],
}
)
d["points"].append(
{
"note": "humidity_rh",
"key": 74,
"value": struct.unpack("<f", bytes(packet[10:14]))[0],
}
)
d["points"].append(
{
"note": "co2_ppm",
"key": 122,
"value": struct.unpack("<f", bytes(packet[14:18]))[0],
}
)
return d