DIYables ESP32 WebApps 라이브러리를 사용한 아두이노 나노 ESP32 커스텀 웹앱
개요
DIYables ESP32 WebApps 라이브러리의 CustomWebApp 예제는 Arduino Nano ESP32에서 기존 DIYables 웹 앱 에코시스템과 통합되는 브라우저 기반 인터페이스를 구축하기 위한 시작 템플릿을 제공합니다. 템플릿은 브라우저와 보드 간의 양방향 WebSocket 통신을 설정합니다: 브라우저는 보드에 텍스트 명령을 보낼 수 있고, 보드는 언제든지 데이터를 브라우저로 푸시할 수 있습니다.
예제는 동일한 스케치 폴더에 함께 있어야 하는 네 개의 파일로 구성됩니다:
CustomWebApp.ino — 애플리케이션 로직이 있는 메인 스케치
CustomWebApp.h — 페이지 클래스 인터페이스를 정의하는 헤더
CustomWebApp.cpp — 클래스 구현 및 WebSocket 메시지 라우팅
custom_page_html.h — 브라우저 페이지용 내장 HTML, CSS, JavaScript
Search for DIYables ESP32 WebApps created by DIYables and click the Install button.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Library Manager
DIYables ESP32 WebApps
Type:
All
Topic:
All
DIYables ESP32 WebAppsby DIYables
A comprehensive library designed for ESP32 that provides multiple professional web applications including Web Monitor, Chat, Digital Pin Control, Sliders, Joystick, Analog Gauge, Rotator Control, and Temperature Display via WebSocket communication. Features modular architecture for memory efficiency, automatic config handling, and perfect for IoT projects, robotics, sensor monitoring, servo/stepper control, temperature monitoring, and remote ESP32 control.
More info
1.0.1
INSTALL
Newbiely.ino
···
1
voidsetup() {
Output
Serial Monitor
Ln 1, Col 1
Arduino Nano ESP32 on COM15
1
다른 라이브러리 의존성 설치 요청을 받게 됩니다
Install All 버튼을 클릭하여 모든 라이브러리 의존성을 설치합니다.
Arduino IDE에서 File Examples DIYables ESP32 WebApps CustomWebApp으로 이동합니다. IDE가 네 개의 파일을 엽니다: CustomWebApp.ino, CustomWebApp.h, CustomWebApp.cpp, custom_page_html.h.
Arduino IDE의 Upload 버튼을 클릭하여 코드를 Arduino Nano ESP32에 업로드합니다
시리얼 모니터를 엽니다
시리얼 모니터 출력은 다음과 유사해야 합니다:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Starting Custom WebApp...
INFO: Added app /
INFO: Added app /custom
DIYables WebApp Library
Platform: Arduino Nano ESP32
Network connected!
IP address: 192.168.0.2
HTTP server started on port 80
Configuring WebSocket server callbacks...
WebSocket server started on port 81
WebSocket URL: ws://192.168.0.2:81
WebSocket server started on port 81
==========================================
DIYables WebApp Ready!
==========================================
Web Interface: http://192.168.0.2
WebSocket: ws://192.168.0.2:81
Available Applications:
Home Page: http://192.168.0.2/
Custom WebApp: http://192.168.0.2/custom
==========================================
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2
아무것도 표시되지 않으면 보드의 리셋 버튼을 누릅니다.
시리얼 모니터의 IP 주소를 같은 네트워크의 브라우저에 입력합니다.
예시: http://192.168.0.2
홈 페이지에 커스텀 애플리케이션 카드가 표시됩니다:
커스텀 WebApp 카드를 선택하여 페이지를 엽니다:
페이지는 http://192.168.0.2/custom에서 직접 액세스할 수도 있습니다.
기본 템플릿 확인
기본 템플릿은 기본 양방향 통신을 보여줍니다:
페이지의 입력 필드에 텍스트를 입력하고 Send를 클릭합니다. 보드가 메시지를 받고 에코를 반환합니다. 웹 페이지에 Echo: <your message>가 표시됩니다.
보드는 5초마다 연결된 모든 브라우저에 가동 시간 메시지를 보냅니다: Arduino uptime: X seconds
수신된 모든 메시지는 시리얼 모니터에 출력됩니다.
앱 식별자 시스템
라이브러리는 여러 웹 앱이 포트 81의 WebSocket 서버 하나를 공유할 수 있도록 합니다. 각 앱은 앱 식별자라는 짧은 접두사 문자열로 격리됩니다. 식별자는 양방향의 모든 메시지 앞에 추가됩니다.
보드 측 (CustomWebApp.h / CustomWebApp.cpp)
// CustomWebApp.hclass CustomWebAppPage : public DIYablesWebAppPageBase {private:staticconstString APP_IDENTIFIER;};// CustomWebApp.cppconstString CustomWebAppPage::APP_IDENTIFIER = "CUSTOM:";// Receiving: strip identifier before passing to callbackvoid CustomWebAppPage::handleWebSocketMessage(constString& message) {if (message.startsWith(APP_IDENTIFIER)) {String payload = message.substring(APP_IDENTIFIER.length());// invoke user callback with payload }}// Sending: prepend identifier before broadcastingvoid CustomWebAppPage::sendToWeb(const String& message) { broadcastToAllClients(APP_IDENTIFIER + message);}
// Default: accessible at /customCustomWebAppPage::CustomWebAppPage() : DIYablesWebAppPageBase("/custom") {}// Change to a descriptive pathCustomWebAppPage::CustomWebAppPage() : DIYablesWebAppPageBase("/temperature") {}
경로는 /로 시작해야 하며 내장 앱에서 사용하는 경로(/chat, /monitor, /plotter, /web-digital-pins, /web-joystick, /web-slider, /web-table, /web-rtc, /web-rotator, /web-gauge)와 중복되면 안 됩니다.
여러 커스텀 앱 관리
하나 이상의 커스텀 페이지를 추가할 때 각각 고유한 식별자, 고유한 경로, 고유한 클래스 이름이 있어야 합니다.