How much of the window was spent at each temperature. A single narrow peak on target is a controller doing its job; two shoulders mean it is oscillating between overshoot and recovery.
Average temperature per calendar day, with the day's full min-max range behind it. Long bars are days the box struggled to hold setpoint.
Green is time with readings on record. Red is silence - the device was offline, unpowered, or its uploads were failing. This is the honest denominator behind every average above.
You turn these by hand, so nothing can detect it — press this (or reply /turned to the Telegram reminder) and the clock resets. Reminders go out on the schedule below, with one follow-up an hour later if it goes unanswered, and then nothing until the next slot.
Offline alerts and alarms are raised by the server, not the incubator — a controller that has stopped cannot report that it has stopped, which is exactly how a 40-hour runaway went unnoticed. Escalation is 15 min, 1 h, then every 6 h, and those two classes ignore any mute.
Set this to the same PIN as the history service, so one unlock works on both. Leave it blank and control over the LAN stays open, exactly as it was before. The device checks this copy itself, so the lock still holds when the internet is down.
This is the credential the device uses to PUSH readings. It is not the control token and cannot issue commands, so it is safe for it to live on a board anyone can pick up. Blank keeps the stored one.
Firmware update is behind the lock — it can replace the code that runs the heater. The CSV list is a read, so it stays open like everything else you can only look at.
Monitoring is public and needs nothing. Operating the incubator needs the PIN. Safety limits are enforced on the device itself and cannot be overridden from any dashboard.