Where does this value come from?
Every number Synacl shows you started as a raw integer in a register somewhere, was scaled into an engineering unit, travelled through a gateway and a cloud, and reached your browser a little later than it was measured. The provenance popover shows that whole chain for one reading, so a value you do not trust can be checked instead of guessed at.
Where to click
- Device page → Tags — click a tag's live value.
- Device page → History — click any cell in the history table. The popover describes that reading, at that time.
- Any dashboard widget — open the widget's menu (⋮) and choose Where does this come from? for the widget's first tag.
The device page now shows each reading at the device's own timestamp (when it was measured), not the moment your browser happened to receive it.
Raw value, scale and offset
A device sends a raw value — for a Modbus register, the integer that sits in the register. The number you see is the engineering value:
engineering = raw × scale factor + offset
The popover shows all four, so you can check the arithmetic: a temperature register holding 427 with a scale factor of 0.1 and no offset shows as 42.7 °C. If the tag was set up with Divide instead of Multiply, the popover still shows the resolved multiplier (÷10 appears as ×0.1) — that is the number the platform actually uses.
Readings are stored raw. Changing a tag's scale or offset changes how every reading is displayed, not what was recorded — see Calibration history below for what that means for old readings.
The register (Modbus devices)
For a tag read over Modbus RTU or TCP the popover shows:
- Register type — holding, input, coil or discrete input.
- Address — three ways, because datasheets disagree: the zero-based address on the wire (what you typed into the tag), the one-based address (zero-based + 1), and the Modicon table number (coils
0xxxx, discrete inputs1xxxx, input registers3xxxx, holding registers4xxxx— so holding register 100 is40101). If a device's manual says "40101" and the tag says 100, both are the same register. - Format and word order —
u16,s16,u32,s32orf32, and for 32-bit values which 16-bit word comes first (big= high word at the lower address,little= low word first). A value that looks wildly wrong — 65535 instead of −1, or a huge number instead of 24.5 — is usually one of these two.
Tags read over other protocols show the protocol and no register block.
The gateway
Which gateway read the value: its name, chip id and firmware version. A reading from a directly connected MQTT device, a webhook push or a backend poll has no gateway.
Three clocks, and lag
A reading passes three clocks:
| Clock | Meaning |
|---|---|
| Device time | When the value was measured, by the device or gateway's own clock (ts). This is the time charts plot. |
| Received | When Synacl's backend received the message off the network (tr). The gap after device time is the uplink: Wi‑Fi, mobile data, the broker — plus any disagreement between the gateway's clock and ours. |
| Processed | When the backend finished its own checks and stored the reading (serverTs). The gap after received is Synacl's own processing, normally a few milliseconds. |
Lag is processed time minus device time. A lag of a few hundred milliseconds is normal. A lag of minutes or hours means one of:
- the gateway was offline and replayed buffered readings when it reconnected — those arrive with quality
uncertainand their original device time, so they chart in the right place but reached the cloud late; - the device's clock is wrong (a gateway that has not yet synchronised time after a reboot);
- the uplink is genuinely slow.
Sequence number
The device or gateway numbers its messages (seq). Two readings with the same sequence number came from one message; a gap in the sequence means messages were lost or dropped (for example by a plan rate limit). Not every device numbers its messages — the field is then shown as "—".
Source and quality
- Source — who handed the reading to Synacl: the gateway's chip id,
mqtt-directfor a device on the broker,webhookfor an HTTP push,pollfor a device the backend polls. - Quality —
good,bad,uncertain(a buffered replay, or a sensor reporting doubt) orstale.
Calibration history — "as of"
If your account has calibration history switched on, the popover shows the scale and offset that were in force when the reading was taken, and who changed them and when. A reading from before a scale correction is shown with the old factor; one from after it with the new one, so a chart of last month still reads the way it did last month.
Without calibration history, every reading — old or new — is scaled with the tag's current values, and the popover says so by showing no calibration version.
Readings from before this feature
Sequence number, source and received time are recorded from Synacl 1.32.0 on. Older stored readings show "—" for all three; everything else (raw, scale, register, gateway, device and processed time) is available for every reading.