스마트 디바이스 실습 13주차

MQTT & Nod red

한세대학교 컴퓨터공학과 22학번 김선영


MQTT to Node-red

  1. Node-RED 설치:
  2. 코드에서 주어진 값인 "MQTT_TestClient"와 1883은 MQTT 브로커의 설정과 일치하는 경우가 많기 때문에 기본값으로 사용됨.

  3. MQTT 노드 추가:
  4. Node-RED의 플로우 에디터에서 MQTT 노드를 추가. MQTT 노드는 MQTT 브로커에 연결하고 MQTT 메시지를 전송 및 수신할 수 있는 노드. Node-RED 패키지 관리자를 통해 MQTT 노드를 설치할 수 있음.

  5. MQTT 설정:
  6. MQTT 노드를 구성하기 위해 MQTT 브로커의 호스트, 포트, 주제 등을 설정. 이를 통해 Node-RED에서 MQTT 브로커에 연결하고 메시지를 주고받을 수 있음.

  7. MQTT 메시지 처리:
  8. MQTT 노드를 통해 수신한 MQTT 메시지를 원하는 방식으로 처리할 수 있음. 예를 들어, 메시지를 필터링하거나 데이터를 가공하여 원하는 대상에게 전송하는 등의 작업을 수행할 수 있음. Node-RED의 다른 노드와 함께 조합하여 데이터 처리 및 제어 흐름을 구성할 수 있음.

실습 : MQTT를 통해 온습도 데이터 Node-red에 출력

실습 과정

  1. http://www.mqtt-dashboard.com/ 접속, 로그인


  2. https://www.hivemq.com/demos/websocket-client/ SETTING
  3. [참고 이미지]

  4. EspMQTTClient 라이브러리 설치
  5. [참고 이미지]

  6. 코드 작성, ESP32 연결 -> 업로드


  7. Serial Monitor와 MQTT에서 온습도 확인
  8. - Serial Monitor [참고 이미지]

    - MQTT [참고 이미지]

6. Node-Red 설정

Responsive image Responsive image
  1. 노드를 group으로 묶음.


Responsive image Responsive image

  1. MQTT, MQTT브로커 노드 설정




7. Node-Red 대시보드 확인

Responsive image

코드

                            
    #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);
    }

실습을 통해 느낀점

  1. 이 예제를 통해 MQTT와 ESP32, DHT11 센서, Node-RED의 조합을 통해 간단한 IoT 애플리케이션을 구축하는 방법을 배움.
  2. MQTT를 사용하면 손쉽게 센서 데이터를 게시하고 다양한 클라이언트와 통신할 수 있음.
  3. MQTT 브로커는 MQTT 메시지를 수신하고 게시하는 중앙 허브 역할을 함.
  4. 이 예제에서는 mqtt-dashboard.com이라는 공개 MQTT 브로커를 사용.
  5. MQTT 브로커에 연결하여 데이터를 게시하고 구독하는 방법을 배움.
  6. Node-RED를 사용하면 시각적인 인터페이스를 통해 데이터를 처리하고 출력하는 작업을 쉽게 수행할 수 있음.
  7. 시각적 플로우 기반 프로그래밍 도구인 Node-RED를 사용하여 MQTT 메시지를 구독하고 데이터를 출력하는 대시보드를 만들 수 있음을 배움.

Previous   /   Next