我正在运行最新的 Arduino IDE,所有板和库都已完全更新。我正在为 esp12E 板编程。
是否可以同时运行网络服务器、espalexa 和 elegantOTA?我正在尝试这样做,但是当我尝试访问 OTA 更新页面时,esp 崩溃并重新启动。标准网络服务器工作正常。alexa 控制也是如此。使事情复杂化的是,我还运行了一个 softAP,因此用户可以设置初始 wifi 凭据。这是我的代码片段。
在全球范围内
代码:
全选//lots of other stuff. The relevant pieces are listed here
#include
#include
#include
#include
#include
#include
#include //https://github.com/ayushsharma82/ElegantOTA
//callback func
tions for alexa
void deviceOneChanged(uint8_t brightness);
void deviceTwoChanged(uint8_t brightness);
Espalexa espalexa;
//pointers for alexa devices
EspalexaDevice* d1;
EspalexaDevice* d2;
ESP8266WiFiMulti wifiMulti;
ESP8266WebServer server(80);
DNSServer dnsServer;
在无效设置()
代码:
全选//lots of other stuff going on, but here is the relevant pieces.
//setup softAP
WiFi.softAP(ap_SSID, ap_Password);
dnsServer.start(53, "Settings.com", WiFi.softAPIP());
//setup wifi
WiFi.disconnect(true);
wifiMulti.addAP(SSID1, PW1);
wifiMulti.addAP(SSID2, PW2);
//Setup Alexa
d1 = new EspalexaDevice(A_Click_Device, deviceOneChanged);
d2 = new EspalexaDevice(B_Click_Device, deviceTwoChanged);
espalexa.addDevice(d1);
espalexa.addDevice(d2);
server.on("/", handleRoot);
server.onNotFound([]() {
if (!espalexa.handleAlexaApiCall(server.uri(), server.arg(0))) {
server.send(404, "text/plain", "Not found");
}
});
//start servers
ElegantOTA.begin(&server);
espalexa.begin(&server);
在无效循环()
代码:
全选//again. lots of other code, but here are the relevant snipets.
dnsServer.processNextRequest();
server.handleClient();
espalexa.loop();
我认为问题在于我正在尝试使用 (&server) 启动 espalexa.begin 和 ElegantOTA.begin。但我真的不确定。OTA 应该在 elegantOTA.begin(&server) 之后有一个 server.begin(),但 espalexa 说要消除它并用 espalexa.begin(&server) 替换它。有没有办法将 espalexa 和 elegantOTA 开始命令与网络服务器开始结合起来?