pubsubclient
pubsubclient
0
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: ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- W5100์ ํตํ Ethernet ์ฐ๊ฒฐ ์ค์
- MQTT ๋ธ๋ก์ปค ์ฃผ์ ๋ฐ ํฌํธ ์ค์
- MQTT ํด๋ผ์ด์ธํธ ์์ฑ
- ๋ธ๋ก์ปค ์ฐ๊ฒฐ(connect)
- ๋ฉ์์ง ๋ฐํ(publish) ๋๋ ๊ตฌ๋ (subscribe)
- 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 ์๊ฐ ์กฐ์
- ์์ ์ ์ธ ์ ์ ๊ณต๊ธ
- ์ฌ์ฐ๊ฒฐ ๋ก์ง ๊ตฌํ
