Firebase-ESP32: "Connection lost" and "connection refused" errors when Firebase related code runs on 2 cores
Hello,
When I run my code related to Firebase by default on Core 1, everything works normal, but when I put some code related to Firebase on Core 0, I receive errors in Serial related to Firebase. See my code below.
18:42:33.316 -> connection lost
18:44:46.416 -> connection refused
IDE and its version:
- Arduino
- 1.8.10
- FirebaseESP32 3.5.9/3.6.2
This code runs on Core 1 by default and works OK:
void setup() {
...
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
Firebase.setReadTimeout(firebaseData, 1000 * 60);
Firebase.setwriteSizeLimit(firebaseData, "tiny");
...
}
void Callback1() {
...
if (inValue.find("SomeString") != -1) {
Do some stuff;
Firebase.setString(firebaseData, "/Path", "SomeValue");
}
else if (inValue.find("("SomeOtherString") ") != -1) {
Do some other stuff;
Firebase.setString(firebaseData, "/Path", "SomeValue2");
}
}
void loop() {
if (!Firebase.readStream(firebaseData))
{
Serial.println(firebaseData.errorReason());
}
if (firebaseData.streamTimeout())
{
Serial.println("Stream timeout, resume streaming...");
Serial.println();
}
if (firebaseData.streamAvailable())
{
RemoteData = firebaseData.stringData();
if RemoteData == "Value1") {
Do some stuff;
}
else if RemoteData == "Value2") {
Do some other stuff;
}
else {
Serial.println("Wrong Data!");
}
}
Callback1, setup() run on default Core 1, Task1code runs on Core 0. The difference with the code I’ve posted earlier - code is moved from loop() to Task1:
void setup()
{
...
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
Firebase.setReadTimeout(firebaseData, 1000 * 60);
Firebase.setwriteSizeLimit(firebaseData, "tiny");
xTaskCreatePinnedToCore(
Task1code, /* Task function. */
"Task1", /* name of task. */
10000, /* Stack size of task */
NULL, /* parameter of the task */
1, /* priority of the task */
&Task1, /* Task handle to keep track of created task */
0); /* pin task to core 0 */
delay(500);
...
}
void Callback1() {
...
if (inValue.find("SomeString") != -1) {
Do some stuff;
Firebase.setString(firebaseData, "/Path", "SomeValue");
}
else if (inValue.find("("SomeOtherString") ") != -1) {
Do some other stuff;
Firebase.setString(firebaseData, "/Path", "SomeValue2");
}
}
void Task1code( void * pvParameters ){
if (!Firebase.readStream(firebaseData))
{
Serial.println(firebaseData.errorReason());
}
if (firebaseData.streamTimeout())
{
Serial.println("Stream timeout, resume streaming...");
Serial.println();
}
if (firebaseData.streamAvailable())
{
RemoteData = firebaseData.stringData();
if RemoteData == "Value1") {
Do some stuff;
}
else if RemoteData == "Value2") {
Do some other stuff;
}
else {
Serial.println("Wrong Data!");
}
}
void loop() {
}
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 19 (10 by maintainers)
@mobizt thanks, I uploaded the SSL domain certificate of my database url and it worked.