ESP8266 + WIZnet W5500: A Wired HVAC “Rotation Controller” with Modbus TCP, SNMP(v1), MQTT, and Web
ESP8266에 W5500 유선 이더넷을 붙여서, HVAC(공조) 장비를 Modbus TCP / SNMP / MQTT / Web로 제어·모니터링하는 컨트롤러
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
🇺🇸 (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.

