はじめに
この記事はArduino Advent Calendar 2020の13日目の記事です。
前回の記事 WebAPI編をまだ見ていない方は、そちらを先にどうぞ。
本題(復習)
- 前にESP32と自作WebAPIとの通信をやったので、そのやり方的なもの。
- やることとしては、ESP32から自作WebAPIに値を送り、レスポンスを返すという簡単なもの。
用意するもの(復習)
- PC(python3やESP32、git等の開発環境はセットアップ済み)
- GitHubのアカウント
- ESP32(Arduino互換)
ソースコード
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "ルータのssid";
const char* password = "ルータのパスワード";
const String URL = "https://[herokuのアプリ名].herokuapp.com/a=";
void setup() {
Serial.begin(115200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
}
void loop() {
if (Serial.available()) {
String a=Serial.readStringUntil(',');
String b=Serial.readStringUntil('\n');
String sendStr=URL+a+",b="+b;
HTTPClient http;
http.begin(sendStr);
int Get = http.GET();
if (Get > 0) {
String httpStr = http.getString();
Serial.println(httpStr);
}
http.end();
}
}
説明
シリアルモニタ2,3
というデータをESP32に送り、結果を表示するデモです
setupについて、
インターネットにつなぐ処理をしています
ほとんどおまじないです
loopの2,3行目
String a=Serial.readStringUntil(',');
String b=Serial.readStringUntil('\n');
シリアルからの入力をとり、
aにカンマまでの文字列を、
bにカンマから改行までの文字列を
代入する。
loopの4行目
String sendStr=URL+a+",b="+b;
sendStrにURLと送る値を代入
loopの6行目
http.begin(sendStr);
自作WebAPIに接続
loopの7-11行目
int Get = http.GET();
if (Get > 0) {
String httpStr = http.getString();
Serial.println(httpStr);
}
自作WebAPIからGETが帰ってきたら、WebAPIからの出力をシリアルモニタに出力
まとめ
WebAPI編に比べてとても簡素になってしまいました。
今回の技術を使えば、AIでの解析やLAN外からのESP32の操作が実現できます
実際、自分がやろうとしたきっかけはAIでエアコンを制御するためでした
(やってないけど...)
1回目と2回目の記事なので見づらい所が多々あったと思いますが、誰かの役に立てば幸いです