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:

UseOperating rangeGrace period
Chilled storage (default)−2 °C to +5 °C15 min
Chilled display−2 °C to +8 °C30 min
Frozen storage−24 °C to −18 °C30 min
Cooking — hot holding+63 °C to +85 °C5 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.

ok
In range for ≥ grace period
warn
In range now, was out in last grace window
alarm
Out of range for ≥ grace period

The monthly report

POST /v1/reports with template = haccp_monthly returns a PDF with:

  1. Cover sheet — site name, address, period covered, signature line.
  2. Per-device summary — min / mean / max per day, hours-in-range.
  3. Excursion log — every alarm event, opened/closed timestamps, acknowledgement note.
  4. Sensor health — uptime per device, any data gaps > 2 cycles.
  5. 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:

  1. Is there a log? Show the dashboard or hand them last month's PDF.
  2. What do you do when an alarm fires? Show the acknowledgement field.
  3. What if the system is down? Show two devices, ideally on two different sensors, in the same fridge. Redundancy is your friend.
  4. 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:

  1. Keep filling in the paper sheet by hand for two months while OpenSense collects.
  2. On month three, print the OpenSense PDF, sign it, and also sign the paper sheet stating "log continues digitally under OpenSense, account id …".
  3. Drop the paper sheet at month six. Keep the cover page of the paper log for one more year on file.

Sources