CRANTROL: W5500-Based IoT Control Platform
CRANTROL is an ESP32-S3 and W5500 Ethernet remote control platform with 10-channel relay control, Flutter mobile app, Firebase sync, and captive portal setup.
👤 AUTHOR
ashhim
CRANTROL은 ESP32-S3와 WIZnet W5500을 기반으로 개발된 분산형 IoT 원격 제어 시스템입니다.
단순한 Ethernet Relay Controller에 그치지 않고 ESP32 Firmware, Flutter Mobile Application, Firebase Realtime Database 및 Captive Portal을 하나의 시스템으로 구성하여 인터넷을 통한 원격 장치 제어와 실시간 상태 동기화를 구현했습니다.
🔗 GitHub:
https://github.com/ashhim/Crantrol
🎯 PROJECT DESCRIPTION
CRANTROL은 PC, Server, Monitor, Router, Network Switch 및 기타 전기 장치를 원격에서 제어하기 위한 IoT Remote Power & Device Control System입니다. 하드웨어는 ESP32-S3 + W5500 Ethernet Controller를 중심으로 구성되며 기본적으로 10개의 독립적인 Relay Output을 지원합니다.
사용자는 Android/iOS용 Flutter Application을 이용해 장치를 제어하고, 명령과 상태 정보는 Firebase Realtime Database를 통해 ESP32-S3 Controller와 실시간으로 동기화됩니다. CRANTROL의 중요한 특징은 일반적인 ESP32 IoT 시스템과 달리 Wi-Fi가 아닌 W5500 Ethernet을 정상 운용을 위한 Primary Network로 사용한다는 것입니다.
Wi-Fi는 초기 설정이나 Network Recovery가 필요한 경우에만 AP와 Captive Portal을 제공하는 용도로 사용됩니다.
🧩 COMPONENTS
| Category | Specification |
|---|---|
| MCU | ESP32-S3 |
| Ethernet | WIZnet W5500 |
| Primary Network | Wired Ethernet |
| Wi-Fi | Captive Portal Configuration |
| Relay Outputs | 10 Channels, Expandable |
| Cloud Backend | Firebase Realtime Database |
| Authentication | Firebase Authentication |
| Mobile Application | Flutter – Android / iOS |
| Firmware | Arduino Framework / PlatformIO |
| Programming Language | C++ / Dart |
| Configuration Storage | ESP32 NVS |
| Status | Status LED / Network LED / RGB LED |
| Feedback | Active Buzzer |
🏗️ SYSTEM ARCHITECTURE
CRANTROL은 크게 세 개의 Layer로 구성됩니다.
Flutter Mobile App
Android / iOS
│
│ Firebase SDK
▼
Firebase Realtime Database
│
Internet / Ethernet
│
▼
W5500
│ SPI
▼
ESP32-S3
│
┌────── ─────┼────────────┐
│ │ │
10× Relays Status LEDs Buzzer
│
▼
PC / Server / Monitor / Router
Switch / Modem / Lighting / etc.변경된 Hardware State는 다시 Firebase로 전달되어 연결된 Mobile Application에 실시간으로 반영됩니다.
🌐 Why W5500?
CRANTROL에서 W5500은 Primary Network Interface입니다.
일반적인 ESP32 IoT 장치가 Wi-Fi를 주 통신 수단으로 사용하는 것과 달리 CRANTROL은 상시 운용 시 Wired Ethernet을 우선적으로 사용하도록 설계되었습니다.
W5500은 ESP32-S3와 HSPI로 연결되며 Firmware의 Ethernet Manager가 다음 기능을 관리합니다.
- W5500 Initialization
- Ethernet Link Monitoring
- IP Configuration
- Connection Recovery
- Internet Availability Detection
또한 단순히 Ethernet Cable 연결 여부만 확인하지 않습니다.
Ethernet Manager는 W5500 초기화, Ethernet Link/IP 상태, Connection Recovery 및 Internet Availability를 관리합니다. Firebase 연결과 실시간 동기화는 별도의 Firebase Client가 담당합니다.
이러한 구조는 W5500을 단순한 Ethernet 추가 기능이 아니라 상시 동작하는 Remote Controller의 핵심 Network Interface로 사용한 사례라는 점에서 의미가 있습니다.
📡 Ethernet for Operation, Wi-Fi for Configuration
CRANTROL에서 특히 흥미로운 부분은 Ethernet과 Wi-Fi의 역할을 명확하게 분리했다는 점입니다.
NORMAL OPERATION
ESP32-S3 ── W5500 ── Ethernet ── Firebase
│
Flutter App
INITIAL SETUP / RECOVERY
ESP32-S3 ── Wi-Fi AP
│
Captive Portal
│
Browser Configuration반면 Wi-Fi는 runtime data path로 사용하지 않는다 ,사용자는 Firmware를 다시 Flash하지 않고 Web Browser를 통해 장치 설정을 변경할 수 있습니다.
즉,
Ethernet은 안정적인 Runtime Communication을 담당하고, Wi-Fi는 편리한 Configuration Interface를 담당합니다.
이 역할 분리가 CRANTROL Network Architecture의 특징입니다.
☁️ Firebase Real-Time Control
Flutter App이 ESP32-S3와 직접 통신하는 구조가 아니라 Firebase Realtime Database가 중간 Synchronization Layer 역할을 합니다.
User
↓
Flutter App
↓
Firebase Realtime Database
↓
W5500 Ethernet
↓
ESP32-S3
↓
Relay따라서 여러 Mobile Device가 동일한 CRANTROL Controller에 접속하더라도 최신 Hardware State를 공유할 수 있습니다. Firebase Authentication과 Database Security Rules도 사용됩니다.
🔌 10-Channel Relay Control
CRANTROL은 기본적으로 10개의 독립 Relay Output을 지원합니다.
각 Relay는 개별적으로 다음 항목을 설정할 수 있습니다.
- Custom Relay Name
- GPIO Assignment
- Enable / Disable
- Active High / Active Low
- Pulse Duration
- Latched / Pulse Operation
Relay 구조 자체도 Modular하게 설계되어 향후 10채널 이상으로 확장할 수 있도록 구성되어 있습니다.
🖥️ APPLICATION EXAMPLES
CRANTROL은 처음에는 PC Remote Control 용도로 개발되었지만 Relay로 제어할 수 있는 다양한 장치에 적용할 수 있습니다.
Computer / Server Control : PC Power, Reset 및 Server 장치를 원격으로 제어
Network Equipment : Router, Switch 및 Modem의 원격 Power Cycle
AV Equipment : Monitor와 Speaker 등의 장치 제어
Lighting / Power Control : 조명이나 전원 장치의 원격 On/Off
Remote Maintenance : 현장에 직접 방문하지 않고 Network Equipment나 PC의 전원을 Reset
GitHub에서는 PC, Server, Monitor, Speaker, Router, Network Switch, Modem, Lighting 및 Power Supply 등을 대표적인 적용 대상으로 제시하고 있습니다.
🔗 RELATED EXISTING CONTENTS & EXPANSION VALUE
CRANTROL과 목적·구성이 겹치는 WIZnet Maker Site 프로젝트 네 편을 나란히 놓았습니다. "ESP32-S3 + W5500 릴레이 컨트롤러"라는 하드웨어 조합 자체는 사이트에 여러 번 등장하지만, 모바일 앱 + 클라우드 실시간 동기화 + 캡티브 포털을 하나로 묶은 완성형 스택은 CRANTROL이 유일합니다. 이 대비가 아래 비교의 핵심입니다.
| CRANTROL (본 프로젝트) | KinCony KC868-A2v3 | CONTROL_POWER_MQTT | BEM104 | ESP32 + W5500 8-Ch Relay | |
|---|---|---|---|---|---|
| 성격 | 개인 오픈소스, 완성형 시스템 | 상용 DIN-레일 제품 ($55) | 개인/현장 배포 코드 | 상용 산업용 모듈 | 회로 설계 템플릿 (미완성) |
| MCU | ESP32-S3 | ESP32-S3-WROOM-1 (N16R8) | Arduino Mega 2560 | 자체 MCU (비공개) | ESP32 38핀 보드 |
| 릴레이 채널 | 10채널, 확장형 | 2채널 | 4채널 | 2채널 | 8채널 (설계만) |
| 주 네트워크 | W5500 Ethernet (상시) | W5500 Ethernet (Wi-Fi와 병행 노출) | W5100/W5500 (고정 IP) | W5500 Ethernet | W5500 Ethernet (Wi-Fi와 택일) |
| 제어 프로토콜 | Firebase Realtime DB | HTTP/MQTT (ESPHome) 또는 KCS v3 자체 프로토콜 | MQTT (LWT 포함) | HTTP, Modbus-TCP, EasyBus-TCP | 미구현 (템플릿 단계) |
| 모바일 앱 | Flutter (Android/iOS), 자체 개발 | 없음 (Home Assistant/Tuya 앱 연동) | 없음 | 없음 (URL 직접 호출) | 없음 |
| 초기 설정 | Wi-Fi 캡티브 포털 | 정적 설정 (ESPHome YAML / KCS 웹 UI) | Serial 명령 수동 재설정 | DHCP Plug & Play | 미구현 |
| 네트워크 장애 대응 | 4단계 상태 판별 + Firebase 하트비트 | 표시만 (Wi-Fi/Eth IP 동시 표시) | MQTT LWT로 오프라인 감지 | Auto Ping 기반 Watchdog 재부팅 | 없음 |
| 완성도 | 프로토타입, 라이선스 명시 없음 | 양산 제품, 매뉴얼·인증 존재 | 현장 배포 추정, 자격증명 하드코딩 | 양산 제품, 매뉴얼 존재 | 미완성 템플릿 |
네 사례를 함께 보면 CRANTROL의 위치가 뚜렷해집니다. 하드웨어 철학(ESP32-S3 + W5500 wired-first)은 KinCony 같은 상용 제품과 같은 방향이고, 기능적 목적(다채널 원격 전원 제어)은 CONTROL_POWER_MQTT·BEM104와 같은 계열이지만, 그 위에 자체 개발한 모바일 앱과 클라우드 실시간 동기화 계층을 올렸다는 점에서 개인/오픈소스 프로젝트 중에서는 완성도가 높은 축에 속합니다.
📘 CONCLUSION
CRANTROL은 단순한 ESP32 Relay Controller가 아닙니다.
ESP32-S3 + W5500 + 10-Channel Relay + Flutter + Firebase + Captive Portal을 하나의 시스템으로 구성한 완성도 높은 Remote Device Control Platform입니다.
특히 정상 운용에서는 W5500 Ethernet을 사용하고 Wi-Fi는 Provisioning과 Recovery에만 사용하는 Ethernet-First Architecture가 인상적입니다.
또한 Network Link, IP, Internet, Firebase 및 Heartbeat 상태를 지속적으로 확인하고 Flutter App과 Hardware State를 실시간으로 동기화하기 때문에 PC, Server 및 Network Equipment처럼 상시 연결성과 원격 관리가 중요한 장치에 적용하기 좋은 Reference Project입니다.
❓ FAQ
Q1. CRANTROL은 어떤 프로젝트인가요?
ESP32-S3와 W5500을 이용해 PC, Server, Network Equipment 및 Relay 기반 전기 장치를 원격 제어하는 IoT Platform입니다. Flutter App과 Firebase Realtime Database를 이용해 Remote Control과 실시간 상태 동기화를 구현합니다.
Q2. ESP32-S3에 Wi-Fi가 있는데 왜 W5500을 사용하나요?
CRANTROL은 장시간 안정적인 Remote Operation을 위해 W5500 기반 Wired Ethernet을 Primary Network Interface로 사용합니다. Wi-Fi는 정상 통신이 아니라 Captive Portal을 이용한 설정에 사용됩니다.
Q3. Wi-Fi는 언제 사용하나요?
초기 설정 또는 Network Recovery가 필요한 경우 ESP32-S3가 Wi-Fi AP를 활성화하여 Captive Portal을 제공합니다.
Q4. 몇 개의 Relay를 제어할 수 있나요?
기본적으로 10개의 독립 Relay를 지원하며 Software Architecture는 추가 Relay 확장을 고려해 설계되었습니다.
Q5. Smartphone에서 직접 ESP32-S3에 접속하나요?
아닙니다. 정상 운용 시 Flutter App과 ESP32-S3는 Firebase Realtime Database를 통해 명령과 상태를 동기화합니다.
Q6. 어떤 장치를 제어할 수 있나요?
PC, Server, Monitor, Router, Network Switch, Modem, Lighting 및 기타 Relay로 On/Off 또는 Pulse 제어가 가능한 장치에 적용할 수 있습니다.
👤 AUTHOR
ashhim
CRANTROL is a distributed IoT remote control system based on the ESP32-S3 and WIZnet W5500.
Rather than being a simple Ethernet relay controller, the project combines ESP32 firmware, a Flutter mobile application, Firebase Realtime Database, and captive-portal provisioning into a complete remote device-control platform.
🔗 GitHub:
https://github.com/ashhim/Crantrol
🎯 PROJECT DESCRIPTION
CRANTROL is an IoT Remote Power & Device Control System designed to remotely manage computers, servers, monitors, routers, network switches, and other electrical equipment.
The embedded controller is built around an ESP32-S3 with a WIZnet W5500 Ethernet Controller and supports 10 independently configurable relay outputs by default.
Users control and monitor the system through a Flutter application for Android and iOS, while commands and hardware states are synchronized through Firebase Realtime Database.
A key characteristic of CRANTROL is its Ethernet-first network architecture. W5500-based wired Ethernet is used during normal operation, while the ESP32-S3's Wi-Fi is reserved for captive-portal configuration during initial provisioning or network recovery.
🧩 COMPONENTS
| Category | Specification |
|---|---|
| MCU | ESP32-S3 |
| Ethernet | WIZnet W5500 |
| Primary Network | Wired Ethernet |
| Wi-Fi | Captive Portal Configuration |
| Relay Outputs | 10 Channels, Expandable |
| Cloud Backend | Firebase Realtime Database |
| Authentication | Firebase Authentication |
| Mobile Application | Flutter – Android / iOS |
| Firmware | Arduino Framework / PlatformIO |
| Languages | C++ / Dart |
| Configuration Storage | ESP32 NVS |
| Status Indicators | Status / Network / RGB LEDs |
| Audible Feedback | Active Buzzer |
🏗️ SYSTEM ARCHITECTURE
CRANTROL uses a distributed three-layer architecture:
Flutter Mobile App
Android / iOS
│
Firebase SDK
▼
Firebase Realtime Database
│
Internet / Ethernet
▼
W5500
│ SPI
▼
ESP32-S3
│
┌────────── ─┼────────────┐
│ │ │
10× Relays Status LEDs Buzzer
│
▼
PC / Server / Monitor / Router
Switch / Modem / Lighting / etc.When a user operates a relay from the Flutter application, the command is written to Firebase. The ESP32-S3 receives the update over Ethernet and controls the corresponding relay.
The resulting hardware state is then reported back through Firebase so that every connected application remains synchronized.
🌐 Why W5500?
The W5500 is the primary network interface in CRANTROL.
Instead of relying on the ESP32-S3's built-in Wi-Fi for continuous communication, CRANTROL uses wired Ethernet during normal operation.
The firmware's Ethernet Manager handles W5500 initialization, link monitoring, IP configuration, connection recovery, Internet availability detection, and cloud connectivity.
CRANTROL also distinguishes multiple network states rather than relying only on physical cable detection:
The Ethernet Manager handles W5500 initialization, Ethernet link/IP status, connection recovery, and Internet availability. Firebase authentication and real-time synchronization are handled separately by the Firebase Client.
📡 Ethernet for Operation, Wi-Fi for Configuration
One of the most interesting design choices in CRANTROL is the clear separation between Ethernet and Wi-Fi.
NORMAL OPERATION
ESP32-S3 ── W5500 ── Ethernet ── Firebase
│
Flutter App
INITIAL SETUP / RECOVERY
ESP32-S3 ── Wi-Fi AP
│
Captive Portal
│
Browser ConfigurationW5500 Ethernet serves as the primary runtime and Firebase communication path. The ESP32-S3 Wi-Fi interface is not used for normal application data traffic; in the current firmware, it operates as a local captive-portal configuration interface.
☁️ Firebase Real-Time Control
The Flutter application does not communicate directly with the ESP32 hardware.
Instead, Firebase Realtime Database acts as the synchronization layer between the mobile application and embedded controller.
User
↓
Flutter App
↓
Firebase Realtime Database
↓
W5500 Ethernet
↓
ESP32-S3
↓
RelayRelay states, device configuration, heartbeat information, online status, timers, and system commands are synchronized through Firebase.
Firebase Authentication and database security rules are also used to control access to device data.
🔌 10-Channel Relay Control
CRANTROL supports 10 independent relay outputs by default.
Each relay can be configured with a custom name, GPIO assignment, enable/disable state, Active High/Low operation, pulse duration, and latched or pulse operation.
The relay abstraction is modular, allowing additional channels to be incorporated in future hardware revisions.
🖥️ APPLICATION EXAMPLES
CRANTROL can be used for:
- Remote PC and server power/reset control
- Router, switch, and modem power cycling
- Monitor and speaker control
- Lighting control
- Smart power distribution
- Remote maintenance systems
- Other relay-controlled electrical equipment
🔗 RELATED EXISTING CONTENTS & EXPANSION VALUE (English)
Four WIZnet Maker Site projects share meaningful overlap with CRANTROL's purpose and structure. The "ESP32-S3 + W5500 relay controller" hardware combination itself appears repeatedly on the site, but Among the projects compared here, CRANTROL is the only one that bundles a self-built mobile app, real-time cloud synchronization, and captive-portal provisioning into one complete stack — and that contrast is the point of the comparison below.
| CRANTROL (this project) | KinCony KC868-A2v3 | CONTROL_POWER_MQTT | BEM104 | ESP32 + W5500 8-Ch Relay | |
|---|---|---|---|---|---|
| Nature | Personal open-source, complete system | Commercial DIN-rail product ($55) | Individual/field-deployed code | Commercial industrial module | Circuit design template (unfinished) |
| MCU | ESP32-S3 | ESP32-S3-WROOM-1 (N16R8) | Arduino Mega 2560 | Proprietary MCU (undisclosed) | ESP32 38-pin board |
| Relay channels | 10, expandable | 2 | 4 | 2 | 8 (design only) |
| Primary network | W5500 Ethernet (always-on) | W5500 Ethernet (exposed alongside Wi-Fi) | W5100/W5500 (static IP) | W5500 Ethernet | W5500 Ethernet (either/or with Wi-Fi) |
| Control protocol | Firebase Realtime DB | HTTP/MQTT (ESPHome) or KCS v3 proprietary | MQTT (with LWT) | HTTP, Modbus-TCP, EasyBus-TCP | Not implemented (template stage) |
| Mobile app | Custom-built Flutter (Android/iOS) | None (Home Assistant/Tuya app instead) | None | None (direct URL calls) | None |
| Provisioning | Wi-Fi captive portal | Static config (ESPHome YAML / KCS web UI) | Manual serial reconfiguration | DHCP plug & play | Not implemented |
| Network-fault handling | 4-state ladder + Firebase heartbeat | Display only (shows both IPs) | MQTT LWT for offline detection | Auto Ping watchdog reboot | None |
| Maturity | Prototype, no stated license | Shipping product, manual + specs | Apparently field-deployed, hardcoded credentials | Shipping product, manual available | Unfinished template |
Read together, these four cases sharpen exactly where CRANTROL sits. Its hardware philosophy (ESP32-S3 + W5500, wired-first) points the same direction as a commercial product like KinCony's; its functional goal (multi-channel remote power control) puts it in the same family as CONTROL_POWER_MQTT and BEM104 — but layering a custom mobile app and real-time cloud sync on top makes it unusually complete for a personal/open-source project.
📘 CONCLUSION
CRANTROL is more than a simple ESP32 relay controller.
It integrates ESP32-S3 + W5500 + 10-Channel Relay Control + Flutter + Firebase + Captive Portal Provisioning into a complete remote device-control platform.
Its Ethernet-first architecture is particularly noteworthy: W5500 Ethernet provides continuous runtime connectivity, while Wi-Fi is reserved for configuration and recovery.
Combined with real-time cloud synchronization and multi-level network monitoring, CRANTROL provides a useful reference architecture for remotely managing PCs, servers, networking equipment, and other always-connected relay-controlled devices.
❓ FAQ
Q1. What is CRANTROL?
CRANTROL is an ESP32-S3 and W5500-based remote device-control platform that combines relay control, a Flutter mobile application, and Firebase real-time synchronization.
Q2. Why use the W5500 when the ESP32-S3 already has Wi-Fi?
W5500 Ethernet is used as the primary runtime network interface for stable, continuously connected operation. Wi-Fi is reserved for captive-portal configuration.
Q3. When is Wi-Fi used?
W5500 Ethernet serves as the primary runtime and Firebase communication path. The ESP32-S3 Wi-Fi interface is not used for normal application data traffic; in the current firmware, it operates as a local captive-portal configuration interface.
Q4. How many relays does CRANTROL support?
The current implementation supports 10 independently configurable relay outputs and is designed to allow future expansion.
Q5. Does the Flutter app communicate directly with the ESP32?
No. The application and controller exchange commands and status information through Firebase Realtime Database.
Q6. What devices can CRANTROL control?
Typical examples include PCs, servers, monitors, routers, network switches, modems, lighting systems, and other relay-controlled equipment.

