完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在运行最新的 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 functions 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 开始命令与网络服务器开始结合起来? |
|
相关推荐
1个回答
|
|
对于同时运行网络服务器、Espalexa和ElegantOTA,建议您在代码中实现错误处理和调试输出来查找导致esp崩溃的错误。以下是几种可能的解决方案:
1. 逐一添加板和库:从头开始重新构建您的代码,逐一添加每个板和库,并在添加一个新功能后进行测试。这样可以确定哪些库或板之间可能存在冲突,并尝试解决这些冲突。 2. 将代码分解成模块:将代码分解成可重用模块,每个模块都处理不同的任务。这样可以更容易地跟踪和管理代码,并减少错误的可能性。 3. 添加调试输出:添加适当的调试输出来帮助您识别崩溃的原因。您可以使用Serial.print()和Serial.println()函数将输出发送到串口监视器。一旦您确定了问题所在,您可以采取相应措施来解决问题。 4. 使用watchdog定时器:当esp发生错误时,它可能会陷入死循环或无限循环。因此,使用watchdog定时器可以在错误发生时重新启动esp,从而避免它陷入死循环。您可以使用ESP.wdtEnable()和ESP.wdtDisable()函数启用和禁用watchdog定时器。 将espalexa和elegantOTA开始命令与网络服务器开始结合起来是可行的,但您需要确保代码正确,并进行适当的测试和调试。 |
|
|
|
只有小组成员才能发言,加入小组>>
1106 浏览 1 评论
574浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
460浏览 5评论
461浏览 4评论
435浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 11:26 , Processed in 0.937132 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号