Wat is dit project
Een proof-of-concept AR-oplossing voor onderhoud en inspectie. Machines publiceren sensordata via MQTT. De backend verwerkt en evalueert deze data met fuzzy logic en biedt live streams aan. De Unity AR-client herkent een machine-marker, haalt machinegegevens op en toont live grafieken en prioriteiten op een AR-paneel.
Doel en context
- Onderwijsproject aan Windesheim: real-time datavisualisatie en beslissingsondersteuning in AR demonstreren.
- Technische doelen: schaalbare stream-pipeline, configuratie-gedreven fuzzy evaluatie, en robuuste AR-UI.
Hoe het werkt
Backend (NestJS)
- MQTT-core: abonneert op topics zoals
{machineId}/{sensor}
, beheert kanalen per machine, en zet berichten door als Server-Sent Events (SSE). - Fuzzy-core: leest per-machine JSON-configuraties (sensoren, linguïstische variabelen en regels) en berekent prioriteiten/condities.
- Maintenance-endpoints: SSE-streams voor evaluatieresultaten en per-sensor live data. Swagger aanwezig voor documentatie.
- Configuratie-gedreven: nieuwe machines en regels via configbestanden, geen codewijziging nodig.
- Docker-compose: lokale stack met broker, API en sensormockers.
Frontend (Unity, AR Foundation)
- Image recognition: ARTrackedImageManager detecteert een marker. De referentie-imagenaam is het numerieke machineId.
- Machine-info: na detectie
GET /machines/{machineId}
voor naam/omschrijving en configuratie. - Live data: SSE-clients voor sensoren (bijv. temperatuur/druk) en fuzzy-evaluaties. Tussen weergaven schakelen kan: raw sensordata of fuzzy-status.
- AR-panelen: info-kaart bij het marker-anker, herpositionering voor fuzzy-modus, en consistente typografie/styling.
- Grafiekmodule: lijngrafiek met vaste Y-as, referentielijnen en legenda per sensor.
Mijn bijdrage
- MQTT-module: verbinding en topic-matching, kanaalbeheer per machine, SSE-bridging, debug-routes.
- Fuzzy uit config: engine gemaakt die fuzzy variabelen en regels vanaf JSON-configbestanden per machine inleest en evalueert.
- Main API-setup: NestJS-projectstructuur, modules (mqtt-core, fuzzy-core, maintenance-core), SSE-endpoints, Swagger, Docker.
- Documentatie: projectplan, requirements, SAD, teststrategie en testreport opgesteld en bijgehouden.
- AR-dashboard styling: typografie, kleurgebruik, lay-out en leesbaarheid in AR.
- AR-paneelpositionering: anker- en offset-logica, fuzzy-modus die grafiek uitschakelt en datakaart herschikt.
- AR-grafiek: lijngrafiek met referentielijnen en legenda, sensorgewijs togglebaar.
- Databinding op AR-panelen: live sensorteksten, fuzzy-status, machinenaam en beschrijving.
- Beeldherkenning → machine-ID: mapping van referentie-imagenaam naar machineId, ophalen van details en starten van streams.