---
title: "Architecture of a Smart Home Controller Using SUPLA’s supla-device and W5500 Ethernet"
url: "https://maker.wiznet.io/Aimee0/projects/supla-device/"
markdown_url: "https://maker.wiznet.io/Aimee0/projects/supla-device/md"
type: "UCC: User Created Content"
author: "SUPLA"
author_url: "https://github.com/SUPLA/supla-device"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "SUPLA"
original_url: "https://github.com/SUPLA/supla-device"
published: "2026-07-24"
language: "en"
hardware: ["WIZnet W5500"]
likes: 0
views: 147
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Architecture of a Smart Home Controller Using SUPLA’s supla-device and W5500 Ethernet

> Architecture of a Smart Home Controller Using SUPLA’s supla-device and W5500 Ethernet

Original author: SUPLA (source: https://github.com/SUPLA/supla-device)

## Components

- **WIZnet W5500** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))

WIZnet parts: W5500 ([Datasheet](https://docs.wiznet.io/Product/Chip/Ethernet/W5500/datasheet?utm_source=maker&utm_medium=project&utm_campaign=w5500), [product hub](https://maker.wiznet.io/products/w5500/))

## Article

### Overview

`supla-device`는 switch, sensor, gate, roller shutter, lighting, HVAC 등 자체 SUPLA-compatible device를 개발하기 위한 open-source IoT device SDK다.

> **Supla?**
>
> ![](https://maker.wiznet.io/upload/ckeditor5/186955876%5F1784902994%2Epng)
>
> *https://www.supla.org/en/*
>
> SUPLA는 2016년 폴란드에서 시작된 **오픈소스 스마트홈 플랫폼으로**, 현재 140개 이상의 국가에서 사용되고 있습니다. 공식 발표에 따르면 31만 가구 이상이 이용하고 있으며, 70종 이상의 상용 SUPLA 호환 제품과 159개의 운영 서버를 기반으로 서비스를 제공하고 있습니다. 오픈소스 프로젝트로서는 비교적 큰 규모를 갖춘 플랫폼이며, 특히 폴란드를 비롯한 유럽 지역에서 널리 사용되고 있습니다.
>
> ![](https://maker.wiznet.io/upload/ckeditor5/828381924%5F1785144608%2Epng)

현재 저장소에는 `Arduino Mega + W5500 Ethernet Shield`의 최소 연결 예제인 `Simple_W5500.ino`와, `ESP32-S3 + W5500`에서 sensor channel과 web configuration까지 구성한 `LAN_T-ETH-Lite-ESP32S3.ino`가 포함되어 있다. 두 구조에서 W5500은 MCU와 SPI로 연결되어 SUPLA Server로 이어지는 유선 Ethernet 경로를 담당한다.

이 구조가 해결하는 문제는 고정 설치형 스마트홈 장치를 Wi-Fi에만 의존하지 않고 유선망에 연결하는 것이다. `supla-device`가 network initialization, SUPLA Server 접속, reconnect와 protocol lifecycle을 관리하므로 개발자는 relay, button, sensor, roller shutter와 같은 Channel 및 device logic에 집중할 수 있다.

실제 SUPLA community에서는 이 조합을 `ESP32-S3 + W5500` 기반 DIN-rail controller로 확장한 사례도 확인된다. 이 제품은 **집 안의 여러 개의 전동 블라인드(롤러 셔터)와 조명을 하나의 컨트롤러로 제어하는 장치**입니다. 작성자가 공개한 사양은 32개의 10 A relay output, 40개의 GND/VCC input, 최대 16개 roller shutter 또는 32개 lighting channel, Wi-Fi/LAN 설정, 24 VDC 전원, 12-DIN enclosure, cloud 연결이 끊긴 상태의 local control을 포함한다. 다만 이 제품의 전체 firmware와 schematic은 공개 자료에서 확인되지 않으므로, 본 글에서는 검증 가능한 `supla-device` code example을 중심으로 설명한다.

![](https://maker.wiznet.io/upload/ckeditor5/828381924%5F1785145276%2Epng)

<https://www.olx.pl/d/oferta/sterownik-16-rolet-32-oswietlenie-supla-CID5216-IDWjFga.html?srsltid=AfmBOoo2kH4xtBz7fjT4LhnUTl8dl9KGwhZ7TYU0QJR2PiawfGkjcST_>

<https://forum.supla.org/viewtopic.php?t=15451>

### Technical Architecture

| Item | Confirmed Details |
| --- | --- |
| WIZnet Chip/Module | W5500 / W5500-based Ethernet Shield |
| MCU/Board | Arduino Mega, T-ETH-Lite-ESP32S3 |
| Interface | SPI |
| Arduino Mega Pin Map | SS 10, MISO 50, MOSI 51, SCK 52 |
| ESP32-S3 Pin Map | CS 9, IRQ 13, RST 14, `SPI3_HOST`, SCK 10, MISO 11, MOSI 12 |
| Protocol | Persistent TCP connection to SUPLA Server; TCP 2016 with TLS is the default secure path, TCP 2015 is the legacy unencrypted path |
| Main Code Points | `Supla::EthernetShield`, `Supla::ESPETHSPI`, `SuplaDevice.begin()`, `SuplaDevice.iterate()` |

Arduino Mega의 SPI pin과 Ethernet Shield의 SS pin 구성은 Arduino Ethernet library의 공식 설명과도 일치한다.

**Arduino Mega + W5500 최소 경로**

![](https://maker.wiznet.io/upload/ckeditor5/400841541%5F1784908221%2Epng)

*https://github.com/SUPLA/supla-device/blob/main/examples/arduino_mega/Simple_W5500/Simple_W5500.ino*

`examples/arduino_mega/Simple_W5500/Simple_W5500.ino`는 W5500 Ethernet 연결에 필요한 최소 구조를 보여준다.

```plaintext
#include <SuplaDevice.h>
#include <supla/network/ethernet_shield.h>

uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
Supla::EthernetShield ethernet(mac);
```

`setup()`에서는 사용자가 발급한 `GUID`, `AUTHKEY`, SUPLA server address와 account email을 전달한다.

```plaintext
SuplaDevice.begin(
    GUID,
    "svr1.supla.org",
    "email@address",
    AUTHKEY);
```

실행 중에는 `SuplaDevice.iterate()`가 network connection과 SUPLA protocol 처리를 계속 수행한다.

```plaintext
Button / Sensor / Channel
→ Arduino Mega
→ Supla::EthernetShield / EthernetClient
→ W5500
→ Ethernet
→ SUPLA Server
→ SUPLA application and user interface
```

`ethernet_shield.h`는 DHCP를 우선 사용하고, 연결 후 local IP, subnet mask, gateway, DNS 정보를 기록한다. 또한 `Ethernet.maintain()`을 호출해 DHCP lease를 관리한다.

**ESP32-S3 + W5500 확장 경로**

![](https://maker.wiznet.io/upload/ckeditor5/400841541%5F1784908259%2Epng)

*https://github.com/SUPLA/supla-device/blob/main/examples/esp/LAN_T-ETH-Lite-ESP32S3/LAN_T-ETH-Lite-ESP32S3.ino*

`examples/esp/LAN_T-ETH-Lite-ESP32S3/LAN_T-ETH-Lite-ESP32S3.ino`는 더 제품형에 가까운 구성이다.

```plaintext
Supla::ESPETHSPI Eth(
    ETH_PHY_W5500,
    1,
    9,
    13,
    14,
    SPI3_HOST,
    10,
    11,
    12);
```

이 예제에는 다음 기능이 함께 포함된다.

- GPIO 34의 rising-edge impulse counter와 10 ms debounce

- GPIO 35의 falling-edge impulse counter, pull-up과 50 ms debounce

- `Supla::EspWebServer` 기반 local configuration

- `Supla::LittleFsConfig` 기반 설정 저장

- EEPROM 또는 optional SPI FRAM을 이용한 state storage

- GPIO 2 status LED

- `StartInCfgMode` 초기 설정 모드

```plaintext
Impulse Input
→ ESP32-S3 Channel Logic
→ Supla::ESPETHSPI
→ W5500
→ Ethernet
→ SUPLA Server
→ SUPLA user interface
```

SUPLA의 direct device communication은 장치가 SUPLA Server에 생성하는 장시간 TCP connection을 기반으로 한다. Device application에서 SUPLA Cloud를 직접 호출하는 구조가 아니라, SUPLA Server가 실시간 device communication의 중심에 위치한다.

### WIZnet Role in This Project

W5500은 단순한 external PHY가 아니라 Ethernet MAC/PHY와 Hardwired TCP/IP stack을 통합한 Ethernet controller다. 외부 MCU와는 SPI로 연결되며 TCP, UDP, IPv4 등의 protocol, 8개의 independent hardware socket과 32 KB Tx/Rx buffer를 제공한다.

`supla-device`에서 확인되는 W5500의 역할은 다음과 같다.

1. **MCU와 유선망 사이의 Ethernet interface 제공**
   Arduino Mega 또는 ESP32-S3에서 생성된 device state와 command traffic이 W5500을 통해 Ethernet network로 이동한다.

2. **SUPLA Server transport path 구성**
   SUPLA device는 SUPLA Server에 persistent TCP connection을 생성한다. W5500은 이 TCP data path의 Ethernet controller로 사용된다.

3. **고정 설치형 controller의 Wi-Fi 의존성 감소**
   DIN-rail control panel, relay cabinet, gate controller와 같이 Ethernet 배선을 확보할 수 있는 환경에서 유선 연결 경로를 제공한다.

4. **Hybrid controller로 확장 가능한 구조**
   SUPLA forum의 16/32 controller는 ESP32-S3의 Wi-Fi와 W5500 LAN을 configuration mode에서 선택할 수 있는 구조로 소개된다. 이는 local radio interface와 wired backbone을 동일한 application logic에서 관리하는 사례다.

W5500의 Hardwired TCP/IP 기능은 공식 사양으로 확인되지만, 이 프로젝트 자료에는 CPU 사용률, latency 또는 throughput 비교 결과가 없다. 따라서 확인 가능한 핵심 가치는 **W5500을 통한 Ethernet transport와 socket 기반 network path**이며, 정량적인 성능 향상은 별도 시험이 필요하다.

또한 TLS는 W5500 자체가 아니라 host MCU와 software stack에서 처리해야 한다. 현재 Arduino Mega용 `EthernetShield` 구현은 TLS를 비활성화하므로 `Simple_W5500.ino`는 기본 연결 구조를 이해하기 위한 prototyping reference에 가깝다. Secure production device에는 TCP 2016과 TLS를 지원할 수 있는 MCU와 client stack을 선택해야 한다.

### Developer Takeaways

- **가장 작은 시작점은 **`**Simple_W5500.ino**`**다.**
  Arduino Mega, W5500 Ethernet Shield, MAC address, `GUID`, `AUTHKEY`, server 정보만으로 SUPLA network lifecycle을 확인할 수 있다. 이후 relay, button, sensor Channel을 추가하는 방식으로 확장할 수 있다.

- **Network interface는 application보다 먼저 설계해야 한다.**
  Issue #51은 ESP32에 W5500을 연결했을 때 Ethernet 경로에 필요한 client와 Wi-Fi client가 다를 수 있다는 문제를 기록한다. 현재 codebase의 `Network::createClient()` abstraction은 SUPLA protocol과 실제 transport client 생성을 분리하는 설계 포인트다.

- **Arduino Mega와 ESP32-S3의 역할을 구분하는 것이 좋다.**
  Arduino Mega 예제는 간단한 wired proof-of-concept에 적합하다. Web configuration, secure connection, persistent state, 다수의 sensor 및 control Channel이 필요한 경우에는 `ESP32-S3 + W5500` 구조가 더 확장하기 쉽다.

- **Local control과 remote control을 분리하면 controller의 실용성이 높아진다.**
  실제 16/32 controller 사례처럼 physical input에서 relay output으로 이어지는 local path는 Internet 연결 없이도 동작하게 구성하고, 상태 동기화와 remote command만 W5500 또는 Wi-Fi를 통해 SUPLA Server로 전달할 수 있다. 공개된 forum 자료는 offline operation을 지원한다고 설명하지만, 해당 제품의 구체적인 failover algorithm은 확인되지 않았다.

### Related Maker Content and Application Value

| Maker Site Content | Similarity | Difference | Expansion Value |
| --- | --- | --- | --- |
| [DOMIX — Open Source Modular Home Automation System](https://maker.wiznet.io/Aimee0/projects/domix--open-source-modular-home-automation-system/) | ESP32-S3, W5500, DIN-rail, 중앙형 smart home controller | DOMIX는 MQTT, ESPHome, Zigbee, RS485, I²C module을 결합한 독립 플랫폼이고, 본 사례는 SUPLA device protocol과 Channel framework가 중심 | W5500 기반 중앙 제어반을 SUPLA, ESPHome, MQTT 구조와 비교하는 architecture reference로 확장 가능. |
| [Arduino SPS 24V I/O Smart Home PCB strommessung IOBroker Modbus](https://maker.wiznet.io/rena/resellers/arduino-sps-24v-i-o-smart-home-pcb-strommessung-iobroker-modbus/) | Arduino Mega, W5500, 24 V I/O, DIN-rail smart home controller | 기존 글은 HTTP, Modbus와 ioBroker 중심이며, 본 사례는 SUPLA Server의 persistent TCP와 Channel model 중심 | 동일한 Arduino Mega/W5500 hardware에서 application protocol이 제품 구조를 어떻게 바꾸는지 비교 가능. |
| [ESP32 + W5500 기반 ESP-NOW ↔ Ethernet 스마트홈 게이트웨이](https://maker.wiznet.io/sophia/projects/esp32-w5500--esp-now--ethernet--/) | ESP32와 W5500을 이용한 smart home Ethernet path | 기존 글은 ESP-NOW sensor network를 MQTT/Home Assistant로 변환하는 gateway이며, 본 사례는 SUPLA-compatible device가 직접 server에 접속 | 향후 wireless sensor 또는 room controller를 SUPLA Ethernet gateway에 통합하는 Hybrid architecture로 확장 가능. |

이 프로젝트는 주거용 smart home 외에도 gate 및 access controller, DIN-rail lighting panel, roller shutter controller, energy 또는 pulse counter, 소형 building automation과 remote I/O controller에 적용할 수 있다.

특히 SUPLA의 Channel abstraction은 hardware input/output을 사용자에게 노출되는 device function과 연결한다. 여기에 W5500 Ethernet path를 결합하면 단순한 TCP client 예제를 넘어, 실제 switch·sensor·relay 기능을 server와 동기화하는 reusable device architecture를 구성할 수 있다.

### Verified Scope and Sources

2026년 7월 24일 기준으로 확인된 범위는 다음과 같다.

- `supla-device`는 GPL-2.0 open-source SDK이며 바로 flash하는 완성 firmware가 아니다.

- Arduino Mega와 W5500을 연결하는 `Simple_W5500.ino`가 현재 `main`에 포함되어 있다.

- 이 파일은 2026년 7월 13일 PR #173 관련 commit에서 추가됐다.

- ESP32-S3와 W5500을 사용하는 `LAN_T-ETH-Lite-ESP32S3.ino`는 Release `v24.8` 이후 계열에 포함되어 있다.

- 최신 published Release는 2026년 4월 2일의 `v26.4`다. 따라서 `Simple_W5500.ino`를 사용하려면 현재 `main` 또는 해당 파일이 포함되는 후속 Release를 확인해야 한다.

- GitHub 저장소는 확인 시점에 Star 55, Fork 29, 2,403 commits를 표시했다. 이 수치는 이후 변동될 수 있다.

- SUPLA forum의 16/32 controller는 실제 적용 사례지만 전체 source code, schematic, 인증 및 성능 시험 결과는 현재 공개 자료에서 확인되지 않는다.

- OLX 검색 결과에서도 동일 명칭의 16/32 controller 판매 흔적이 확인되지만, 판매 페이지는 구현 근거보다 제품화 활동을 확인하는 보조 자료로만 사용했다.

| Source | Link | Checked Date | Notes |
| --- | --- | --- | --- |
| SUPLA `supla-device` GitHub | [Repository](https://github.com/SUPLA/supla-device) | 2026-07-24 | SDK 범위, code structure, license, activity 확인 |
| Arduino Mega W5500 example | [Simple_W5500.ino](https://github.com/SUPLA/supla-device/blob/main/examples/arduino_mega/Simple_W5500/Simple_W5500.ino) | 2026-07-24 | SPI pin map, MAC, GUID/AUTHKEY, server connection code |
| ESP32-S3 W5500 example | [LAN_T-ETH-Lite-ESP32S3.ino](https://github.com/SUPLA/supla-device/blob/main/examples/esp/LAN_T-ETH-Lite-ESP32S3/LAN_T-ETH-Lite-ESP32S3.ino) | 2026-07-24 | W5500 SPI constructor, impulse counters, web configuration, EEPROM |
| Network client issue | [Issue #51](https://github.com/SUPLA/supla-device/issues/51) | 2026-07-24 | ESP32/W5500 client abstraction 문제 |
| W5500 example change | [Pull Request #173](https://github.com/SUPLA/supla-device/pull/173) | 2026-07-24 | `Simple_W5500.ino` 추가. Local Git commit `d08ddc3b`로 검증 |
| GitHub Releases | [Releases](https://github.com/SUPLA/supla-device/releases) | 2026-07-24 | 최신 published Release `v26.4` |
| SUPLA official site | [SUPLA](https://www.supla.org/en/) | 2026-07-24 | Open smart home platform과 LAN/Wi-Fi 적용 범위 |
| W5500 official documentation | [W5500 Overview](https://docs.wiznet.io/Product/Chip/Ethernet/W5500) | 2026-07-24 | Hardwired TCP/IP, SPI, 8 sockets, 32 KB buffer |
| SUPLA controller forum | [Sterownik Rolet / Oświetlenia 16/32](https://forum.supla.org/viewtopic.php?t=15451) | 2026-07-24 | ESP32-S3, W5500, Wi-Fi/LAN, 32 relay, 40 input, offline operation |
| Commercial listing indicator | [OLX search result](https://www.olx.pl/budowa-i-remont/elektryka/q-sterownik-rolet-supla/) | 2026-07-24 | 제품 판매 흔적 확인. 구현 세부 근거로는 사용하지 않음 |

`supla-device`의 W5500 사례는 하나의 완제품보다 더 넓은 개발 레퍼런스를 제공한다. Arduino Mega 예제는 SUPLA와 W5500을 연결하는 가장 작은 출발점을 보여주고, ESP32-S3 예제는 web configuration과 persistent storage를 포함한 확장 구조를 제시한다. 여기에 실제 DIN-rail roller shutter·lighting controller 사례를 함께 보면, W5500이 SUPLA-compatible smart home device의 유선 network path로 어떻게 사용될 수 있는지 구체적으로 이해할 수 있다.

### FAQ

**Q. 이 프로젝트는 어떤 문제를 해결하나요?A. **`supla-device`는 switch, sensor, relay, roller shutter와 같은 MCU 기반 장치를 SUPLA Server에 연결하는 공통 개발 구조를 제공합니다. W5500을 적용하면 Arduino Mega 또는 ESP32-S3 기반 장치에 Wi-Fi와 구분되는 유선 Ethernet 연결 경로를 구성할 수 있습니다. ([Source](https://github.com/SUPLA/supla-device))

**Q. W5500은 이 프로젝트에서 어떤 역할을 하나요?A. **W5500은 Arduino Mega 또는 ESP32-S3와 SPI로 연결되어 SUPLA Server로 이어지는 Ethernet network path를 제공합니다. W5500 자체는 Ethernet MAC/PHY, Hardwired TCP/IP stack 및 hardware socket을 통합한 Ethernet controller입니다. ([Source](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))

**Q. 현재 공개 자료에서 확인되지 않은 내용은 무엇인가요?A. **SUPLA forum에 소개된 16/32-channel controller의 전체 source code, schematic, 세부 pin map, 인증 및 성능 측정 결과는 현재 공개 자료 기준으로 확인되지 않습니다. 따라서 공개된 `supla-device` example과 해당 상용 controller가 동일한 hardware 또는 firmware를 사용한다고 단정할 수 없습니다. ([Source](https://forum.supla.org/viewtopic.php?t=15451))

---

Source: https://maker.wiznet.io/Aimee0/projects/supla-device/
