In addition to pulling HTTPS JSON feeds, ThermalTrace accepts push ingest from ESP/Arduino devices and can fan alert notifications out to Discord, SMS, web push, and generic HTTPS webhooks for IFTTT or Home Assistant.
Push ingest
From Dashboard → Devices, create a push device to receive a one-time API key. Send readings with:
POST /api/ingest/<device-key>
Content-Type: application/json Classic Arduino JSON
{
"temp": {
"0": { "c": 18.5, "f": 65.3, "h": 42 },
"1": { "c": 19.0, "f": 66.2, "h": 40 }
}
} Typed multi-sensor payload
{
"sensors": [
{ "key": "garage_temp", "kind": "temperature", "value": 65.3, "unit": "F" },
{ "key": "garage_rh", "kind": "humidity", "value": 42, "unit": "%" },
{ "key": "door1", "kind": "door", "bool": true },
{ "key": "co2", "kind": "co2", "value": 820, "unit": "ppm" }
],
"battery": 87,
"rssi": -62
}
Supported kinds: temperature, humidity, co2,
door, power, flood, generic.
Optional top-level battery / battery_pct and rssi update device health metadata.
Outbound alert webhooks
Pro accounts can enable an outbound webhook in alert settings. Each alert POSTs JSON:
{
"title": "Garage temperature alert",
"body": "Probe 1 is 31.2°F …",
"kind": "threshold",
"sent_at": "2026-08-25T12:00:00.000Z"
} kind may be threshold, rate, outage,
forecast, rule, digest, or generic.
When a webhook secret is set, the request includes
X-Signature as a hex HMAC-SHA256 of the raw body. Use that in Home Assistant
or IFTTT Webhooks to verify authenticity.
Home Assistant
Cloudflare Workers do not run an MQTT broker. Use the outbound HTTPS webhook (Pro) and an automation, or import the downloadable blueprint:
automation:
- alias: ThermalTrace webhook
trigger:
- platform: webhook
webhook_id: garage_temp_alerts
allowed_methods:
- POST
local_only: false
action:
- service: notify.persistent_notification
data:
title: "{{ trigger.json.title }}"
message: "{{ trigger.json.body }}"
Point your ThermalTrace outbound webhook URL at
https://<your-ha-host>/api/webhook/garage_temp_alerts
(or a Cloudflare Tunnel / Nabu Casa URL). Verify X-Signature in a template condition if you set a secret.
For MQTT, have Home Assistant (or Node-RED) receive the webhook and publish to your broker—that keeps MQTT local while ThermalTrace stays on HTTPS. The blueprint includes an optional MQTT topic input for that path.
Grafana / Prometheus metrics
Pro accounts can create dashboard API keys (Dashboard → Share) and scrape:
GET /api/v1/metrics
Authorization: Bearer gtm_… Or use a Pro share link with the Metrics scope:
GET /api/share/<token>/readings?format=prometheus
Or ?format=grafana for a simple JSON datapoints array. History share scope returns a 7-day chart on the public page.
Alert channels
- Email and Discord (all plans)
- Telegram bot token + chat id (your credentials)
- Slack Incoming Webhook URL (your credentials)
- Twilio SMS, browser push, outbound webhook (Pro)
Alerts also support forecast freeze risk, quiet hours, and composite AND rules (for example door open + temperature drop). See Dashboard → Alerts.
Email alerts remain available on all plans. Weekly digests can be enabled independently of freeze/humidity threshold alerts. Opt-in city aggregates appear on /freeze-map.
Related guides
- Kit QR onboarding — encode your ingest URL on a hardware sticker
- ESP32 OTA and battery reporting
— firmware updates plus
battery/rssifields - Zapier and Make.com recipes — outbound alert webhooks and inbound snooze automations