@riido

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

学校の卒業研究で、プログラムがうまく作動しなくて困っています

Q&A

解決したいこと

学校の卒業研究でNodeMCU社のESP8266でGASに接続して、GASからのレスポンスで条件判断し、ESPを動かしたいです。GASとESPのプログラムはできているのですが、シリアルモニタでHTTPに接続する際に-1とでてしまい接続が失敗してしまいます。どうすればよいでしょうか。

エラーコード

Error sending data: -1

該当するソースコード

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecure.h>

const char* ssid = "ssid";
const char* password = "password";

const char* GAS_URL =
"GAS_URL";

#define SOIL_PIN A0

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println("Connecting to WiFi...");
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");dd
  }

  Serial.println("\nWiFi connected!");
}

void loop() {

  int soilRaw = analogRead(SOIL_PIN);

  int soilPercent = map(soilRaw, 1023, 0, 0, 100);
  soilPercent = constrain(soilPercent, 0, 100);

  Serial.printf(
    "Soil raw: %d | Soil moisture: %d%%\n",
    soilRaw,
    soilPercent
  );

  WiFiClientSecure client;
  client.setInsecure();

  HTTPClient http;

  String url = String(GAS_URL)
             + "?soil_raw=" + String(soilRaw)
             + "&soil_percent=" + String(soilPercent);

  Serial.println(url);
  

  http.begin(client, url);
  http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);

  int httpCode = http.GET();

  Serial.print("HTTP code: ");
  Serial.println(httpCode);

  if (httpCode > 0) {
    Serial.println(http.getString());
  } else {
    Serial.println(http.errorToString(httpCode));
  }

  http.end();

  delay(10000);
}

自分で試したこと

すでにサーバー側に負荷がかからないように待機時間を増やしたりしましたが全部だめでした。

0 likes

2Answer

HTTPC_ERROR_CONNECTION_FAILED (-1) ってことでしょうか?

まず 他のurlで接続できるかの確認とかしたらいいのでは?(そもそも wifi の先に接続できているのかもありますが

0Like

@Geometry Dash Online ご質問ありがとうございます。私も以前、同じような問題に遭遇したことがあるので、どのような解決方法が推奨されるのか興味があります。経験のある方から、分かりやすく説明していただけると嬉しいです。

0Like

Your answer might help someone💌