WOLPU3H는 ESP32 또는 ESP8266과 Supabase를 결합하여 어디서든 원격으로 로컬 네트워크의 PC를 깨울 수 있는 Wake-on-LAN 관리 시스템입니다. 전용 웹 대시보드를 통해 간편하게 제어할 수 있습니다.
- 멀티 플랫폼 지원: ESP32-S3 및 ESP8266(NodeMCU) 기종을 모두 지원합니다.
- 실시간 기기 모니터링 (Heartbeat): 연결된 모든 ESP 기기의 상태(Online/Offline), IP 주소, 힙 메모리 잔량 등을 대시보드에서 실시간으로 확인할 수 있습니다.
- 모던 웹 대시보드: GitHub Pages로 배포 가능한 글래스모피즘 디자인의 관리 페이지.
- 간편한 설정 (SoftAP): 기기 최초 부팅 시 스마트폰으로 접속하여 WiFi 및 API 설정 가능.
- 시리얼 커맨드 제어: 시리얼 모니터를 통해 실시간 설정 조회 및 초기화 지원.
- 보안 및 안정성: HTTPS 통신 및 API Key 인증을 사용하며, SSL 메모리 최적화를 통해 안정적인 폴링을 보장합니다.
-
Supabase 프로젝트를 생성합니다.
-
SQL Editor로 이동하여 프로젝트 루트의
setup.sql내용을 실행합니다.wol_requests(요청) 및device_health(상태) 테이블이 생성되고 보안 정책(RLS)이 설정됩니다.
-
Project Settings > API에서 아래 정보를 복사해둡니다:
Project URL(예:https://xyz...supabase.co)Anon Key(Public API Key)
-
(선택) 자동 정리 설정:
pg_cron확장을 활성화하고setup.sql하단의 스케줄러 쿼리를 실행하면, 30일이 지난 완료된 요청을 자동으로 삭제합니다. (최근 10건은 유지)
Arduino IDE의 라이브러리 관리자에서 다음을 설치하세요:
- ArduinoJson (Benoit Blanchon) - v6 이상 권장
firmware/wolpu3h/wolpu3h.ino파일을 엽니다.- Tools > Board에서
ESP32S3 Dev Module을 선택합니다. - Tools > USB CDC On Boot를
Enabled로 설정합니다 (시리얼 로그 확인용). - 업로드 버튼을 눌러 보드에 구워줍니다.
- 보드 부팅 후 스마트폰 WiFi 목록에서
WOLPU3H에 접속합니다. - 브라우저에서
192.168.4.1에 접속합니다. - 공유기 WiFi 정보와 Supabase 정보를 입력하고 Save를 누릅니다.
- (또는) 시리얼 모니터에서
set ssid:이름,set pass:비번등 명령어로 설정 후save하세요.
WiFi를 변경하거나 설정을 다시 하고 싶은 경우 다음 방법을 사용하세요:
- 물리 버튼 사용: 기기의 **BOOT 버튼(GPIO 0)**을 5초 이상 꾹 누르고 있습니다. LED가 깜빡거리며 초기화된 후 재부팅됩니다.
- 시리얼 명령어 사용: 시리얼 모니터에
factory-reset을 입력합니다.
firmware/wolpu3h_8266/wolpu3h_8266.ino파일을 엽니다.- Tools > Board에서
NodeMCU 1.0 (ESP-12E Module)등을 선택합니다. - 업로드 모드 진입:
- 보드의 FLASH 버튼을 누른 상태에서 RESET 버튼을 딸깍 누른 뒤 FLASH 버튼을 뗍니다.
- 자작 보드인 경우 GPIO 0을 GND에 연결한 상태로 전원을 켭니다.
- 업로드 버튼을 눌러 보드에 구워줍니다. (업로드 후 GPIO 0 연결 해제 및 리셋 필요)
직접 호스팅할 필요 없이 아래 공식 페이지를 통해 바로 관리할 수 있습니다. 입력한 Supabase 설정은 서버에 저장되지 않고 오직 사용자의 브라우저(localStorage)에만 안전하게 보관됩니다.
- (선택사항) 이 저장소를
fork하거나clone하여 직접 GitHub Pages로 배포할 수도 있습니다. - 배포된 URL 또는 위 Live 링크로 접속합니다.
- 우측 하단 Settings 버튼을 눌러 내 Supabase URL과 Anon Key를 입력합니다.
- Active Devices 섹션에서 내 ESP 기기가 online 상태인지 확인합니다. (최초 연결 시 약 1분 소요)
- Target MAC Address에 깨우고 싶은 PC의 MAC 주소를 입력하고 Send Magic Packet을 누릅니다.
- 현장에 있는 ESP 기기가 이를 감지하면 즉시 PC를 깨우고 상태를
done으로 변경합니다.
하나의 Supabase 프로젝트로 여러 장소의 PC를 제어할 수 있습니다. 각 ESP 기기에게 고유한 Device ID를 부여하여 특정 위치의 기기만 동작하게 만듭니다.
graph TD
User([사용자 웹]) -->|요청: did='office'| DB[(Supabase)]
DB -->|Polling| ESP_A["ESP32 #1 <br/> (did: home)"]
DB -->|Polling| ESP_B["ESP32 #2 <br/> (did: office)"]
ESP_A --x|무시| PC1[집 PC]
ESP_B -->|WoL 발송!| PC2[사무실 PC]
-
설정 방법:
- ESP 기기: 시리얼 명령어
set did:내방이름또는 초기 설정 페이지에서 입력. - Web: 'Device ID' 칸에 깨우고 싶은 기기의 이름을 입력 (비워두면 모든 기기가 반응할 수 있음).
- ESP 기기: 시리얼 명령어
-
작동 원리:
Device ID가 일치하는 요청만 해당 ESP 기기가 수행하고done처리합니다.Device ID가NULL인 요청은 모든 ESP 기기가 동시에 반응합니다(브로드캐스트).
웹 대시보드 없이 터미널이나 자동화 스크립트에서 직접 PC를 깨울 수 있습니다.
# 특정 기기(office)를 통해 PC 깨우기
curl -X POST 'https://YOUR_PROJECT_ID.supabase.co/rest/v1/wol_requests' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_ANON_KEY" \
-H "Content-Type: application/json" \
-H "Prefer: return=minimal" \
-d '{ "target_mac": "AA:BB:CC:DD:EE:FF", "device_id": "office" }'help: 명령어 목록 보기show: 현재 설정 확인set <key>:<val>: 설정 변경 (예:set did:office_01)save: 변경사항 저장 및 재부팅factory-reset: 모든 초기화
ESP8266 버전은 **GPIO 0(FLASH 핀)**을 5초 이상 누르면 공장 초기화가 되도록 설계되어 있습니다. 펌웨어 업데이트를 위해 GPIO 0을 쇼트(GND 연결)할 때, 다음을 주의하세요:
- 핵심: GPIO 0을 쇼트한 후 5초 이내에 리셋(REST) 버튼을 누르세요.
- 5초가 지나기 전에 리셋을 누르면 소프트웨어 로직이 즉시 정지되므로 설정값이 삭제되지 않고 안전하게 하드웨어 업로드 모드로 진입합니다.
- ESP8266은 메모리가 부족하여 SSL 연결이 불안정할 수 있습니다. 펌웨어에서 SSL 버퍼 최적화를 적용했으나, 여전히 실패한다면 전원 공급이 충분한지(USB 케이블 등) 확인하세요.
- 설정 페이지(
192.168.4.1)를 새로고침하여 다시 스캔을 시도하세요. - ESP8266이 AP 모드와 Station 모드를 동시에 수행하느라 스캔이 늦어질 수 있습니다.
MIT License