- BLE経由で受信した温湿度と大気圧のデータをWebサーバにアップロードする方法を、備忘録として残しておきます
ソース
#include <HTTPClient.h> const String WEB_API_URL = "http://192.168.10.111/temp_humi_press.php"; // 送信先URL void loop() { .... // ディスプレイに表示 if (rcvcnt > 0) { rcvcnt-- ; if ( BleTimer > 5 ){ printLocalTime(); Serial.printf("Pres:%.1f,temp:%.1f,humi:%.1f,vbat:%.1f,rssi:%d", rcvdatas[rcvcnt].pres - 1000, rcvdatas[rcvcnt].temp, rcvdatas[rcvcnt].humi, rcvdatas[rcvcnt].vbat, abs( rcvdatas[rcvcnt].rssi ) ); u8g2.clearBuffer(); // clear the internal memory u8g2.setCursor(0,14); u8g2.printf("pres:%4d", int (rcvdatas[rcvcnt].pres) ); u8g2.setCursor(0,27); u8g2.printf("temp:%4.1f", rcvdatas[rcvcnt].temp); u8g2.setCursor(0,40); u8g2.printf("hum: %4.1f", rcvdatas[rcvcnt].humi); u8g2.display(); u8g2.sendBuffer(); // transfer internal memory to the display postServer(rcvdatas, 1); } .... } // Webサーバーに送信 void postServer(struct RcvData* td, int cnt) { HTTPClient http; sp(" Send to Web Server "); // POSTデータ作成 String jsonData = "{\"data\":["; char buff[64]; for (int i=0; i<cnt; i++) { sprintf(buff, "{\"id\":%d,", td[i].id); jsonData += buff; sprintf(buff, "\"pres\":%.1f,", td[i].pres); jsonData += buff; sprintf(buff, "\"volt\":%.1f,", td[i].vbat); jsonData += buff; sprintf(buff, "\"temp\":%.1f,", td[i].temp); jsonData += buff; sprintf(buff, "\"humi\":%.1f,", td[i].humi); jsonData += buff; sprintf(buff, "\"rssi\":%d,", td[i].rssi); jsonData += buff; sprintf(buff, "\"seq\":%d}", td[i].seq); jsonData += buff; if (i < cnt-1) jsonData += ","; } jsonData += "],\"count\":"+String(cnt)+"}"; sp(jsonData); // 送信 http.begin(WEB_API_URL); //HTTP http.addHeader("Content-Type", "application/x-www-form-urlencoded"); http.addHeader("Content-Length", String(jsonData.length())); http.setFollowRedirects(HTTPC_FORCE_FOLLOW_REDIRECTS); int httpCode = http.POST(jsonData); printf("[HTTP] POST... code: %d ",httpCode); // 送信後の処理 if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); printf(" OK %s ", payload); } else { printf("[HTTP] POST... failed, error: %s ",httpCode); } http.end(); }
コンパイルメモリ不足への対応
最後に
ここまでご覧いただき、ありがとうございました。もし誤りがあれば、ご指摘いただけますと幸いです