Automations & hardware
Send readings over HTTP
Feed readings from any system into Automations without hardware — post JSON to a secret URL and map each field to a channel.
An HTTP device has no wiring and nothing to flash. It's a way for any system that can send a web request — a script, a PLC, a sensor gateway, a building-management system, or another app — to push readings into Automations. Each reading lands on a channel, just like a sensor on an ESP32 or Pi, so it can drive the same rules, alerts, and charts.
When to use it
- You already have equipment that can POST data and don't want to add a controller.
- You want to forward readings from another platform into your POS automations.
- You're testing a rule and want to send values by hand.
Step 1 — Create the device
- In the Automations area, go to Devices → New device and choose HTTP (token).
- Add a channel for each value you'll send (e.g. Fridge temp, Door). HTTP channels have no GPIO pin — just a name, a direction (usually input), and an optional unit.
- Save the device.
Step 2 — Get the secret URL and token
On the device page, open the HTTP / inbound section to reveal:
- A secret URL to post readings to.
- A token that authorises the request. The full token is shown once — copy it now and store it safely. Afterwards only the last few characters are shown.
Treat the URL and token like a password: anyone who has them can write readings to your channels.
Step 3 — Map your JSON to channels
Tell Automations where each value lives in the JSON you'll send by adding mappings — a dotted path to the value, and the channel it belongs to.
For example, if you'll send this body:
{
"sensors": {
"temp": 3.7,
"door_open": true
}
}
you'd map:
| Path | Channel |
|---|---|
sensors.temp | Fridge temp |
sensors.door_open | Door |
Values are read flexibly: numbers come through as-is, true/false become 1 / 0 (so they work as boolean sensors), and numeric text is parsed.
Step 4 — Post a reading
Send a POST request with your JSON body to the secret URL. For example, from a terminal:
curl -X POST "<your secret URL>" \
-H "Content-Type: application/json" \
-d '{"sensors":{"temp":3.7,"door_open":true}}'
Each post updates the mapped channels and adds points to their charts. Send a reading whenever you have a new value — there's no need to poll on a fixed schedule.
Keeping it secure
- Rotate the token from the device page if it's ever exposed; the old token stops working immediately.
- Send over HTTPS so the token isn't visible in transit.
- Give each external system its own HTTP device so you can revoke one without affecting the others.
Troubleshooting
| Problem | Fix |
|---|---|
| Readings don't appear | Check the request returns a success status, and that each mapping's path exactly matches your JSON keys |
| "Unauthorized" | The token is wrong or was rotated — copy the current one from the device page |
| A boolean shows the wrong state | Map it to a Boolean sensor channel and set its on/off labels, or send 1 / 0 explicitly |
See also Common questions. Need a hand? Contact support.