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에 연결후 데이터를 보내는게 확인되었다
참고
029. Arduino 아두이노 - Bad CPU type in executable (0) | 2019.12.22 |
---|---|
028. Arduino 아두이노 - Blynk / BME280 / Ethernet Shield 사용하기 (0) | 2019.08.24 |
026. Arduino 아두이노 - Ethernet Shield 사용하기 (0) | 2019.08.24 |
025. Arduino 아두이노 - delay에 대한 고촬 (0) | 2019.08.24 |
024. Arduino 아두이노 - bme280 / bmp280 센서모듈(Using bme280 / bmp 280 sensor module) (1) | 2019.08.16 |
댓글 영역