Connect LoRaWAN temperature sensors to ColdLatch through The Things Stack
Short answer: add one webhook to your application in The Things Stack. It sends every uplink of your sensors to an address ColdLatch gives you, with a key as its password. ColdLatch stores each reading under the logger whose serial is the sensor's end device ID, and checks it against the limits like any other reading.
LoRaWAN sensors are small, battery-powered and reach through cold room walls, which is why many cold rooms already have them. They do not talk to an application directly: they report to a network server. The Things Stack is the most common one, as The Things Network's community servers (free, meant for trying things out), as The Things Industries' cloud, or installed by a company itself. All three have the same webhook.
What you need
- An application in The Things Stack with your sensors registered as end devices, in reach of a gateway.
- A payload formatter on each sensor that decodes its temperature. Sensors from the device repository have one already. ColdLatch reads the decoded value, not the raw bytes.
- An administrator login to ColdLatch.
Set it up
- Create the connection in ColdLatch. Under Settings, Devices, choose "LoRaWAN sensors (The Things Stack)" and create the connection. You get an address and a key. The key is shown once.
- Add the webhook. In the console of The Things Stack open your application, then Integrations, Webhooks, and add a custom webhook with the JSON format. The address from ColdLatch is its Base URL.
- Give it the key. Under request authentication, switch on basic authentication with any user name, for example
coldlatch, and the key as the password. - Send the uplinks. Enable the uplink message and leave its path empty. No other message type is needed.
- Register the sensors in ColdLatch. Under Settings, Devices, add each sensor with its end device ID from the console as the serial, and assign it to a storage unit or a shipment.
What ColdLatch reads from an uplink
- The sensor:
end_device_ids.device_id. - The time:
uplink_message.received_at, the moment the network received the reading. - The temperature, in °C: from
uplink_message.normalized_payloadwhen the formatter provides it, otherwise fromuplink_message.decoded_payloadunder one of the usual names:temperature,TempC_SHT,TempC_DS,ext_temperature,temp. An external probe is preferred over the sensor's own housing. - Humidity, if present:
humidityorHum_SHT. - Signal: the strongest
rssiamong the gateways that heard it. A battery level is taken when it is given in percent.
The answer is always JSON: { "stored": 1, "duplicates": 0, "rejected": 0, "ignored": null }. A message that holds no usable reading, such as a join or a sensor without a formatter, is answered with status 200 and the reason in ignored. A wrong key or an unknown address is answered 401.
Try it without a sensor
You can send a message in the same format yourself. Replace the address, the key and the serial with your own:
curl -X POST "https://coldlatch.com/api/v1/ingest/thethings/YOUR-CONNECTION-ID" \
-u "coldlatch:YOUR-KEY" \
-H "Content-Type: application/json" \
-d '{
"end_device_ids": { "device_id": "fridge-01" },
"uplink_message": {
"received_at": "2026-10-13T08:00:00Z",
"decoded_payload": { "temperature": 9.4, "humidity": 55 },
"rx_metadata": [{ "rssi": -92 }]
}
}'
The console of The Things Stack can also simulate an uplink for an end device, under its Messaging tab; that message travels the same way as a real one.
What to know before you rely on it
- This connection was built against the message format The Things Stack documents and is tested with messages in that format. It has not yet run with a physical sensor at a customer. If you have one, tell us the model and we will try it with you.
- A temperature under another name than the ones above is not read. Tell us the name, or rename it in your payload formatter.
- The community servers of The Things Network are for trying things out. For a monitored cold room, use a server with an agreed availability.
Next: Connect any ERP or warehouse system to ColdLatch: the integration API