11. Node Red HTTP GET - sunbang123/Smart_device GitHub Wiki

์‹ค์Šต ๋ณด๊ณ ์„œ

์‹ค์Šต ๋ชฉ์ฐจ

  1. Gauge
  2. HTTP GET ์š”์ฒญ์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ธฐ

์‹ค์Šต1 : Gauge

์ˆœ์„œ

  1. cmd๋กœ Node-Red ์‹คํ–‰

  2. cmd์ฐฝ์—์„œ ipconfig๋ฅผ ์ž…๋ ฅํ•ด์„œ IPv4์ฃผ์†Œ๋ฅผ ํ™•์ธํ•จ.



  1. ThingSpeak์—์„œ ํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์ถ•ํ•จ.

๋…ธ๋“œ ๊ตฌ์„ฑ


  • Get ๋…ธ๋“œ

  • function ๋…ธ๋“œ

  • gauge ๋…ธ๋“œ

msg.payload

msg.payload๋Š” Node-RED์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์‹œ์ง€ ๊ฐ์ฒด์˜ ์†์„ฑ. Node-RED์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•  ๋•Œ msg๋ผ๋Š” ๋ฉ”์‹œ์ง€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•จ. ์ด ๋ฉ”์‹œ์ง€ ๊ฐ์ฒด๋Š” ์—ฌ๋Ÿฌ ์†์„ฑ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, msg.payload๋Š” ๊ทธ ์ค‘ ํ•˜๋‚˜. msg.payload๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ฃผ์š” ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์†์„ฑ. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„ผ์„œ์—์„œ ์ˆ˜์ง‘ํ•œ ๊ฐ’์„ ์ „์†กํ•˜๊ฑฐ๋‚˜, ์›น ์„œ๋น„์Šค์—์„œ ์ˆ˜์‹ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ „๋‹ฌํ•  ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ.

  1. url์ฐฝ์— HTTP GET ์š”์ฒญ์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” ์ฃผ์†Œ์ธ 'http://[IPv4์ฃผ์†Œ]:1880/update-sensor?temperature=24.37' ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋””๋ฒ„๊ทธ๊ฐ€ ๋˜๋Š”์ง€ ํ™•์ธ


์˜จ๋„๊ฐ’ 24.37์ด ์ถœ๋ ฅ๋˜๋ฉด ์„ฑ๊ณต!

์ฝ”๋“œ

#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
    
#define DHTPIN 13
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

float tem = 0;
float hum = 0;

const char* ssid = "yourWIFIname";
const char* password = "WIFIpassword";
String serverName = "http://ip/https-severname";

unsigned long lastTime = 0;
unsigned long timerDelay = 5000;

void setup() {
    
    delay(500);
    Serial.begin(9600);
    
    WiFi.begin(ssid, password);
    Serial.println("Connecting");
    
    while(WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    
    Serial.println("");
    Serial.print("Connected to WiFi network with IP Address: ");
    Serial.println(WiFi.localIP());
    Serial.println("Timer set to 5 seconds (timerDelay variable), it will take 5 seconds before publishing the first reading.");
}
void loop() {
    
    tem = dht.readTemperature();
    hum = dht.readHumidity();
    
    Serial.print("Temperature :");
    Serial.print(tem);
    
    Serial.print("Humidity :");
    Serial.print(hum);
    
}
if ((millis() - lastTime) > timerDelay) {

    if(WiFi.status()== WL_CONNECTED){
        HTTPClient http;
        String serverPath = serverName + "?Temperature=" + String(tem) + "&" + "Humidity=" + String(hum);

        http.begin(serverPath.c_str());       //๋ถ€๋™์ˆซ์ž ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ

        int httpResponseCode = http.GET();

        if (httpResponseCode>0) {
            Serial.print("HTTP Response code: ");
            Serial.println(httpResponseCode);
            String payload = http.getString();
            Serial.println(payload);
        }
        else {
            Serial.print("Error code: ");
            Serial.println(httpResponseCode);
        }
    
        http.end();
    }
    else {
        Serial.println("WiFi Disconnected");
    }
        lastTime = millis();
    }
}

์‹ค์Šต2 : HTTP GET ์š”์ฒญ์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ธฐ

HTTP GET

  • HTTP GET์€ Hypertext Transfer Protocol (HTTP)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฉ”์„œ๋“œ.
  • HTTP GET ์š”์ฒญ์€ ์„œ๋ฒ„์—๊ฒŒ ํŠน์ • ๋ฆฌ์†Œ์Šค(์›น ํŽ˜์ด์ง€, ์ด๋ฏธ์ง€, API ์—”๋“œํฌ์ธํŠธ ๋“ฑ)๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‘๋‹ต์„ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ.
  • ์ผ๋ฐ˜์ ์œผ๋กœ HTTP GET ์š”์ฒญ์€ URL(Uniform Resource Locator)์„ ํ†ตํ•ด ์ˆ˜ํ–‰.
  • GET ์š”์ฒญ์€ ์ฃผ๋กœ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ. ์„œ๋ฒ„๋Š” GET ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์•„์„œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜.

์ˆœ์„œ

  1. cmd๋กœ Node-Red ์‹คํ–‰

  2. cmd์ฐฝ์—์„œ ipconfig๋ฅผ ์ž…๋ ฅํ•ด์„œ IPv4์ฃผ์†Œ๋ฅผ ํ™•์ธํ•จ.

  3. ThingSpeak์—์„œ ํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์ถ•ํ•จ.

๋…ธ๋“œ ๊ตฌ์„ฑ

  • http response ๋…ธ๋“œ
  1. url์ฐฝ์— HTTP GET ์š”์ฒญ์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” ์ฃผ์†Œ์ธ 'http://[IPv4์ฃผ์†Œ]:1880/update-sensor?temperature=24.37' ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋””๋ฒ„๊ทธ๊ฐ€ ๋˜๋Š”์ง€ ํ™•์ธ

status code 200๊ณผ ์˜จ๋„๊ฐ’ 24.37์ด ์ „์†ก๋˜๋ฉด ์„ฑ๊ณต!

  • status code 200์ด ์•ˆ๋œฐ๋•Œ, ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์‚ญ์ œํ•ด์คŒ.

์‹ค์Šต์„ ํ†ตํ•ด ๋Š๋‚€์ 

  • Node-Red๋ฅผ ํ™œ์šฉํ•ด HTTP GET ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›€.
  • HTTP GET๋Š” ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์ด ์“ฐ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋””๋ฐ”์ด์Šค์—์„œ ๋ชจ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ณ , ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›€.
  • ์ด๋Ÿฐ ๊ณผ์ •์„ ํ†ตํ•ด Node-Red, HTTP GET ์š”์ฒญ, ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด์™€ ๊ฒฝํ—˜์„ ์Œ“์„ ์ˆ˜ ์žˆ์—ˆ์Œ.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ