FirebaseStream could not detect changes from cloud and Firebase set() and get() got fail result. #167
Description
I tried the following sketch, it worked fine at the beginning.
#include <FirebaseArduino.h>
#include <ESP8266WiFi.h>
#define FIREBASE_HOST ""
#define NODE_LINK ""
#define FIREBASE_AUTH ""
#define WIFI_SSID ""
#define WIFI_PASSWORD ""
FirebaseArduino FirebaseStream;
void setup() {
Serial.begin(9600);
// connect to wifi.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("connected: ");
Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
FirebaseStream.begin(FIREBASE_HOST, FIREBASE_AUTH);
FirebaseStream.stream(NODE_LINK);
}
int n = 0;
int m = 0;
void loop() {
Serial.println("loop");
Firebase.setInt("/testing/testing2/loopTimes", n++);
if (Firebase.failed()) {
Serial.println(Firebase.error());
}
int data = Firebase.getInt("/testing/testing2/loopTimes");
if (Firebase.failed()) {
Serial.println(Firebase.error());
}
Serial.print("data: ");
Serial.println(data);
Serial.print("heap: ");
if (FirebaseStream.failed()) {
Serial.println("ERROR: streaming error");
Serial.println(FirebaseStream.error());
}
if (FirebaseStream.available()) {
FirebaseObject event = FirebaseStream.readEvent();
Serial.print("event: ");
Serial.println(event.getString("event"));
Serial.print("path: ");
Serial.println(event.getString("path"));
Serial.print("data: ");
Serial.println(event.getString("data"));
Firebase.setInt("/testing/testing1/pushTimes", m++);
if (Firebase.failed()) {
Serial.println(Firebase.error());
}
} else {
Serial.println("stream is not available");
}
Serial.println(ESP.getFreeHeap());
delay(4000);
}
However after a period of time (in my case, after a night) it did not work as expected. I listed two points that I thinks the issues.
- I changed data on cloud, but the code did not pass FirebaseStream.available() check.
- Firebase get and set have always received unsuccessful results due to "connection refused" error. Though I could access to cloud using PC.
The output in Debug level "HTTP Client + SSL" is as below.
[HTTP-Client][begin] host: < FIREBASE_HOST > port: 443 url: /testing/testing1/loopTimes.json httpsFingerprint: 7A 54 06 9B DC 7A 25 B3 86 8D 66 53 48 2C 0B 96 42 C7 B3 0A
[HTTP-Client] failed connect to < FIREBASE_HOST >:443
[HTTP-Client][returnError] error(-1): connection refused
[HTTP-Client][returnError] error(-4): not connected
PUT /testing/testing1/loopTimes.json: -1
[HTTP-Client][begin] host: < FIREBASE_HOST > port: 443 url: /testing/testing1/loopTimes.json httpsFingerprint: 7A 54 06 9B DC 7A 25 B3 86 8D 66 53 48 2C 0B 96 42 C7 B3 0A
[HTTP-Client] failed connect to < FIREBASE_HOST >:443
[HTTP-Client][returnError] error(-1): connection refused
[HTTP-Client][returnError] error(-4): not connected
GET /testing/testing1/loopTimes.json: -1
I am using
- arduino - esp8266 master master (esp8266/Arduino@43fb139).
- Arduino IDE 1.6.8
Does anyone experience the same issues.
Any help would be appreciated.