【ESP32】JSONをPOSTするには?HTTPClientがおすすめ!

ESP32

ESP32でサーバーにJSONをPOSTする方法を紹介します。

スポンサーリンク

おすすめのライブラリ

HTTP通信にはArduino Espressif32に含まれているHTTPClientを使用します。

JSONの処理についてはArudinoJsonがおすすめです。

PlatformIO Registry
The world's first package and project dependency management solution for embedded development
スポンサーリンク

サンプル

ライブラリを読み込むため、includeに次を記載します。

#include <ArduinoJson.h>
#include <HTTPClient.h>

POSTするサンプルは次のようになります。

  ///
  /// サーバーにPOSTする
  ///

  // JSONを作成する
  StaticJsonDocument<JSON_OBJECT_SIZE(4)> json_array;
  char json_string[255];
  // JSONに変換したいデータを連想配列で指定する
  json_array["espid"] = 1;
  json_array["temp"] = 2;
  json_array["humi"] = 3;
  json_array["press"] = 4;
  // JSONフォーマットの文字列に変換する
  serializeJson(json_array, json_string, sizeof(json_string));
  // HTTPClinetでPOSTする
  httpClient.begin("https://test.lc/hoge.php");
  // postするのはjsonなので、Content-Typeをapplication/jsonにする
  httpClient.addHeader("Content-Type", "application/json");
  // POSTしてステータスコードを取得する
  int status_code = httpClient.POST((uint8_t *)json_string, strlen(json_string));
  if (status_code == 200)
  {
    Serial.printf("[POST]Send to server (URL:%s)", postUrl);
  }
  else
  {
    Serial.printf("[POST]failed to send to server (URL:%s)", postUrl);
  }
  // HTTPClinetを終了する
  httpClient.end();

espid,temp,humi,pressの4つのデータをJSONに変換し、 https://test.lc/hoge.phpに送信するサンプルとしてみました。

ArduinoJsonを使用し、配列をJSON形式の文字列に変換させ、変換した文字列をサーバーにPOSTしています。

レスポンスも受け取るようにしており、200以外ではシリアルにエラーを出力するようにしてみました。

まとめ

HTTPClientとArduinoJSONの組み合わせて、JSONによるデータのやり取りもかんたんに対応できます。ESP32で収集したデータをサーバーに送信する際など、ぜひ使ってみてください。

コメント

タイトルとURLをコピーしました