Hvordan (og hvorfor) jeg byggede WireMD
Som underviser på Roskilde Tekniske Skole og KNX++ Tutor, støder jeg tit på et klassisk problem: Når elever skal lære om bygningsautomatik, brandtekniske installationer (ABA) og CTS, bliver de ofte sat til at tegne diagrammer i tunge, professionelle CAD-programmer.
Resultatet? De bruger 80 % af tiden på at slås med menuer, lag og "snap to grid"-funktioner, og 20 % af tiden på rent faktisk at forstå, hvorfor DALI-bussen ikke skal have 230V. Når de endelig får trukket virtuelle ledninger, ligner det et edderkoppespind, der har fået et angstanfald.
Og lad os være ærlige: Hvis de roder rundt med ledningerne på skærmen, gør de det nok også i virkeligheden. I simulatoren koster det kun lidt stolthed – i virkeligheden træder den naturlige selektion i kraft, når de kortslutter en 40A gruppe. For at redde både udstyr og liv (eller i hvert fald min egen tålmodighed), besluttede jeg mig for at bygge mit eget værktøj fra bunden: WireMD.
Hvad er WireMD?
WireMD er et skræddersyet, ultra-letvægts tegneprogram til elektriske kredsløb, KNX-topologier og relæ-logik. Det kører 100 % i browseren, kræver ingen installation, og er strippet for alt unødvendigt "CAD-støj".
Eleverne trækker komponenter (som strømforsyninger, KNX-aktuatorer eller røgdetektorer) ind på lærredet, og trækker ledninger fra klemme til klemme. That's it.
Teknologien bag maskinrummet (Tech Stack)
Målet var at holde det simpelt, lynhurtigt og vedligeholdelsesfrit. Hele applikationen er faktisk pakket ned i én enkelt HTML-fil. Ingen bygge-pipelines (som Webpack eller Vite) – bare ren kode, der kan kastes direkte op på Netlify og køre med det samme.
Her er de frameworks, WireMD er bygget på:
1. JointJS (Kernen i det hele)
Den absolutte motor i WireMD er
2. Backbone.js, Lodash & jQuery JointJS er et ældre, men utroligt stabilt framework, og det bygger på skuldrene af giganter. For at håndtere data-modellerne og DOM-manipulationen bruger programmet Backbone.js, Lodash og jQuery under motorhjelmen.
3. Material Design Icons (Pictogrammers)
For at give programmet et professionelt look, uden at skulle tegne alting selv, bruger jeg mdi-chip til KNX-moduler eller mdi-smoke-detector til ABA), der lader eleverne visuelt afkode komponenterne med det samme.
4. CDN (Content Delivery Network) I stedet for at downloade alle disse biblioteker og hoste dem selv, hentes de via CDN'er (Cloudflare og jsDelivr). Det betyder, at når mine elever åbner WireMD, serveres filerne lynhurtigt fra en server tæt på dem (ofte direkte fra browserens cache), i stedet for at belaste én central server.
Pædagogiske features i koden
Da det er et undervisningsværktøj, har jeg kodet nogle specifikke "livskvalitets"-funktioner ind:
JSON Gem/Indlæs: Eleverne kan eksportere hele deres lærred som en
.jsonfil og uploade den som en lektie, hvorefter jeg kan indlæse den præcis, hvor de slap.SVG Eksport: Med et enkelt klik genererer browseren en tabsfri SVG-fil af diagrammet (renset for gitter-baggrunden), som de kan klistre direkte ind i deres Word- eller PDF-afleveringer, så det står knivskarpt.
Skræddersyet database: Komponent-databasen er hardcodet med præcis de enheder, vi bruger i faget – ikke 10.000 generiske industri-symboler. Farvekoderne på kasserne (f.eks. KNX-moduler i lysegrøn med 20 % opacity) hjælper med at adskille protokollagene rent visuelt.
Prøv det selv https://marcdahl.dk/wiremd.html
WireMD er live lige nu, og du kan teste det direkte i din browser. Det er et bevis på, at man ikke behøver et millionbudget for at lave specialiseret software – nogle gange kræver det bare lidt JavaScript, en weekend, og en dyb frustration over krøllede ledninger.
Tak fordi I læste med!
Kommentarer
Send en kommentar