Skip to content
This repository was archived by the owner on Mar 17, 2025. It is now read-only.
This repository was archived by the owner on Mar 17, 2025. It is now read-only.

FirebaseStream could not detect changes from cloud and Firebase set() and get() got fail result. #167

Closed
@loka17

Description

@loka17

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.

  1. I changed data on cloud, but the code did not pass FirebaseStream.available() check.
  2. 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

Does anyone experience the same issues.
Any help would be appreciated.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions