HACCP / cold chain
EU 852/2004 in practice
The cold chain vertical is OpenSense's oldest use case. It targets cafés, restaurants, bakeries, butchers, pharmacies — anyone whose fridges or freezers are inspected. The deliverable is a monthly PDF temperature log that satisfies an EU food-hygiene inspector.
What the regulation actually says
EU food law has two layers: the EU-level regulations, and the member-state implementation. The regulations set principles; the member states set specific temperatures and the inspection regime.
The actual numbers — 0 to +5 °C for chilled, ≤ −18 °C for frozen — come
from national guidance. Slovakia follows the ŠVPS (Štátna veterinárna a
potravinová správa) interpretation, which mirrors the
Slovak Food Code.
OpenSense defaults
When you create a site with vertical = haccp, every device's temperature
channel auto-creates with:
| Use | Operating range | Grace period |
|---|---|---|
| Chilled storage (default) | −2 °C to +5 °C | 15 min |
| Chilled display | −2 °C to +8 °C | 30 min |
| Frozen storage | −24 °C to −18 °C | 30 min |
| Cooking — hot holding | +63 °C to +85 °C | 5 min |
These are conservative defaults — narrower than the regulation strictly requires, on the assumption that you want a margin between "alarm" and "food is unsafe". Adjust per channel in the dashboard.
The monthly report
POST /v1/reports with template = haccp_monthly returns a PDF with:
- Cover sheet — site name, address, period covered, signature line.
- Per-device summary — min / mean / max per day, hours-in-range.
- Excursion log — every alarm event, opened/closed timestamps, acknowledgement note.
- Sensor health — uptime per device, any data gaps > 2 cycles.
- Calibration record — last calibration event per probe (free-text).
A six-month or twelve-month aggregate is also available, used for annual ŠVPS inspections.
Probe placement
This is where most inspections actually fail — not because the logbook is missing, but because the probe is in the wrong place. Practical rules:
- Walk-in fridge: top shelf, mid-depth, away from the evaporator airstream. Top shelf because heat rises; if the top is cold, the bottom is colder. Mid-depth because the back is colder than the door area.
- Display chiller: at the level of the warmest stored item. A salad bar with two-tier shelving: the upper shelf is warmer.
- Freezer: anywhere, freezers are well-mixed.
- Hot-holding bain-marie: in the food, not above it. Use a calibrated thermistor on a stub probe.
If you mount the probe to the evaporator surface (a common rookie mistake with magnetic sensors), readings will look textbook-perfect while the food spoils.
What the inspector actually checks
In our experience training Slovak café owners through the first inspection:
- Is there a log? Show the dashboard or hand them last month's PDF.
- What do you do when an alarm fires? Show the acknowledgement field.
- What if the system is down? Show two devices, ideally on two different sensors, in the same fridge. Redundancy is your friend.
- Where is the probe? See above. Walk them to the fridge and show them.
The PDF report by itself is not enough — the inspector also wants to see that you read it. The "acknowledged by" stamp on alarm events is what makes that case.
Migrating from paper
If you are switching from a paper logbook, the auditor will ask for a 6-month overlap during which both records exist. Pragmatic approach:
- Keep filling in the paper sheet by hand for two months while OpenSense collects.
- On month three, print the OpenSense PDF, sign it, and also sign the paper sheet stating "log continues digitally under OpenSense, account id …".
- Drop the paper sheet at month six. Keep the cover page of the paper log for one more year on file.