Импорт JQuery через SPIFFS ESP8266 - PullRequest
       100

Импорт JQuery через SPIFFS ESP8266

0 голосов
/ 01 августа 2020

У меня есть рабочий код, который работает хорошо. Суть кода заключается в том, что человек подключается к сети Wi-Fi, передает его на Captive Portal, в котором он вводит текст, который отправляется на esp8266. Но так не работает, так как я хочу все это делать без подключения к сети, то импорт JQuery с сервера не подходит, нужно это делать подключив JQuery через файл. Поэтому для этого я загрузил его в файловую систему esp8266, но я не смог найти информацию о том, как включить этот файл в код html сейчас. Подскажите, пожалуйста, как это сделать?

Код: (ключевые строки выделены).

#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <FS.h>

const byte DNS_PORT = 53;
IPAddress apIP(172, 0, 0, 1);
DNSServer dnsServer;
ESP8266WebServer webServer(80);

String handleRoot = R"=====(
<!DOCTYPE html>
<html lang='en'>
   <head>


   <script src="jquery"></script>


    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
  </head>
  <body>
      <h1>Ввод:</h1>
      <input type='text' name='input' id='input' size=2 autofocus>
      <div>
      <br><button id='send_button'>Send</button>
      </div>
<script>
  var input;
  $('#send_button').click(function(e){
    e.preventDefault();
    input = $('#input').val();
    $.get('/send?input=' + input, function(data){
     console.log(data);
    });
  });   
</script>
</body>
</html>
)=====";

void handleSend() {
  Serial.println("Input");
  if (webServer.arg("input")!= ""){
    Serial.println("Input is: " + webServer.arg("input"));
  }
}

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


  SPIFFS.begin();
  File jquery = SPIFFS.open("/jquery-3.5.1.min.js", "r");


  delay(10);
  Serial.println("Started");
  WiFi.mode(WIFI_AP);
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
  WiFi.softAP("INFO");
  
  dnsServer.start(DNS_PORT, "*", apIP);

  webServer.onNotFound([]() {
   webServer.send(200, "text/html", handleRoot);
  });
   webServer.on ("/send", handleSend);
  webServer.begin();
}

void loop() {
  dnsServer.processNextRequest();
  webServer.handleClient();}
...