Seed 11 student projects, 5 kennis artikelen, cross-project dependencies

New thema "Studenten & Onderzoek" with 4 speerpunten:
- Gemalen & Pompen: Adriaan Sol (pilot 3 rioolgemaalketen), Robin van
  Weelie (D.R.A.I.N. regelsoftware), Grace van Geel (pompefficiëntie)
- Zuiveringsproces & Biologie: Noa de Groot (beluchting), Elise Nouws
  (algen zuurstofproductie), Pieter van der Wilt (ASM reactor EVOLV)
- EDGE & Architectuur: Kevin Haest (CRC IOT2050), Yamai van Rooij
  (condition monitoring MCSA), Bart van Gool (IoT-hub integratielaag)
- ICT & Security: Fontys ICT proftaak (Docker/CI-CD/SOC), Fontys
  TOGAF security groep

Cross-project dependencies linking student work to 2026 projects:
- Kevin CRC → BRIDGE (edge computing proof)
- Robin D.R.A.I.N. → Gemaal 3.0 (meetdata)
- Pieter ASM → Gemaal 3.0 (reactor model in EVOLV)

5 kennis artikelen: ISA-88 hierarchy, VLAN separation, CRC system,
pump efficiency findings, R&D stack architecture.

Verified: 5 lines, 17 stations, 6 connections, all grid-aligned.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
znetsixe
2026-04-08 13:50:14 +02:00
parent 2b78ece00d
commit 28d7ac008f

View File

@@ -18,6 +18,7 @@ use App\Models\Role;
use App\Models\Speerpunt;
use App\Models\Thema;
use App\Models\User;
use App\Models\KennisArtikel;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
@@ -599,6 +600,433 @@ class DatabaseSeeder extends Seeder
'beschrijving' => 'Digital twin validatie in Gemaal 3.0 gebruikt dezelfde EDGE-laag als bewezen in BRIDGE.',
'status' => 'open',
]);
// ══════════════════════════════════════════════════════════════
// 10. STUDENTEN — Thema met afstudeer-/stageprojecten
//
// Source: raw/*.docx, raw/*.pdf, raw/*.pptx
// ══════════════════════════════════════════════════════════════
$themaStudenten = Thema::create([
'naam' => 'Studenten & Onderzoek',
'beschrijving' => 'Afstudeer-, stage- en groepsprojecten van studenten (Avans, Fontys, TU/e) binnen het R&D-lab. Kennisbasis voor toekomstige innovaties.',
'prioriteit' => Prioriteit::Midden,
'periode_start' => '2021-07-01',
'periode_eind' => '2026-12-31',
]);
// --- Speerpunten per domein ---
$spGemalenPompen = Speerpunt::create([
'thema_id' => $themaStudenten->id,
'naam' => 'Gemalen & Pompen',
'beschrijving' => 'Studentenonderzoek naar rioolgemalen, pompefficiëntie, regelsoftware en digitale tweelingen voor pompsystemen.',
'eigenaar_id' => $rene->id,
'status' => SpeerpuntStatus::Actief,
]);
$spZuivering = Speerpunt::create([
'thema_id' => $themaStudenten->id,
'naam' => 'Zuiveringsproces & Biologie',
'beschrijving' => 'Onderzoek naar beluchtingsoptimalisatie, algenproductie, activated sludge modellen en biologische processen.',
'eigenaar_id' => $rene->id,
'status' => SpeerpuntStatus::Actief,
]);
$spEdgeArch = Speerpunt::create([
'thema_id' => $themaStudenten->id,
'naam' => 'EDGE & Architectuur',
'beschrijving' => 'Studentenonderzoek naar edge computing, IoT-hubs, Carbon Reducing Controller, condition-based monitoring.',
'eigenaar_id' => $pim->id,
'status' => SpeerpuntStatus::Actief,
]);
$spIctSecurity = Speerpunt::create([
'thema_id' => $themaStudenten->id,
'naam' => 'ICT & Security',
'beschrijving' => 'Groepsprojecten over Docker, CI/CD, SOC-implementatie en TOGAF security architectuur voor edge-apparaten.',
'eigenaar_id' => $pim->id,
'status' => SpeerpuntStatus::Actief,
]);
// --- Student projects ---
// Adriaan Sol — Pilot 3 rioolgemaalketen
$pAdriaan = $this->createProject([
'speerpunt_id' => $spGemalenPompen->id,
'naam' => 'Ontwerp Pilot 3 Rioolgemaalketen',
'beschrijving' => 'Afstudeerstage Avans Chemische Technologie. Ontwerp van pilot 3 rioolgemaalketen bij RWZI Nieuwveer. Student: Adriaan Sol (2154257).',
'eigenaar_id' => $rene->id,
'status' => ProjectStatus::Evaluatie,
'prioriteit' => Prioriteit::Midden,
'startdatum' => '2025-04-01',
'streef_einddatum' => '2025-10-21',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept, FaseType::Experiment, FaseType::Pilot, FaseType::Evaluatie]);
Document::create([
'project_id' => $pAdriaan->id,
'titel' => 'Eindverslag: Ontwerp pilot 3 rioolgemaalketen',
'type' => 'technisch_rapport',
'inhoud' => "Definitief eindverslag afstuderen Adriaan Sol (Avans, Chemische Technologie, PO²).\n\n"
. "Onderwerp: Ontwerp van pilot 3 rioolgemaalketen bij RWZI Nieuwveer.\n"
. "Focus: Procesontwerp en -optimalisatie voor de rioolgemaal testopstelling.\n"
. "Begeleider: Rene de Ren\n"
. "Bron: Definitief Eindverslag Waterschap Brabantse Delta Adriaan Sol 21-10-2025 - V1.docx",
'versie' => 1,
'auteur_id' => $rene->id,
]);
// Robin van Weelie — D.R.A.I.N.
$pRobin = $this->createProject([
'speerpunt_id' => $spGemalenPompen->id,
'naam' => 'D.R.A.I.N. Regelsoftware Rioolgemalen',
'beschrijving' => 'Afstudeeronderzoek naar data-gedreven en energie-efficiënte aansturing rioolgemalen. Technische analyse Hooge- en Lage Zwaluwe, invloed kelderhoogte en drukverschil op energetisch gedrag.',
'eigenaar_id' => $rene->id,
'status' => ProjectStatus::Evaluatie,
'prioriteit' => Prioriteit::Hoog,
'startdatum' => '2024-09-01',
'streef_einddatum' => '2025-06-30',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept, FaseType::Experiment, FaseType::Evaluatie]);
Document::create([
'project_id' => $pRobin->id,
'titel' => 'Eindverslag D.R.A.I.N. Robin van Weelie',
'type' => 'technisch_rapport',
'inhoud' => "Project D.R.A.I.N.: data-gedreven aansturing rioolgemalen.\n\n"
. "Onderzoeksvragen: (1) Geschiktheid gemalen Hooge-/Lage Zwaluwe voor nieuwe regelsoftware, "
. "(2) Invloed kelderhoogte en drukverschil op energetisch gedrag Hooge Zwaluwe.\n"
. "Methode: P&ID-analyse, pompspecificaties, meetdata.\n"
. "Bron: Eindverslag_WSBD_Robin_van_Weelie_V4-11-12.docx",
'versie' => 4,
'auteur_id' => $rene->id,
]);
Document::create([
'project_id' => $pRobin->id,
'titel' => 'Werkplan Digital Twin Experiment Hooge Zwaluwe',
'type' => 'projectplan',
'inhoud' => "Werkplan voor Digital Twin experiment op gemaal Hooge Zwaluwe.\n\n"
. "Competentie Experimenteren Niveau 2: aanpak kiezen en onderbouwen.\n"
. "Digital Twin als methode voor validatie van regelsoftware.\n"
. "Bron: Experiment Digital Twin Robin.docx",
'versie' => 1,
'auteur_id' => $rene->id,
]);
// Grace van Geel — Pompefficiëntie
$pGrace = $this->createProject([
'speerpunt_id' => $spGemalenPompen->id,
'naam' => 'Efficiëntie-curve Centrifugaalpompen',
'beschrijving' => 'Afstudeeronderzoek Avans naar invloed van voordruk, verschildruk en parallel werkende pompen op de efficiëntie-curve van centrifugaalpompen. Student: Grace van Geel.',
'eigenaar_id' => $rene->id,
'status' => ProjectStatus::Evaluatie,
'prioriteit' => Prioriteit::Midden,
'startdatum' => '2023-09-01',
'streef_einddatum' => '2024-01-12',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Experiment, FaseType::Evaluatie]);
Document::create([
'project_id' => $pGrace->id,
'titel' => 'Afstudeerverslag: Efficiëntie centrifugaalpompen',
'type' => 'technisch_rapport',
'inhoud' => "Energie-efficiëntie van centrifugaalpompen.\n\n"
. "Onderwerp: Invloed van voordruk, verschildruk en parallel werkende pompen op de efficiëntie-curve.\n"
. "Student: Grace van Geel, Avans Hogeschool.\n"
. "Team: R&D Lab, Waterschap Brabantse Delta.\n"
. "Bron: Energie-efficiëntie van centrifugaalpompen - Afstudeerverslag Grace van Geel.pdf",
'versie' => 1,
'auteur_id' => $rene->id,
]);
// Noa de Groot — Beluchtingsoptimalisatie
$pNoa = $this->createProject([
'speerpunt_id' => $spZuivering->id,
'naam' => 'Optimalisatie Beluchtingsproces RWZI',
'beschrijving' => 'Ontwerp van een nieuw model voor de optimalisatie van het beluchtingsproces in een rioolwaterzuivering. Student: Noa de Groot, Avans BML.',
'eigenaar_id' => $rene->id,
'status' => ProjectStatus::Evaluatie,
'prioriteit' => Prioriteit::Midden,
'startdatum' => '2024-01-01',
'streef_einddatum' => '2024-06-10',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept, FaseType::Experiment, FaseType::Evaluatie]);
Document::create([
'project_id' => $pNoa->id,
'titel' => 'Eindverslag: Optimalisatie beluchtingsproces',
'type' => 'technisch_rapport',
'inhoud' => "Ontwerp van een nieuw model voor de optimalisatie van het beluchtingsproces in een RWZI.\n\n"
. "Student: Noa de Groot, Avans BML.\n"
. "Begeleiders: René de Ren, Angelique Asselman, Margriet van Gestel.\n"
. "Bron: Eindverslag compleet versie 2.docx",
'versie' => 2,
'auteur_id' => $rene->id,
]);
// Elise Nouws — Algen voor zuurstof
$pElise = $this->createProject([
'speerpunt_id' => $spZuivering->id,
'naam' => 'Zuurstofproductie door Algen',
'beschrijving' => 'Onderzoek naar zuurstofproductie door algen voor beluchtingstanks als alternatief voor mechanische beluchting. Student: Elise Nouws, Avans Chemische Technologie.',
'eigenaar_id' => $rene->id,
'status' => ProjectStatus::Evaluatie,
'prioriteit' => Prioriteit::Laag,
'startdatum' => '2024-01-01',
'streef_einddatum' => '2024-06-11',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Experiment, FaseType::Evaluatie]);
Document::create([
'project_id' => $pElise->id,
'titel' => 'Afstudeerverslag: Zuurstofproductie door algen',
'type' => 'technisch_rapport',
'inhoud' => "Zuurstofproductie door algen voor beluchtingstanks.\n\n"
. "Student: Elise Nouws (2166910), Avans Chemische Technologie.\n"
. "Begeleiding: Sanne de Krom (school), Rene de Ren (bedrijf).\n"
. "Bron: afstudeerverslag Elise Nouws WSBD.pdf",
'versie' => 1,
'auteur_id' => $rene->id,
]);
// Pieter van der Wilt — Reactor model EVOLV
$pPieter = $this->createProject([
'speerpunt_id' => $spZuivering->id,
'naam' => 'Non-Ideal ASM Reactor Model (EVOLV)',
'beschrijving' => 'Masterstage: ontwikkeling van een niet-ideaal activated sludge reactor model voor het EVOLV-framework. Focus op computational setup, reaction model, transfer terms. Student: Pieter van der Wilt.',
'eigenaar_id' => $rene->id,
'status' => ProjectStatus::Evaluatie,
'prioriteit' => Prioriteit::Hoog,
'startdatum' => '2025-06-01',
'streef_einddatum' => '2025-11-21',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept, FaseType::Experiment, FaseType::Evaluatie]);
Document::create([
'project_id' => $pPieter->id,
'titel' => 'Internship Report: Non-Ideal ASM for EVOLV',
'type' => 'technisch_rapport',
'inhoud' => "Development of a Non-Ideal Activated Sludge Reactor Model for the EVOLV Framework.\n\n"
. "Contents: System description, model development, computational setup, assumptions, "
. "reaction model (ASM), transfer terms.\n"
. "Student: Pieter van der Wilt.\n"
. "Bron: Internship_report.pdf",
'versie' => 1,
'auteur_id' => $rene->id,
]);
// Kevin Haest — Carbon Reducing Controller
$pKevin = $this->createProject([
'speerpunt_id' => $spEdgeArch->id,
'naam' => 'Carbon Reducing Controller (Siemens IOT2050)',
'beschrijving' => 'Afstudeerproject Avans E&T: CRC-systeem met edge computing op de Siemens IOT2050. Integratie IoT in afvalwaterzuivering. Samenwerking met Minor Procesautomatisering. Student: Kevin Haest.',
'eigenaar_id' => $rene->id,
'status' => ProjectStatus::Evaluatie,
'prioriteit' => Prioriteit::Hoog,
'startdatum' => '2023-09-01',
'streef_einddatum' => '2024-03-21',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept, FaseType::Experiment, FaseType::Pilot, FaseType::Evaluatie]);
Document::create([
'project_id' => $pKevin->id,
'titel' => 'Afstudeerrapport CRC Kevin Haest',
'type' => 'technisch_rapport',
'inhoud' => "Carbon Reducing Controller: Edge computing met de Siemens IOT2050.\n\n"
. "Academie voor Techniek en Innovatie, Avans Breda.\n"
. "Focus: IoT-integratie afvalwaterzuivering, modulair gemaal ontwerp, "
. "samenwerking Minor Procesautomatisering (Bram van der Weijden).\n"
. "Begeleiders: Rene de Ren, Angelique Asselman, Frank Arnouts.\n"
. "Bron: Rapport_CRC_WSBD_KGA Haest_v3.0.docx",
'versie' => 3,
'auteur_id' => $rene->id,
]);
// Yamai van Rooij — Condition-based monitoring + CRC + MCSA
$pYamai = $this->createProject([
'speerpunt_id' => $spEdgeArch->id,
'naam' => 'Condition-Based Monitoring & MCSA',
'beschrijving' => 'Stage Avans IE&M: verbetering operationele efficiëntie via CRC-systeem en Motor Current Signal Analysis. Innovatie van onderhoudspraktijken en energieverbruik reductie.',
'eigenaar_id' => $rene->id,
'status' => ProjectStatus::Evaluatie,
'prioriteit' => Prioriteit::Midden,
'startdatum' => '2024-09-01',
'streef_einddatum' => '2025-03-01',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept, FaseType::Experiment, FaseType::Evaluatie]);
Document::create([
'project_id' => $pYamai->id,
'titel' => 'Main Report: Condition-Based Monitoring at WBD',
'type' => 'technisch_rapport',
'inhoud' => "Condition-based monitoring innovations at Waterboard Brabantse Delta.\n\n"
. "CRC-systeem implementatie en MCSA-methodologie voor pompoperaties.\n"
. "Student: Yamai van Rooij (2186229), Avans IE&M.\n"
. "Begeleiders: Rene de Ren, Angelique Asselman.\n"
. "Bron: Main_report_WBD_V2.docx",
'versie' => 2,
'auteur_id' => $rene->id,
]);
// Bart van Gool — IoT-hub integratielaag
$pBart = $this->createProject([
'speerpunt_id' => $spEdgeArch->id,
'naam' => 'IoT-hub Implementatie Integratielaag',
'beschrijving' => 'Afstudeerproject Avans TI: implementatie van een IoT-hub in de integratielaag van het waterschap. Koppeling R&D en integratieteam. Student: Bart van Gool. Begeleider: Pim Moerman.',
'eigenaar_id' => $pim->id,
'status' => ProjectStatus::Experiment,
'prioriteit' => Prioriteit::Midden,
'startdatum' => '2024-02-01',
'streef_einddatum' => '2024-08-01',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept, FaseType::Experiment]);
Document::create([
'project_id' => $pBart->id,
'titel' => 'Plan van Aanpak: IoT-hub Integratielaag',
'type' => 'projectplan',
'inhoud' => "Plan van aanpak voor implementatie IoT-hub in de integratielaag.\n\n"
. "Student: Bart van Gool (2168447), Avans TI.\n"
. "Bedrijfsbegeleider: Pim Moerman.\n"
. "Afdeling: R&D, Facilitair & ICT (integratie).\n"
. "Scope: RWZI Nieuwveer + kantoor Bouvigne.\n"
. "Bron: Plan van aanpak V4.0- Bart van Gool - 2168447 (1).docx",
'versie' => 4,
'auteur_id' => $pim->id,
]);
// Fontys ICT groep — Docker, CI/CD, SOC
$pFontysICT = $this->createProject([
'speerpunt_id' => $spIctSecurity->id,
'naam' => 'Fontys ICT Proftaak Docker & CI/CD & SOC',
'beschrijving' => 'Groepsopdracht Fontys ICT: (1) Docker Swarm & load balancing, (2) Geautomatiseerde CI/CD-pijplijn ter vervanging van USB-deployments, (3) SOC-implementatie voor procesautomatisering.',
'eigenaar_id' => $pim->id,
'status' => ProjectStatus::Concept,
'prioriteit' => Prioriteit::Midden,
'startdatum' => '2025-09-01',
'streef_einddatum' => '2026-02-01',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept]);
Document::create([
'project_id' => $pFontysICT->id,
'titel' => 'Opdracht Fontys ICT Proftaak',
'type' => 'projectplan',
'inhoud' => "Drie deelprojecten voor Fontys ICT groep:\n\n"
. "**1. Docker Swarm**: Clusters opzetten, containers dynamisch schalen, load balancing.\n"
. "**2. CI/CD Pipeline**: Geautomatiseerde code-deployments, geen USB-sticks meer.\n"
. "**3. SOC**: Security Operations Center voor procesautomatisering, "
. "monitoringtools, incident response procedures.\n"
. "Bron: Opdracht Fontys ICT proftaak groep v0.1.docx",
'versie' => 1,
'auteur_id' => $pim->id,
]);
// Fontys SOC/TOGAF groep
$pTOGAF = $this->createProject([
'speerpunt_id' => $spIctSecurity->id,
'naam' => 'TOGAF Security Architectuur Edge-Devices',
'beschrijving' => 'Fontys groepsproject: beveiligingsadvies op basis van TOGAF-methodiek + NIST Cybersecurity Framework voor edge-apparaten waterschap.',
'eigenaar_id' => $pim->id,
'status' => ProjectStatus::Concept,
'prioriteit' => Prioriteit::Midden,
'startdatum' => '2025-09-01',
'streef_einddatum' => '2026-02-01',
], [FaseType::Signaal, FaseType::Verkenning, FaseType::Concept]);
Document::create([
'project_id' => $pTOGAF->id,
'titel' => 'Groepsproject TOGAF Beveiligingsarchitectuur',
'type' => 'technisch_ontwerp',
'inhoud' => "TOGAF-gebaseerd beveiligingsadvies voor edge-devices.\n\n"
. "Stakeholder: IT-management Waterschap Brabantse Delta.\n"
. "Kaders: TOGAF ADM + NIST Cybersecurity Framework.\n"
. "Scope: Governance, architectuurprincipes, beveiligingsontwerp edge-computers.\n"
. "Besluitvorming: groep → stakeholder → docenten.\n"
. "Bron: Groepsproject TOGAF.docx",
'versie' => 1,
'auteur_id' => $pim->id,
]);
// --- Dependencies: student projects that feed into 2026 work ---
// Kevin's CRC work feeds into BRIDGE (edge computing proof)
Afhankelijkheid::create([
'project_id' => $bridge->id,
'afhankelijk_van_project_id' => $pKevin->id,
'type' => 'technisch',
'beschrijving' => 'BRIDGE bouwt voort op de CRC edge computing ervaring van Kevin Haest met de Siemens IOT2050.',
'status' => 'opgelost',
]);
// Robin's D.R.A.I.N. feeds into Gemaal 3.0 / Afvlakkingsregeling
Afhankelijkheid::create([
'project_id' => $gemaal->id,
'afhankelijk_van_project_id' => $pRobin->id,
'type' => 'data',
'beschrijving' => 'Gemaal 3.0 gebruikt de meetdata en analyse van Robin over gemalen Hooge-/Lage Zwaluwe.',
'status' => 'opgelost',
]);
// Pieter's reactor model is direct EVOLV contribution
Afhankelijkheid::create([
'project_id' => $gemaal->id,
'afhankelijk_van_project_id' => $pPieter->id,
'type' => 'technisch',
'beschrijving' => 'Het ASM reactor model van Pieter is geïntegreerd in het EVOLV-framework dat Gemaal 3.0 valideert.',
'status' => 'opgelost',
]);
// ──────────────────────────────────────────────────────────────
// 11. Kennis Artikelen — key findings extracted from student work
// ──────────────────────────────────────────────────────────────
KennisArtikel::create([
'titel' => 'ISA-88 Node Hiërarchie voor EVOLV Digital Twins',
'inhoud' => "De EVOLV digital twin architectuur volgt de ISA-88 (S88) batch control standaard:\n\n"
. "Control Module → Equipment → Unit → Process Cell → Area → Complex Models → Utilities\n\n"
. "Elke laag heeft eigen Node-RED nodes. Verticale afhankelijkheden bepalen de dataflow. "
. "Horizontale vertakkingen per niveau representeren parallelle assets.\n\n"
. "Voorbeeld Pumping Station keten: measurement → Rotating Machine → machineGroupControl → "
. "Sewage Pumping Station → Sewage Pumping Group Control → Influent Prediction.",
'auteur_id' => $rene->id,
]);
KennisArtikel::create([
'titel' => 'VLAN-scheiding OT/IT voor EDGE-implementatie',
'inhoud' => "De EDGE-architectuur gebruikt drie VLAN-niveaus:\n\n"
. "VLAN 1 (Bouvigne): Linux server met Digital Twin + Integratielaag\n"
. "VLAN 2 (On-site OT): Siemens 1500 PLC + Remote IO\n"
. "VLAN 3 (On-site IT): Linux EDGE met Digital Twin + Integratielaag\n\n"
. "Communicatie: HTTPS extern→Bouvigne, tunnel Bouvigne→EDGE, OPC UA EDGE→PLC.\n"
. "Gevalideerd in de BRIDGE pilot Klundert.",
'auteur_id' => $pim->id,
]);
KennisArtikel::create([
'titel' => 'Carbon Reducing Controller (CRC) — Siemens IOT2050',
'inhoud' => "De CRC is een edge-computing oplossing op de Siemens IOT2050 voor CO₂-reductie "
. "in de afvalwaterzuivering.\n\n"
. "Ontwikkeld door Kevin Haest (Avans E&T, 2024). Combineert IoT met procesautomatisering. "
. "Het modulaire gemaal ontwerp integreert lessen uit eerdere prototypes.\n\n"
. "Motor Current Signal Analysis (MCSA) door Yamai van Rooij (2025) bouwt hierop voort "
. "voor condition-based monitoring van pompoperaties.",
'auteur_id' => $rene->id,
]);
KennisArtikel::create([
'titel' => 'Efficiëntiecurves Centrifugaalpompen — Meetresultaten',
'inhoud' => "Onderzoek Grace van Geel (Avans, 2024) toont aan dat:\n\n"
. "- Voordruk significant de efficiëntiecurve van centrifugaalpompen beïnvloedt\n"
. "- Verschildruk de optimale werking verschuift\n"
. "- Parallel werkende pompen een ander efficiëntieprofiel geven dan individuele pompen\n\n"
. "Deze bevindingen zijn relevant voor de Gemaal 3.0 digital twin validatie "
. "en de afvlakkingsregeling in de gemalenketen.",
'auteur_id' => $rene->id,
]);
KennisArtikel::create([
'titel' => 'R&D Stack — Drielaagse Architectuur',
'inhoud' => "De R&D-stack bestaat uit drie lagen:\n\n"
. "**Cloud/Central**: nginx-proxy, Node-RED, Portainer, Jenkins, InfluxDB, Grafana, Mosquitto MQTT\n"
. "**EDGE**: Node-RED, Portainer, InfluxDB, Grafana, CoreSync, Mosquitto\n"
. "**OT**: OPC UA Server → PLC\n\n"
. "CoreSync verzorgt synchronisatie tussen lokaal (ZRG) en centraal (Bouvigne) niveau. "
. "Fluffle is een write-only MQTT bridge voor veilige data-export.",
'auteur_id' => $rene->id,
]);
}
/**