我已解决了问题。 我在库Firebase.cpp中找到了错误=> void FirebaseCall :: analyzeError 您应该更改此代码 之前
update data join tests
on data.ml=tests.ml
and data.test_num=tests.test_num
set test_id=tests.id;
之后
update data
set test_id=
(select id from tests
where data.ml=tests.ml
and data.test_num=tests.test_num);
互联网连接断开后,将重新连接。当我再次连线时,firebase无法连接。因此,当问题再次布线时,它不再与Firebasis连接。我该怎么办?
void FirebaseCall::analyzeError(char* method, int status, const std::string& path_with_auth) {
if (status != 200) {
error_ = FirebaseError(status,
std::string(method) + " " + path_with_auth +
": " + http_->errorToString(status));
}
}
答案 0 :(得分:1)
问题可能是,您尝试连接到Firebase,只要您的连接不可用,那将无法正常工作。尝试更改:
if( !WiFiReturns() )
到
if( WiFiReturns() )
此外,当前您每次调用循环时都会调用firebasereconnect()
。您可能缺少重新连接周围的if语句。我认为您打算使用WiFi.isConnected()
来做到这一点(这不是arduino WiFi库btw的功能)。考虑这样的事情:
if ( WiFiReturns() ) {
if( !Firebase.isConnected() ){ // replace this with your actual logic
digitalWrite(WIFILED, HIGH);
firebasereconnect();
}
} else {
答案 1 :(得分:0)
昨天我遇到了同样的问题。
我删除了Arduino,并安装了新版本。
然后,在您的董事会经理中,搜索“ esp8266”并安装2.1.0版本。
然后,如您在此picture中所看到的,单击红色的一面。
转到“程序包> esp8266>硬件> esp8266> 2.0.0>工具> sdk>包含”,然后打开“ user_interface.h”。
在这里,您应该在底部看到“ #endif”。在此之前,写下这些行并保存:
typedef void (*freedom_outside_cb_t)(uint8 status);
int wifi_register_send_pkt_freedom_cb(freedom_outside_cb_t cb);
void wifi_unregister_send_pkt_freedom_cb(void);
int wifi_send_pkt_freedom(uint8 *buf, int len, bool sys_seq);
然后,将this firebase library添加到您的Arduino文件夹中。
然后,转到草图->包含库->管理库。在此窗口中,将“ json”写入搜索框。您应该看到“ Benoit Blanchon的ArduinoJson”。将其版本降级到5.13.2。
将代码发送到您的NodeMCU并享受。