---
title: "ESP8266 + WIZnet W5500: A Wired HVAC “Rotation Controller” with Modbus TCP, SNMP(v1), MQTT, and Web"
url: "https://maker.wiznet.io/sophia/projects/esp8266-wiznet-w5500-a-wired-hvac-rotation-controller-with-modbus-tcp-snmp-v1--mqtt-and-web/"
markdown_url: "https://maker.wiznet.io/sophia/projects/esp8266-wiznet-w5500-a-wired-hvac-rotation-controller-with-modbus-tcp-snmp-v1--mqtt-and-web/md"
type: "UCC: User Created Content"
author: "Ricardo Augusto Furch"
author_url: "https://github.com/rfurch/AA_rotate_esp8266"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Ricardo Augusto Furch"
original_url: "https://github.com/rfurch/AA_rotate_esp8266"
published: "2026-02-20"
language: "ko"
hardware: ["WIZnet W5500"]
likes: 0
views: 413
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# ESP8266 + WIZnet W5500: A Wired HVAC “Rotation Controller” with Modbus TCP, SNMP(v1), MQTT, and Web

> ESP8266에 W5500 유선 이더넷을 붙여서, HVAC(공조) 장비를 Modbus TCP / SNMP / MQTT / Web로 제어·모니터링하는 컨트롤러

Original author: Ricardo Augusto Furch (source: https://github.com/rfurch/AA_rotate_esp8266)

## 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

## AA / HVAC Rotation Controller (ESP8266 + WIZnet W5500)

## **Modbus TCP + SNMP(v1) + MQTT + (Web-ready) 시설 제어 컨트롤러**

## Components

### Hardware components

- ESP8266 (NodeMCU v2)

- WIZnet **W5500 Ethernet** 모듈 (SPI)

- (옵션) 1-Wire 온도 센서(예: DS18B20) **— OneWire/DallasTemperature 라이브러리 사용 흔적**

- (현장 구성에 따라) 릴레이/드라이컨택 인터페이스(AA1/AA2 제어용)

### Software apps and online services

- PlatformIO (Arduino framework)

- Modbus TCP 테스트 도구(예: **modpoll**)

- SNMP 테스트 도구(**snmpwalk / snmpget / snmpset** 계열)

- MQTT Broker/Client (예: Mosquitto, MQTT Explorer 등)

---

## Overview

서버룸/기계실처럼 **24/7 안정성**이 중요한 환경에서는 Wi-Fi보다 **유선 Ethernet**이 관리와 신뢰성 측면에서 유리한 경우가 많습니다. 이 프로젝트는 **ESP8266 + WIZnet W5500** 조합으로 네트워크를 유선화하고, 시설 제어에서 자주 쓰이는 **Modbus TCP**, **SNMP(v1)**, 그리고 **MQTT**까지 함께 제공하는 “회전(rotate) 제어기” 성격의 예제입니다.

---

## FAQ

**Q1. 왜 ESP8266의 Wi-Fi가 아니라 W5500 유선 Ethernet을 쓰나요?**
A. 시설/산업 환경은 RF 간섭, 음영, 재연결 지연이 발생하기 쉽습니다. 유선 Ethernet은 지연과 연결 품질이 예측 가능하고, **Modbus/SNMP 같은 기존 운영툴과도 잘 맞습니다.Q2. 어떤 프로토콜을 지원하나요?**
A. 리포지토리 설정과 테스트 커맨드 기준으로 아래를 확인할 수 있습니다.

- **Modbus TCP**: 코일/레지스터 읽기·쓰기 테스트 커맨드 제공

- **SNMP v1**: walk/get/set 커맨드 제공 + 사설 OID 트리 사용(예: `1.3.6.1.4.1.99999...`)

- **MQTT**: PubSubClient 사용 흔적

- (설명에 WEB 언급) Web UI는 “구현 의도”가 있으나, 본 글은 위 파일에서 확인되는 범위 중심으로 작성했습니다.

**Q3. 어떻게 테스트하면 가장 빠르죠?**
A. `pio_comandos.txt`에 이미 테스트 커맨드가 정리돼 있어요.

- PC에서 modpoll로 Modbus TCP 읽기/쓰기

- snmpwalk/get/set로 SNMP 값 조회/설정
  이 두 가지로 네트워크/제어 경로를 빠르게 검증할 수 있습니다.

---

## Project Description

### What it’s built for

에어컨(또는 HVAC) 2대를 운영할 때 한 대만 계속 돌리면 편중이 생기므로,

- 운전 시간을 분산(회전)해 **수명/정비 균등화**,

- 필요 시 특정 장비를 **강제 운전(Force)** 하거나,

- 모니터링 시스템에서 상태를 읽어 **장애 대응**
  같은 운영 시나리오가 중요해집니다.

이 프로젝트는 그런 운영을 염두에 두고, “현장 친화” 프로토콜(특히 Modbus/SNMP)을 함께 제공하는 구성이 특징입니다.

### Robustness / Stability Highlight

`scapy_get.py`는 Scapy로 SNMP GET을 보내면서,

- 잘린 payload, 길이 필드 변조, fragmentation, 잘못된 community, 랜덤 UDP, 대량 전송(스트레스)
  같은 **비정상 트래픽 내구성 테스트** 성격의 코드가 포함돼 있어요.
  시설/산업 환경에서 “운영 중 이상 패킷에도 죽지 않는가?”를 의식한 흔적으로 볼 수 있습니다.

## HVAC Rotation Controller

여러 HVAC 장비(또는 팬/펌프 등)를 **번갈아(로테이션)** 돌려서

- 특정 장비만 과하게 쓰지 않게 하고

- 상태를 계속 모니터링하며

- 필요하면 원격에서 제어도 가능하게 하는 컨트롤러

### 연결 방식

- **Modbus TCP**: 산업/빌딩 설비에서 가장 흔한 제어/데이터 통신

- **SNMP(v1)**: 네트워크 관리 시스템(NMS)에서 상태 모니터링할 때 사용

- **MQTT**: 서버/클라우드로 상태를 발행하거나 원격 명령 받을 때 사용

- **Web**: 사람이 브라우저로 접속해서 설정/상태 확인

---

## How to Validate (Quick Tests)

### 1) Modbus TCP (modpoll)

- 코일/홀딩레지스터를 읽고 쓰는 예시 커맨드가 포함되어 있어,
  PLC/SCADA 연동 전에 PC만으로도 빠르게 동작 확인이 가능합니다.

### 2) SNMP v1 (walk/get/set)

- walk/get/set 예시 커맨드가 있고,

- 사설 OID 트리를 사용해 상태/제어 신호를 매핑하는 구조로 보입니다.

> 📸 Maker-site 팁: 여기에 **터미널 캡처(결과 화면)**만 넣어도 글 완성도가 확 올라갑니다.

현장형 장비는 여러 프로토콜을 동시에 돌려야 해서 “네트워크 바닥(소켓/통신 안정성)”이 중요합니다.

---

## Source

GitHub: `rfurch/AA_rotate_esp8266`
[https://github.com/rfurch/AA_rotate_esp8266](https://github.com/rfurch/AA_rotate_esp8266?utm_source=chatgpt.com)

---

## 🇺🇸 (EN) AA / HVAC Rotation Controller (ESP8266 + WIZnet W5500)

## **Modbus TCP + SNMP(v1) + MQTT + (Web-ready) wired facility controller**

## Components

### Hardware components

- ESP8266 (NodeMCU v2)

- WIZnet **W5500 Ethernet** module (SPI)

- (Optional) 1-Wire temperature sensor (e.g., DS18B20) **— OneWire/DallasTemperature deps are present**

- (Depending on installation) relay / dry-contact interface for AA1/AA2 control

### Software apps and online services

- PlatformIO (Arduino framework)

- Modbus TCP testing tool (e.g., **modpoll**)

- SNMP tools (**snmpwalk / snmpget / snmpset** family)

- MQTT broker/client tooling (Mosquitto, MQTT Explorer, Node-RED, etc.)

---

## Overview

In server rooms and industrial environments, networking needs to be **predictable and stable**.
This project uses **ESP8266 + WIZnet W5500** to provide wired Ethernet connectivity and exposes control/monitoring interfaces commonly used in operations:

- **Modbus TCP** (PLC/SCADA integration)

- **SNMP v1** (NMS monitoring + remote set actions)

- **MQTT** (IoT dashboards/automation)

The repository description also mentions web support; this post focuses on what’s verifiable from the repo configuration and test utilities.

---

## FAQ

**Q1. Why W5500 wired Ethernet instead of ESP8266 Wi-Fi?**
A. Wired Ethernet reduces RF-related issues (interference, dead zones, reconnect delays) and fits well with facility/industrial monitoring stacks built around Modbus and SNMP.

**Q2. What protocols are supported?**
A. Based on `platformio.ini` and the provided testing commands:

- **Modbus TCP** (read/write via modpoll examples)

- **SNMP v1** (walk/get/set examples + private enterprise OIDs like `1.3.6.1.4.1.99999...`)

- **MQTT** (PubSubClient dependency)

- Web is mentioned in the repo description, but this post highlights what’s explicitly evidenced in the listed files.

**Q3. What’s the fastest way to validate the system?**
A. The repo includes a command cheat-sheet (`pio_comandos.txt`) so you can validate endpoints immediately:

- Use **modpoll** for Modbus TCP read/write

- Use **snmpwalk/get/set** for SNMP monitoring and control

---

## Project Description

### What it’s built for

When you operate two A/C units, **rotation** helps:

- balance wear and maintenance cycles,

- improve resilience via manual/forced control,

- integrate with monitoring tools to respond quickly to alarms.

This project is structured around that operational idea, using wired Ethernet and classic industrial monitoring/control protocols.

### Robustness highlight (Scapy SNMP stress testing)

The included `scapy_get.py` script generates SNMP traffic and also tries abnormal patterns:

- truncated payloads, corrupted length fields, fragmentation,

- invalid community strings, random UDP payload bursts,

- high packet count stress loops

That’s a practical approach to check whether the SNMP agent stays stable under imperfect network conditions.

---

## How to Validate (Quick Tests)

### 1) Modbus TCP (modpoll)

The repo includes example commands to read/write coils and holding registers—ideal for verifying PLC/SCADA compatibility quickly.

### 2) SNMP v1 (walk/get/set)

Example walk/get/set commands are provided, using a private enterprise OID tree to map application signals.

> 📸 Maker-site tip: add terminal screenshots of these commands to make the post instantly credible.

---

Source: https://maker.wiznet.io/sophia/projects/esp8266-wiznet-w5500-a-wired-hvac-rotation-controller-with-modbus-tcp-snmp-v1--mqtt-and-web/
