Wiznet makers

Aimee0

Published February 19, 2026 ©

79 UCC

23 WCC

15 VAR

0 Contests

0 Followers

0 Following

Original Link

pubsubclient

pubsubclient

COMPONENTS Hardware components

Arduino - Arduino Ethernet Shield

x 1


PROJECT DESCRIPTION

📌 Overview

PubSubClient는 Arduino 및 Arduino-호환 보드에서 MQTT (메시지 발행/구독) 통신을 구현할 수 있는 클라이언트 라이브러리입니다.
즉, Arduino 장치가 MQTT 브로커와 연결해 메시지를 보내고 받을 수 있게 해주는 코드 모음이에요.

📌 Features

  • 간단한 MQTT Publish/Subscribe API 제공: 임베디드에서 필요한 최소 기능 중심으로 구성(“simple publish/subscribe messaging”).
  • 광범위한 하드웨어 호환성(Arduino Client API 기반): Ethernet/WiFi 등 “Arduino Ethernet Client API”를 구현한 다양한 보드/쉴드에서 동작하도록 설계.
  • MQTT 3.1.1 기본 지원 + 구버전(3.1) 선택 가능: 현행 MQTT 호환을 기본으로 유지하면서 레거시 선택도 가능.
  • 설정 가능한 버퍼/Keepalive: 기본 최대 패킷(헤더 포함) 256B, keepalive 15s 등 제약을 명시하고 설정 변경 가능.
  • 명확한 제약(한계) 공개: Publish는 QoS 0만, Subscribe는 QoS 0/1 등 제약을 문서로 명확히 제공(실무에서 “가능/불가” 판단이 빠름).

📌 System Architecture

+-------------------+
|   Sensor / MCU    |
| (Arduino/ESP/RP)  |
+---------+---------+
          |
          | TCP/IP (Ethernet / WiFi)
          v
+-------------------+
|  MQTT Broker      |
| (Mosquitto etc.)  |
+---------+---------+
          |
          |
          v
+-------------------+
|  Application      |
|  (PC / Server /   |
|   Cloud Service)  |
+-------------------+

Edge Device

  • MCU (Arduino, ESP32 등)
  • PubSubClient 기반 MQTT 클라이언트
  • 센서 데이터 Publish
  • 제어 명령 Subscribe

MQTT Broker

  • 메시지 중계 서버 (예: Mosquitto)
  • Topic 기반 메시지 라우팅

Application / Server

  • 데이터 수집 및 저장
  • 모니터링 및 제어 명령 전송

📌 Role and Application of the WIZnet's Chip

사용된 WIZnet 칩 : W5100 (Arduino Ethernet Shield)

네트워크에서의 역할 (TCP/UDP/HTTP/MQTT 등)

  • W5100은 하드웨어 TCP/IP 스택을 제공하는 이더넷 컨트롤러로, MCU는 SPI로 칩을 제어해 TCP/UDP 소켓 통신을 사용합니다.
  • PubSubClient는 이 TCP 연결 위에서 MQTT 프로토콜을 처리합니다(즉, “WIZnet 칩=소켓/TCP/IP”, “PubSubClient=MQTT 레벨”).

📌 Market & Application Value

(by ChatGPT)

적용 산업/시장

  • 공장/빌딩/설비 모니터링(유선 이더넷 기반 센서 노드), 원격 제어, 에너지/환경 데이터 수집 등 경량 메시징 + 중앙 브로커 구조가 유리한 영역
  • Wi-Fi 대비 유선이 선호되는 현장(노이즈/보안 정책/설치 환경)에서 특히 유용

제품화/서비스 확장 가능성

  • MQTT는 브로커를 중심으로 확장이 쉬워서, 초기에는 소수 노드로 시작해도 토픽 설계만 유지하면 규모 확장이 비교적 단순
  • PubSubClient는 제약(QoS, 버퍼 크기 등)이 명확해 엔트리/프로토타입→양산 검토 단계에서 요구사항 매칭이 빠름

📌 External Indicators

GitHub 지표

  • Stars: 4k, Forks: 1.5k, Issues: 499, PR: 67, Commits: 206, Contributors: 34

Arduino 생태계 내 등재

  • Arduino Libraries 인덱스에 등재되어 있으며, MQTT 3.1.1 지원/다양한 하드웨어 호환을 명시 (Link)
  • Arduino 공식 문서에서도 PubSubClient 라이브러리 페이지가 존재(라이브러리 정보 제공) (Link)

📌 Summary

PubSubClient는 Arduino 환경에서 MQTT 클라이언트 기능을 간단히 제공하는 대표 라이브러리이며, GitHub/Arduino 생태계 지표에서 광범위한 채택이 확인됩니다.

WIZnet W5100/W5500 기반 이더넷 쉴드는 하드웨어 TCP/IP 소켓을 제공해, PubSubClient가 MQTT에 집중할 수 있는 구조를 만듭니다.

📌FAQ

Q1. PubSubClient 라이브러리는 무엇인가요?

A: PubSubClient는 Arduino 및 임베디드 장치에서 MQTT 프로토콜을 사용하기 위한 경량 MQTT 클라이언트 라이브러리입니다.
특히 Arduino Ethernet Shield(W5100), WiFi 모듈 등 다양한 네트워크 인터페이스와 함께 사용할 수 있으며, MQTT 브로커와의 Publish/Subscribe 통신을 구현하는 데 사용됩니다.

Q2. W5100 기반 Arduino에서 MQTT를 사용하는 기본 구조는 무엇인가요?

A: 기본 구조는 다음과 같습니다:

  1. W5100을 통한 Ethernet 연결 설정
  2. MQTT 브로커 주소 및 포트 설정
  3. MQTT 클라이언트 생성
  4. 브로커 연결(connect)
  5. 메시지 발행(publish) 또는 구독(subscribe)
  6. loop() 함수에서 지속적인 연결 유지

W5100은 TCP 세션을 처리하고, PubSubClient는 MQTT 프로토콜 계층을 처리합니다.

Q3. PubSubClient와 W5100 사용 시 최대 메시지 크기는 얼마인가요?

A: 기본 설정에서 MQTT 메시지 최대 크기는 256바이트입니다. 이 값은 MQTT_MAX_PACKET_SIZE 매크로를 수정하여 변경할 수 있습니다. 단, W5100은 내부 버퍼가 제한적이므로(총 16KB), 메시지 크기를 증가시킬 경우 메모리 사용량을 고려해야 합니다.

Q4. W5100에서 MQTT 연결이 자주 끊어지는 이유는 무엇인가요?

A: 주요 원인은 다음과 같습니다:

  • keepalive 설정 문제
  • loop() 함수 미호출
  • 네트워크 지연 또는 브로커 응답 지연
  • W5100 소켓 리소스 부족
  • 전원 불안정

해결 방법:

  • client.loop()를 주기적으로 호출
  • keepalive 시간 조정
  • 안정적인 전원 공급
  • 재연결 로직 구현

 

 

Documents
  • pubsubclient

  • API documents

Comments Write