EPS32C3にBLE経由で受信したデータをWebサーバ送信

  • 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();
}

コンパイルメモリ不足への対応

最後に

ここまでご覧いただき、ありがとうございました。もし誤りがあれば、ご指摘いただけますと幸いです

プライバシーポリシー |ページトップへ

`