상세 컨텐츠

본문 제목

027. Arduino 아두이노 - Ethernet Shield Webclient parameter 변경하기

embedded/arduino

by ZelKun 2019. 8. 24. 19:29

본문

반응형

WebClient 예제나 WebClientRepeating 예제를 보면

버(google.com)에 연결후 arduino를 검색만 하고 종료하거나

서버(www.arduino.cc) 접속해서 latest.txt 파일만 읽어오도록 되어있는데

데이터를 송신(HTTP GET / POST) 하려면

어떻게 해야하는지 감이 잡히긴 마찬가지다

 

결론적으로 핵심은 client.println 있는데

if (client.connect(server, 80)) {

    Serial.println("connecting...");

    // send the HTTP GET request:

    client.println("GET /latest.txt HTTP/1.1");

    client.println("Host: www.arduino.cc");

    client.println("User-Agent: arduino-ethernet");

    client.println("Connection: close");

    client.println();

 

    // note the time that the connection was made:

    lastConnectionTime = millis();

  } else {

    // if you couldn't make a connection:

    Serial.println("connection failed");

  }

 

잘보면 요청헤더 GET HTTP/1.1 & HTTP/1.0 사용하는걸 볼수 있다

이를 동적으로 변경하게 하면 파라미터를 원하는데로 있다

 

Ethernet Shield 예제도 그렇고 검색을 해봐도

부분보다는 서버로 사용하고 LED 켜고 끄는것만 예제만 돌아다니는걸 보니 참…

 

HttpClient 생각해 보긴했지만

client.print 변경해주는 것만으로도 충분하다

이를 이용해서 Thingspeak BME280 센서데이터를 전송하도록 함수를 구성했다

char server[] = "api.thingspeak.com";

String thingspeakApiKey = "thingspeakApiKey";

 

void sendThingspeak(float t, float h, float p, int a){

  String param = "/update?api_key=" + thingspeakApiKey; 

  param += "&field1=" + String(t);

  param += "&field2=" + String(h);

  param += "&field3=" + String(p);

  param += "&field4=" + String(a);

 

  if (client.connect(server, 80)) {

    Serial.print("connected to ");

    Serial.println(client.remoteIP());

    // Make a HTTP request:

    client.print("GET ");

    client.print(param);

    client.println(" HTTP/1.0");

    client.print("Host: ");

    client.println(server);

    client.println("Connection: close");

    client.println();

  } else {

    Serial.println("connection failed");

  }

 

  if (!client.connected()) {

    client.stop();

  }

 

캡쳐를 안했는데 thingspeak 연결후 데이터를 보내는게 확인되었다

 

참고

https://www.arduino.cc/en/Reference/EthernetClient

반응형

관련글 더보기

댓글 영역