DIYables WebApps Bibliotheek API Referentie - Volledige Documentatie

Overzicht

De DIYables WebApps bibliotheek biedt een uitgebreide modulaire oplossing voor het maken van WebSocket-gebaseerde webapplicaties op Arduino Uno R4 WiFi en DIYables STEM V4 IoT. Het bevat meerdere kant-en-klare webapplicaties en een flexibel framework voor het maken van aangepaste applicaties. Speciaal geoptimaliseerd voor het DIYables STEM V4 IoT educatieve platform met verbeterde IoT-mogelijkheden en ingebouwde sensor integratie.

De bibliotheek gebruikt een modulaire architectuur waarbij u alleen de webapplicaties insluit die u nodig heeft, waardoor geheugen wordt bespaard en prestaties verbeteren.

Functies

  • Modulaire Architectuur: Voeg alleen de web-apps toe die u nodig heeft om geheugengebruik te optimaliseren
  • Geheugen Efficiënt: Elke web-app kan onafhankelijk worden in- of uitgeschakeld
  • 11+ Gebruiksklare Webapplicaties: Volledige Arduino controle zonder webprogrammeerkennis
  • Aangepast Web-App Framework: Maak uw eigen applicaties met het basisklasse systeem
  • Real-time Communicatie: WebSocket-gebaseerd voor directe updates
  • Responsief Ontwerp: Werkt op desktop, tablet en mobiele apparaten
  • Eenvoudige Integratie: Simpele callback-gebaseerde API
  • Ondersteuning Meerdere Apps: Ondersteuning voor het gelijktijdig toevoegen van meerdere web-apps
  • Platform Uitbreidbaar: Momenteel geïmplementeerd voor Arduino Uno R4 WiFi, maar kan worden uitgebreid voor andere hardware platforms. Zie DIYables_WebApps_ESP32

Kernklassen

DIYablesWebAppServer

De hoofdserver klasse die webapplicaties, HTTP-verzoeken en WebSocket-communicatie beheert.

Constructor

DIYablesWebAppServer(int httpPort = 80, int websocketPort = 81)

Maakt een web-app server instantie aan.

  • httpPort: HTTP-server poort (standaard: 80)
  • websocketPort: WebSocket-server poort (standaard: 81)

Methoden

Installatie en Verbinding
bool begin()

Initialiseert netwerkverbinding (voor Ethernet of vooraf geconfigureerde verbindingen) en start de webserver.

  • Retourneert: true als succesvol, false als gefaald
  • Gebruiksgeval: Voor toekomstige Ethernet ondersteuning of wanneer WiFi-referenties vooraf zijn geconfigureerd
bool begin(const char* ssid, const char* password)

Initialiseert WiFi-verbinding en start de webserver.

  • ssid: WiFi-netwerknaam
  • password: WiFi-wachtwoord
  • Retourneert: true als succesvol, false als gefaald
  • Gebruiksgeval: Standaard WiFi-verbinding met referenties
void loop()

Verwerkt HTTP-verzoeken en WebSocket-communicatie. Moet worden aangeroepen in de hoofdlus.

bool isConnected()

Retourneert true als WiFi verbonden is.

String getIPAddress()

Retourneert het IP-adres van de Arduino als string.

Applicatie Beheer
void addApp(DIYablesWebAppPageBase* app)

Voegt een webapplicatie toe aan de server.

  • app: Pointer naar een webapplicatie instantie
void removeApp(const String& path)

Verwijdert een webapplicatie op basis van het URL-pad.

  • path: URL-pad van de applicatie (bijv. "/chat")
DIYablesWebAppPageBase* getApp(const String& path)

Haalt een webapplicatie op op basis van het URL-pad.

  • path: URL-pad van de applicatie
  • Retourneert: Pointer naar de app of nullptr als niet gevonden
void setNotFoundPage(const DIYablesNotFoundPage& page)

Stelt de 404 Not Found pagina in (optioneel).

  • page: 404 pagina instantie
Gespecialiseerde App Toegang
DIYablesWebDigitalPinsPage* getWebDigitalPinsPage()

Haalt de digitale pinnen pagina instantie op als toegevoegd.

  • Retourneert: Pointer naar de digitale pinnen pagina of nullptr
DIYablesWebSliderPage* getWebSliderPage()

Haalt de slider pagina instantie op als toegevoegd.

  • Retourneert: Pointer naar de slider pagina of nullptr
DIYablesWebJoystickPage* getWebJoystickPage()

Haalt de joystick pagina instantie op als toegevoegd.

  • Retourneert: Pointer naar de joystick pagina of nullptr

Basisklassen

DIYablesWebAppPageBase

Abstracte basisklasse waarvan alle webapplicaties erven. Biedt gemeenschappelijke functionaliteit voor HTTP-afhandeling, WebSocket-communicatie en paginabeheer.

Constructor

DIYablesWebAppPageBase(const String& pagePath)

Maakt een basispagina instantie aan met het opgegeven URL-pad.

  • pagePath: URL-pad voor de pagina (bijv. "/web-joystick")

Virtuele Methoden (Moeten geïmplementeerd worden door afgeleide klassen)

virtual void handleHTTPRequest(IWebClient& client) = 0

Verwerkt HTTP-verzoeken voor deze pagina. Puur virtuele methode.

  • client: Web client interface voor het verzenden van reactie
virtual void handleWebSocketMessage(IWebSocket& ws, const char* message, uint16_t length) = 0

Verwerkt WebSocket-berichten voor deze pagina. Puur virtuele methode.

  • ws: WebSocket-verbinding interface
  • message: Ontvangen berichtinhoud
  • length: Berichtlengte
virtual const char* getPageInfo() const = 0

Retourneert pagina identificatiestring gebruikt in verbindingsinfo weergave. Puur virtuele methode.

  • Retourneert: Pagina info string (bijv. "🕹️ Web Joystick: ")
virtual String getNavigationInfo() const = 0

Retourneert HTML voor startpagina navigatieknop. Puur virtuele methode.

  • Retourneert: HTML string voor navigatiekaart

Virtuele Methoden (Optionele overschrijvingen)

virtual void onWebSocketConnection(IWebSocket& ws)

Wordt aangeroepen wanneer een nieuwe WebSocket-verbinding wordt opgezet.

  • ws: Nieuwe WebSocket-verbinding
virtual void onWebSocketClose(IWebSocket& ws)

Wordt aangeroepen wanneer een WebSocket-verbinding wordt gesloten.

  • ws: Gesloten WebSocket-verbinding

Gemeenschappelijke Methoden

const char* getPagePath() const

Haalt het URL-pad voor deze pagina op.

  • Retourneert: Pagina pad string
bool isEnabled() const

Controleert of de pagina momenteel ingeschakeld is.

  • Retourneert: true als ingeschakeld, false als uitgeschakeld
void setEnabled(bool enable)

Schakelt de pagina in of uit.

  • enable: true om in te schakelen, false om uit te schakelen

Hulpmethoden

void sendHTTPHeader(IWebClient& client, const char* contentType = "text/html")

Zendt standaard HTTP-headers naar client.

  • client: Web client interface
  • contentType: MIME-type (standaard: "text/html")
void sendWebSocketMessage(IWebSocket& ws, const char* message)

Zendt een bericht naar specifieke WebSocket client.

  • ws: Doel WebSocket-verbinding
  • message: Te verzenden bericht
void broadcastToAllClients(const char* message)

Zendt een bericht naar alle verbonden WebSocket clients.

  • message: Te verzenden bericht
void sendLargeHTML(IWebClient& client, const char* html)

Zendt grote HTML-inhoud met chunked transfer encoding.

  • client: Web client interface
  • html: Te verzenden HTML-inhoud

Gebruiksvoorbeeld

class CustomPage : public DIYablesWebAppPageBase { public: CustomPage() : DIYablesWebAppPageBase("/custom") {} void handleHTTPRequest(IWebClient& client) override { sendHTTPHeader(client); client.println("<html><body>Custom Page</body></html>"); } void handleWebSocketMessage(IWebSocket& ws, const char* message, uint16_t length) override { // Handle WebSocket messages sendWebSocketMessage(ws, "Response: " + String(message)); } const char* getPageInfo() const override { return " 🔧 Custom Page: "; } String getNavigationInfo() const override { return "<a href=\"/custom\" class=\"app-card custom\">" "<h3>🔧 Custom</h3><p>Custom functionality</p></a>"; } };

Webapplicatie Klassen

DIYablesHomePage

Centrale navigatiehub die links biedt naar alle ingeschakelde applicaties.

Constructor

DIYablesHomePage()

URL Pad

  • Pad: / (root)

DIYablesWebChatPage

Interactieve chat interface voor tweerichtingscommunicatie met Arduino.

Constructor

DIYablesWebChatPage()

URL Pad

  • Pad: /webchat

Methoden

void onWebChatMessage(std::function<void(const String&)> callback)

Stelt callback in voor inkomende chatberichten.

void sendToWebChat(const String& message)

Zendt een bericht naar de webchat interface.

DIYablesWebMonitorPage

Web-gebaseerde seriële monitor voor real-time uitvoer en commando-invoer.

Constructor

DIYablesWebMonitorPage()

URL Pad

  • Pad: /webmonitor

Methoden

void onWebMonitorMessage(std::function<void(const String&)> callback)

Stelt callback in voor inkomende monitor berichten.

void sendToWebMonitor(const String& message)

Zendt een bericht naar de webmonitor interface.

DIYablesWebDigitalPinsPage

Bestuur en monitor digitale pinnen 0-13 via webinterface.

Constructor

DIYablesWebDigitalPinsPage()

URL Pad

  • Pad: /webdigitalpins

Methoden

void enablePin(int pin, int mode)

Schakelt een pin in voor webbediening.

  • pin: Pin nummer (0-13)
  • mode: WEB_PIN_OUTPUT of WEB_PIN_INPUT
void onPinWrite(std::function<void(int, int)> callback)

Stelt callback in voor pin schrijfoperaties (uitvoerpinnen).

void onPinRead(std::function<int(int)> callback)

Stelt callback in voor pin leesoperaties (invoerpinnen).

void onPinModeChange(std::function<void(int, int)> callback)

Stelt callback in voor pin modus wijzigingen.

void updatePinState(int pin, int state)

Werkt pin status real-time bij voor webclients.

DIYablesWebSliderPage

Dubbele slider besturing voor analoge/PWM-toepassingen.

Constructor

DIYablesWebSliderPage()

URL Pad

  • Pad: /webslider

Methoden

void onSliderValueFromWeb(std::function<void(int, int)> callback)

Stelt callback in voor slider waarde wijzigingen van web.

  • Parameters: slider1 (0-255), slider2 (0-255)
void onSliderValueToWeb(std::function<void()> callback)

Stelt callback in voor webclient die huidige waarden opvraagt.

void sendToWebSlider(int slider1, int slider2)

Zendt slider waarden naar webinterface.

DIYablesWebJoystickPage

2D joystick besturing voor robotica en positioneringstoepassingen.

Constructor

DIYablesWebJoystickPage(bool autoReturn = true, float sensitivity = 10.0)
  • autoReturn: Of joystick automatisch naar centrum terugkeert
  • sensitivity: Minimaal bewegingspercentage om updates te activeren

URL Pad

  • Pad: /webjoystick

Methoden

void onJoystickValueFromWeb(std::function<void(int, int)> callback)

Stelt callback in voor joystick beweging van web.

  • Parameters: x (-100 tot 100), y (-100 tot 100)
void onJoystickValueToWeb(std::function<void()> callback)

Stelt callback in voor webclient die huidige positie opvraagt.

void sendToWebJoystick(int x, int y)

Zendt joystick positie naar webinterface.

void setAutoReturn(bool autoReturn)

Stelt automatisch terugkeer gedrag in.

void setSensitivity(float sensitivity)

Stelt bewegingsgevoeligheid in (percentage).

DIYablesWebPlotterPage

Real-time datavisualisatie met ondersteuning voor meerdere datareeksen.

Constructor

DIYablesWebPlotterPage()

URL Pad

  • Pad: /webplotter

Methoden

void setPlotTitle(const String& title)

Stelt de plot titel in.

void setAxisLabels(const String& xLabel, const String& yLabel)

Stelt aslabels in.

void enableAutoScale(bool enable)

Schakelt automatische Y-as schaling in of uit.

void setMaxSamples(int maxSamples)

Stelt maximum aantal datapunten in om weer te geven.

void addDataPoint(const String& seriesName, float x, float y)

Voegt een datapunt toe aan een reeks.

void clearPlot()

Wist alle data uit de plot.

DIYablesNotFoundPage

Optionele 404 foutpagina voor betere gebruikerservaring.

Constructor

DIYablesNotFoundPage()

Basis Gebruiksvoorbeeld

#include <DIYablesWebApps.h> // WiFi credentials const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD"; // Create server and web applications DIYablesWebAppServer webAppsServer(80, 81); DIYablesHomePage homePage; DIYablesWebChatPage chatPage; DIYablesWebMonitorPage monitorPage; void setup() { Serial.begin(9600); // Add only the applications you need webAppsServer.addApp(&homePage); webAppsServer.addApp(&chatPage); webAppsServer.addApp(&monitorPage); // Optional: Add 404 page webAppsServer.setNotFoundPage(DIYablesNotFoundPage()); // Start server if (webAppsServer.begin(ssid, password)) { Serial.println("Server started successfully"); Serial.print("IP: "); Serial.println(webAppsServer.getIPAddress()); } // Setup callbacks chatPage.onWebChatMessage([](const String& message) { Serial.println("Chat: " + message); chatPage.sendToWebChat("Arduino received: " + message); }); } void loop() { webAppsServer.loop(); delay(10); }

Webapplicaties Overzicht

Startpagina

  • URL: http://[arduino-ip]/
  • Doel: Centrale navigatiehub
  • Functies: Links naar alle ingeschakelde applicaties, verbindingsstatus

WebChat Applicatie

  • URL: http://[arduino-ip]/webchat
  • Doel: Tweerichtingscommunicatie interface
  • Functies: Real-time messaging, berichtgeschiedenis, WebSocket status

Web Monitor

  • URL: http://[arduino-ip]/webmonitor
  • Doel: Vervanging voor seriële monitor
  • Functies: Real-time seriële uitvoer, commando-invoer, donker thema

Web Digital Pins Besturing

  • URL: http://[arduino-ip]/webdigitalpins
  • Doel: Bestuur digitale pinnen 0-13
  • Functies: Individuele pinbediening, bulk operaties, real-time status

Web Slider Besturing

  • URL: http://[arduino-ip]/webslider
  • Doel: Dubbele analoge/PWM-besturing
  • Functies: Twee onafhankelijke sliders (0-255), vooraf ingestelde waarden, real-time feedback

Web Joystick Besturing

  • URL: http://[arduino-ip]/webjoystick
  • Doel: 2D positiebesturing voor robots/voertuigen
  • Functies: Aanraking/muis besturing, coördinaten weergave, gevoeligheidsaanpassing

Web Plotter

  • URL: http://[arduino-ip]/webplotter
  • Doel: Real-time datavisualisatie
  • Functies: Meerdere datareeksen, auto-schaling, configureerbare titels en assen

WebSocket Communicatie

Alle applicaties gebruiken WebSocket op poort 81 voor real-time communicatie:

  • WebSocket URL: ws://[arduino-ip]:81
  • Verbinding: Automatische herverbinding bij verbreken
  • Protocol: Tekstgebaseerd berichtformaat

Berichtformaten

WebChat Berichten

  • Van Web: Direct tekstbericht
  • Naar Web: Direct tekstbericht

Web Monitor Berichten

  • Van Web: Direct tekstbericht
  • Naar Web: Direct tekstbericht

Web Digital Pin Berichten

  • Van Web: JSON-formaat: {"pin": 13, "state": 1}
  • Naar Web: JSON-formaat: {"pin": 13, "state": 1}

Web Slider Berichten

  • Van Web: JSON-formaat: {"slider1": 128, "slider2": 255}
  • Naar Web: JSON-formaat: {"slider1": 128, "slider2": 255}

Web Joystick Berichten

  • Van Web: JSON-formaat: {"x": 50, "y": -25}
  • Naar Web: JSON-formaat: {"x": 50, "y": -25}

Web Plotter Berichten

  • Van Web: Niet van toepassing (alleen weergave)
  • Naar Web: JSON-formaat: {"series": "temp", "x": 10.5, "y": 23.4}

Foutafhandeling

De bibliotheek bevat automatische foutafhandeling voor:

  • WiFi-verbindingsfouten
  • WebSocket-verbindingsonderbrekingen
  • Ongeldige berichtformaten
  • Client verbindingslimieten

Geheugengebruik

Modulaire Architectuur Voordelen: Sluit alleen de webapplicaties in die u nodig heeft om geheugengebruik te optimaliseren.

Geschat geheugengebruik per component:

  • DIYablesWebAppServer: ~8KB Flash, ~2KB RAM
  • DIYablesHomePage: ~3KB Flash, ~1KB RAM
  • DIYablesWebChatPage: ~6KB Flash, ~1.5KB RAM
  • DIYablesWebMonitorPage: ~5KB Flash, ~1.5KB RAM
  • DIYablesWebDigitalPinsPage: ~8KB Flash, ~2KB RAM
  • DIYablesWebSliderPage: ~6KB Flash, ~1.5KB RAM
  • DIYablesWebJoystickPage: ~7KB Flash, ~1.5KB RAM
  • DIYablesWebPlotterPage: ~10KB Flash, ~2KB RAM
  • WebSocket Buffer: ~1KB RAM per verbinding

Totaal als alle apps ingeschakeld: ~53KB Flash, ~12KB RAM

Minimale setup (server + startpagina + 1 app): ~17KB Flash, ~4.5KB RAM

Browsercompatibiliteit

Ondersteunde browsers:

  • Chrome 50+
  • Firefox 45+
  • Safari 10+
  • Edge 79+
  • Mobiele browsers (iOS Safari, Chrome Mobile)

Beveiligingsopmerkingen

  • Geen authenticatie geïmplementeerd (alleen geschikt voor lokale netwerken)
  • Alleen gebruiken in vertrouwde netwerken
  • Overweeg authenticatie toe te voegen voor publieke implementaties

Probleemoplossing

Veelvoorkomende Problemen

  1. Kan geen verbinding maken met WiFi

- Controleer SSID en wachtwoord

- Verifieer dat netwerk 2.4GHz is (niet 5GHz)

- Controleer signaalsterkte

  1. WebSocket-verbinding faalt

- Verifieer dat IP-adres correct is

- Controleer firewall-instellingen

- Probeer andere browser

  1. Hoog geheugengebruik

- Schakel ongebruikte applicaties uit

- Beperk gelijktijdige verbindingen

- Herstart Arduino als geheugenfragmentatie optreedt

  1. Langzame reactie

- Controleer WiFi-signaalsterkte

- Verminder WebSocket-berichtfrequentie

- Gebruik kortere callback-functies

Voorbeeldprojecten

Voorbeeldapplicaties

De DIYables WebApps bibliotheek bevat uitgebreide voorbeelden ontworpen voor Arduino Uno R4 WiFi en DIYables STEM V4 IoT educatief platform:

Beschikbare Voorbeelden

  • Chat Voorbeeld: Tweerichtingscommunicatie interface
  • WebMonitor Voorbeeld: Vervanging voor seriële monitor met verbeterde functies
  • WebDigitalPins Voorbeeld: Bestuur alle digitale pinnen met visuele feedback
  • WebSlider Voorbeeld: Dubbele analoge/PWM-besturing met voorinstellingen
  • WebJoystick Voorbeeld: 2D positiebesturing voor robotica projecten
  • MultipleWebApps Voorbeeld: Alle applicaties gelijktijdig werkend

Hardware Compatibiliteit

  • Aanbevolen: DIYables STEM V4 IoT (verbeterde functies, ingebouwde sensoren)
  • Compatibel: Arduino Uno R4 WiFi

Tutorial Bronnen

Volledige stap-voor-stap tutorials beschikbaar op:

  • Newbiely.com/tutorials/arduino/arduino-uno-r4-wifi-web-apps
  • DIYables STEM V4 IoT specifieke gidsen en sensor integratie voorbeelden

Zie de examples/ map voor volledige projecten en docs/ map voor gedetailleerde installatie-instructies.

Platform Abstractie Interfaces

De DIYables WebApps bibliotheek gebruikt een platform abstractielaag met interfaces die ondersteuning voor meerdere hardware platforms mogelijk maken. Deze interfaces scheiden de kern WebApp functionaliteit van platform-specifieke implementaties.

Kern Interfaces

IWebClient

Interface voor HTTP client verbindingen.

class IWebClient { public: virtual ~IWebClient() = default; // Stream interface methods virtual int available() = 0; virtual int read() = 0; virtual int peek() = 0; virtual size_t write(uint8_t data) = 0; virtual size_t write(const uint8_t* buffer, size_t size) = 0; virtual void flush() = 0; // Connection management virtual bool connected() = 0; virtual void stop() = 0; // Convenience methods virtual void print(const String& str) = 0; virtual void println(const String& str) = 0; };

IWebSocket

Interface voor WebSocket verbindingen met bidirectionele communicatie ondersteuning.

class IWebSocket { public: enum DataType { TEXT = 1, BINARY = 2 }; enum CloseCode { NORMAL_CLOSURE = 1000, GOING_AWAY = 1001, PROTOCOL_ERROR = 1002, UNSUPPORTED_DATA = 1003, POLICY_VIOLATION = 1008, MESSAGE_TOO_BIG = 1009, INTERNAL_ERROR = 1011 }; virtual ~IWebSocket() = default; // Message handling virtual void sendText(const char* message) = 0; virtual void sendBinary(const uint8_t* data, size_t length) = 0; virtual bool isConnected() const = 0; virtual void close(CloseCode code = NORMAL_CLOSURE, const char* reason = nullptr) = 0; // Event callbacks virtual void onMessage(std::function<void(IWebSocket*, DataType, const char*, uint16_t)> callback) = 0; virtual void onClose(std::function<void(IWebSocket*, CloseCode, const char*, uint16_t)> callback) = 0; };

IWebServer

Interface voor HTTP server functionaliteit.

class IWebServer { public: virtual ~IWebServer() = default; // Server lifecycle virtual bool begin() = 0; virtual void stop() = 0; virtual IWebClient* available() = 0; // Configuration virtual void setPort(uint16_t port) = 0; virtual uint16_t getPort() const = 0; };

IWebSocketServer

Interface voor WebSocket server met verbindingsbeheer.

class IWebSocketServer { public: using ConnectionCallback = std::function<void(IWebSocket*)>; using MessageCallback = std::function<void(IWebSocket*, IWebSocket::DataType, const char*, uint16_t)>; virtual ~IWebSocketServer() = default; // Server lifecycle virtual bool begin() = 0; virtual void stop() = 0; virtual void listen() = 0; // Event handling virtual void onConnection(ConnectionCallback callback) = 0; virtual void onMessage(MessageCallback callback) = 0; // Broadcasting virtual void broadcastText(const char* message) = 0; virtual void broadcastBinary(const uint8_t* data, size_t length) = 0; // Configuration virtual void setPort(uint16_t port) = 0; virtual uint16_t getPort() const = 0; };

INetworkProvider

Interface voor netwerkconnectiviteitsbeheer.

class INetworkProvider { public: virtual ~INetworkProvider() = default; // Network lifecycle virtual bool begin(const char* ssid, const char* password) = 0; virtual void end() = 0; virtual bool isConnected() = 0; // Network information virtual String getLocalIP() = 0; virtual String getSSID() = 0; virtual int32_t getRSSI() = 0; };

IServerFactory

Factory interface voor het maken van platform-specifieke implementaties.

class IServerFactory { public: virtual ~IServerFactory() = default; // Factory methods virtual INetworkProvider* createNetworkProvider() = 0; virtual IWebServer* createWebServer(uint16_t port) = 0; virtual IWebSocketServer* createWebSocketServer(uint16_t port) = 0; // Platform information virtual String getPlatformName() const = 0; };

Platform Implementatie Voorbeeld

Voor Arduino Uno R4 WiFi worden de interfaces geïmplementeerd met de UnoR4WiFi_WebServer bibliotheek:

class UnoR4ServerFactory : public IServerFactory { public: INetworkProvider* createNetworkProvider() override { return new UnoR4NetworkProvider(); } IWebServer* createWebServer(uint16_t port) override { return new UnoR4WebServer(port); } IWebSocketServer* createWebSocketServer(uint16_t port) override { return new UnoR4WebSocketServer(port); } String getPlatformName() const override { return "Arduino Uno R4 WiFi"; } };

Nieuw Platform Ondersteuning Toevoegen

Om ondersteuning toe te voegen voor een nieuw platform (bijv. ESP32):

  1. Implementeer alle interfaces voor het doelplatform
  2. Maak een ServerFactory die uw implementaties instantieert
  3. Verwerk platform-specifieke netwerken en WebSocket-protocollen
  4. Test met bestaande WebApp-klassen (geen wijzigingen nodig)

Voorbeeldgebruik met verschillende platforms:

// Arduino Uno R4 WiFi UnoR4ServerFactory factory; DIYablesWebAppServer server(factory, 80, 81); // ESP32 (hypothetisch) ESP32ServerFactory esp32Factory; DIYablesWebAppServer esp32Server(esp32Factory, 80, 81);

Voordelen van Interface-Gebaseerd Ontwerp

  • Platform Onafhankelijkheid: Kern WebApp-logica werkt op elk platform
  • Uitbreidbaarheid: Eenvoudig nieuwe hardwareondersteuning toevoegen
  • Onderhoudbaarheid: Platform-specifieke code is geïsoleerd
  • Testbaarheid: Interfaces kunnen worden nagebootst voor unit testing
  • Consistentie: Dezelfde API voor alle ondersteunde platforms

Huidige Platform Ondersteuning

  • Arduino Uno R4 WiFi: Volledig geïmplementeerd en getest
  • 🔄 ESP32: Beschikbaar als aparte extensie - DIYables_WebApps_ESP32
  • 🚀 Toekomstige Platforms: Kunnen worden toegevoegd met hetzelfde interface patroon

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!