Skip to content

pubsubclient

pubsubclient

Aimee0

Published February 19, 2026

Original author: knollearyOriginal source (new tab)

pubsubclient

Components

Hardware components

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

Comments

Comments