13. MQTT & Nod red - sunbang123/Smart_device GitHub Wiki
- Node-RED ์ค์น:
- Node-RED๋ Node.js ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์. node-red๋ฅผ ์ค์นํจ.
- MQTT ๋ ธ๋ ์ถ๊ฐ:
- Node-RED์ ํ๋ก์ฐ ์๋ํฐ์์ MQTT ๋ ธ๋๋ฅผ ์ถ๊ฐ. MQTT ๋ ธ๋๋ MQTT ๋ธ๋ก์ปค์ ์ฐ๊ฒฐํ๊ณ MQTT ๋ฉ์์ง๋ฅผ ์ ์ก ๋ฐ ์์ ํ ์ ์๋ ๋ ธ๋. Node-RED ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ํตํด MQTT ๋ ธ๋๋ฅผ ์ค์นํ ์ ์์.
- MQTT ์ค์ :
- MQTT ๋ ธ๋๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด MQTT ๋ธ๋ก์ปค์ ํธ์คํธ, ํฌํธ, ์ฃผ์ ๋ฑ์ ์ค์ . ์ด๋ฅผ ํตํด Node-RED์์ MQTT ๋ธ๋ก์ปค์ ์ฐ๊ฒฐํ๊ณ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์.
- MQTT ๋ฉ์์ง ์ฒ๋ฆฌ:
- MQTT ๋ ธ๋๋ฅผ ํตํด ์์ ํ MQTT ๋ฉ์์ง๋ฅผ ์ํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ ์ ์์. ์๋ฅผ ๋ค์ด, ๋ฉ์์ง๋ฅผ ํํฐ๋งํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์ํ๋ ๋์์๊ฒ ์ ์กํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์์. Node-RED์ ๋ค๋ฅธ ๋ ธ๋์ ํจ๊ป ์กฐํฉํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์ ์ด ํ๋ฆ์ ๊ตฌ์ฑํ ์ ์์.
- http://www.mqtt-dashboard.com/ ์ ์, ๋ก๊ทธ์ธ
- https://www.hivemq.com/demos/websocket-client/ SETTING

- EspMQTTClient ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น

-
์ฝ๋ ์์ฑ, ESP32 ์ฐ๊ฒฐ -> ์ ๋ก๋
-
Serial Monitor์ MQTT์์ ์จ์ต๋ ํ์ธ

- Node-Red ์ค์


- ๋ ธ๋๋ฅผ group์ผ๋ก ๋ฌถ์.


- MQTT, MQTT๋ธ๋ก์ปค ๋ ธ๋ ์ค์
- Node-Red ๋์๋ณด๋ ํ์ธ

#include <WiFi.h> //WIFI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
#include <EspMQTTClient.h> // PubSubclient ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ ESP32 MQTT Client ๋ผ์ด๋ธ๋ฌ๋ฆฌ
#include <DHT.h> //DHT11 ๋ผ์ด๋ธ๋ฌ๋ฆฌ
#define DHTTYPE DHT11 // DHT ์ผ์ ํ์
์ ์
DHT dht(13, DHTTYPE); //DHT ์ค์ dht( ํ, DHT ์ข
๋ฅ)
float temp1,humid1;
char temp[10]; // temp, humid ๋ฅผ ๋ฌธ์์ด๋ก ํฉ์ณ์ ์ ์กํ๊ธฐ ์ํ ๋ณ์ ์ ์
char humid[10];
EspMQTTClient client(
"[wifi ์ด๋ฆ]", // SSID
"[wifi ๋น๋ฐ๋ฒํธ]", // PW
//๋ฐ๊พธ์ง ๋ง๊ฒ!!
"broker.mqtt-dashboard.com", // MQTT Broker ์๋ฒ IP
"MQTT_TestClient", // ํด๋ผ์ด์ธํธ ์ด๋ฆ
1883 // MQTT ํฌํธ๋ฒํธ
);
//WiFiClient client;
void setup()
{
Serial.begin(115200); //Initialize serial
dht.begin();
client.enableDebuggingMessages();
client.enableLastWillMessage("TestClient/lastwill", "I am going offline");
}
void onConnectionEstablished(){
}
void loop() {
client.loop();
temp1 = dht.readTemperature(); // ์จ๋๋ฅผ ์ฝ์ด์ tem์ ์ ์ฅ
humid1 = dht.readHumidity(); // ์ต๋๋ฅผ ์ฝ์ด์ hum์ ์ ์ฅ
sprintf(temp, "%.2f" ,dht.readTemperature());
sprintf(humid, "%.2f" ,dht.readHumidity());
Serial.print(F("Humidity : "));
Serial.println(humid1);
Serial.print(F("Temperature : "));
Serial.println(temp1);
client.publish("mytopic/temp", temp);
client.publish("mytopic/humid", humid);
delay(5000);
}
- ์ด ์์ ๋ฅผ ํตํด MQTT์ ESP32, DHT11 ์ผ์, Node-RED์ ์กฐํฉ์ ํตํด ๊ฐ๋จํ IoT ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์.
- MQTT๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฝ๊ฒ ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ๋ค์ํ ํด๋ผ์ด์ธํธ์ ํต์ ํ ์ ์์.
- MQTT ๋ธ๋ก์ปค๋ MQTT ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ๊ฒ์ํ๋ ์ค์ ํ๋ธ ์ญํ ์ ํจ.
- ์ด ์์ ์์๋ mqtt-dashboard.com์ด๋ผ๋ ๊ณต๊ฐ MQTT ๋ธ๋ก์ปค๋ฅผ ์ฌ์ฉ.
- MQTT ๋ธ๋ก์ปค์ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ๊ตฌ๋ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์.
- Node-RED๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฐ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ถ๋ ฅํ๋ ์์ ์ ์ฝ๊ฒ ์ํํ ์ ์์.
- ์๊ฐ์ ํ๋ก์ฐ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ ๋๊ตฌ์ธ Node-RED๋ฅผ ์ฌ์ฉํ์ฌ MQTT ๋ฉ์์ง๋ฅผ ๊ตฌ๋ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ๋์๋ณด๋๋ฅผ ๋ง๋ค ์ ์์์ ๋ฐฐ์.