Как получить доступ к сайту, работающему на локальном хосте (хост/сервер), к последовательному монитору с помощью ESP8266 (клиент)?

Следующий исходный код взят с официального сайта ESP8266 (прилагается пояснение): https: //arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/client-examples.html
Этот код .ino возвращает html-код имени сервера, упомянутого в объявлении «const char* server», в последовательный монитор.

И да, этот код прекрасно возвращает HTML-коды wwww.google.com, www.arduino.cc и т. д. Но когда я пробую это с помощью моего «светодиодного мигания.html», я не могу добиться успеха. Я думаю, это потому, что веб-сайт должен быть размещен на работающем сервере.

Другие сведения:
1. Плата UC: Wemos D1 mini (вариант ESP8266)
2. Я использую Xampp для запуска сервера Apache и MySQL
3. Плата Wemos настроена как WiFiClient

#include <ESP8266WiFi.h>

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

Я поместил html,php-код веб-сайта в каталог: C:/xampp/htdocs/LED BLINKING/led Blinking.html

IP-адрес моего ПК с Windows: 192.168.100.9

const char* server = "192.168.100.9/LED BLINKING/led blinking.html";

Я пробовал использовать только «192.168.100.9»; слишком. Я также разблокировал брандмауэр Windows для своего сервера ApacheHTTP. Теперь я могу просматривать веб-страницу на своем мобильном телефоне по URL-адресу: 192.168.100.9/LED BLINKING/led Blinking.html.

void setup()
{
  Serial.begin(115200);
  Serial.println();

  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" connected");
}


void loop()
{
  WiFiClient client;

  Serial.printf("\n[Connecting ...");
  if (client.connect(server, 80))
  {
    Serial.println("connected]");

    Serial.println("[Sending a request]");
    client.print(String("GET /") + " HTTP/1.1\r\n" +
                 "server: " + server + "\r\n" +
                 "Connection: close\r\n" +
                 "\r\n"
                );

   Serial.println("[Response:]");
    while (client.connected())
    {
      if (client.available())
      {
        String line = client.readStringUntil('\n');
        Serial.println(line);
      }
    }
    client.stop();
    Serial.println("\n[Disconnected]");
  }
  else
  {
    Serial.println("connection failed!]");
    client.stop();
  }
  delay(5000);
}

Вывод на последовательном мониторе: Подключение к ssid подключено [Ошибка подключения!]

, 👍0


1 ответ


2

Переменная server — это имя хоста или IP-адрес для TCP-соединения. /LED BLINKING/led Blinking.html идет после HTTP GET. Теперь есть / и он работает для главной страницы серверов.

Вам нужно

client.print(String("GET /LED%20BLINKING/led%20blinking.htm") + " HTTP/1.1\r\n" +
             "server: " + server + "\r\n" +
             "Connection: close\r\n" +
             "\r\n"
            );

и вам нужно покинуть это место

,