De uitdaging
BriteBottle Packaging — 140 medewerkers, 2 bottelarij-lijnen plus 1 aseptische filler, 22 SKU's. Stack vóór de transformatie: Siemens S7-1200/1500 PLC's, AVEVA Wonderware InTouch, papieren MES, een Wonderware historian die niet meer draait, SAP S/4 ERP. Eén Power BI pilot in 2024 geflopt. Eén predictive-maintenance pilot geflopt — alerts arriveerden 48 uur te laat, zonder context.
De aanhoudende pijn: SKU-44 (Mango-Blend Premium) changeover scrap stond al twee jaar op 8,1%. Niemand wist waarom.
De oplossing — 7 stappen
- Connect — Raspberry Pi 5 leest 11 OPC-UA tags + 4 MES events read-only uit Wonderware en duwt ze via outbound MQTT/TLS naar MonsterMQ op een €5,77/mnd Hetzner VPS. Geen inbound firewall changes.
- Condition — MonsterMQ flow engine normaliseert eenheden (psi → bar), deadband-filtert, dedupliceert MES retries.
- Model — ISA-95 ontologie met
ranges_per_recipeper tag. Pre-cool drempel voor SKU-44 is 4,85 bar; voor SKU-12 is dat 5,0. De drempels zitten in het model, niet in de PLC. - Store — MongoDB 7 time-series, write-time enriched met
order_id,sku,phase. 90 dagen retentie. - Orchestrate — Zes N8N workflows.
wf-006-changeover-watchluistert opmes/sku_changeover, aggregeert 180s drukverloop, vergelijkt met de SKU-specifieke threshold. - Visualize — Grafana voor analisten + Next.js full-screen voor operators. Beide via FastAPI.
- Distribute — FastAPI exposeert 11 endpoints.
POST /api/recipe-updateschrijft de override naar MongoDB en publiceert een retained MQTT command. De edge-subscriber zet dat om in een OPC-UA write terug naar de Wonderware recipe namespace.
De val (lees dit twee keer)
Na stap 7 had BriteBottle een prachtige data layer. Tags streamden, ISA-95 gemodelleerd, MongoDB queryable, Grafana toonde de SKU-44 overshoot in heldere kleuren, Slack-alerts vuurden binnen 30 seconden. "We hebben een data layer."
En scrap stond nog steeds op 8,1%.
Omdat niemand iets besliste. De alert vuurde. Het dashboard renderde. Operators knikten, dronken koffie, draaiden de volgende batch op dezelfde manier.
Solve is geen 8e bouwstap — Solve is de toets of de 7 stappen een beslissing produceren waar de fabriek naar handelt.
Solve — de loop, gesloten
De Solve vraag: als SKU-44 changeover een drukoverschrijding boven 4,85 bar laat zien binnen 60 seconden, kunnen we dan autonoom een 30-seconden pre-cool injecteren in de volgende recipe — zonder menselijke goedkeuring — en meten of scrap daalt?
De loop draait zonder operator-tussenkomst. Operators zien wat is gebeurd op het dashboard. Plant manager ziet het weekrapport.
Resultaat
| Metric | Voor | Na |
|---|---|---|
| Scrap op SKU-44 changeovers | 8,1% | 1,4% |
| Tijd om "waarom is SKU-44 duur?" te beantwoorden | 2 dagen CSV-werk | 5 seconden |
| Marginale infra-kost jaar 1 | n.v.t. | €165 |
| Marginale infra-kost jaar 2+ | n.v.t. | €69/jaar |
| Jaarlijkse opportunity, één SKU | onbenut | €152K/jaar |
| AI-pilots die autonoom een beslissing produceerden | 0 van 1 | 1 van 1 |
ROI jaar 1 op één SKU: 920×.
Wat dit bewijst
Open source kan wat een €40K AVEVA Connect licentie kan — maar dat is het proof point, niet de pitch. AVEVA is een symptoom van vendor lock-in, niet de villain. De villain is de ontbrekende laag waardoor AI faalt.
Je kunt alle 7 stappen bouwen en alsnog falen — als je niet doorpakt naar Solve.
"You're missing one layer — and AI can't fix what it can't understand."
Wil jij ook zulke resultaten?
Plan een gratis AI check van 30 minuten en ontdek welke quick wins er voor jouw bedrijf mogelijk zijn
Plan Gratis AI Check