有哪些优化数据传输以减少更新 Firebase 实时数据库延迟的技术? [已关闭]

问题描述 投票:0回答:1

我们开发了智能手杖和移动应用程序。该棒连接了 ESP32 微控制器和集成超声波传感器,用于检测障碍物。 esp32 将障碍物数据发送到 Firebase 实时数据库,移动应用程序检索该数据并将其转换为盲人可以听到的声音。

但问题是,当你向 Firebase 的实时数据库发送数据时,更新数据可能需要时间,所以盲人将听不到任何声音。我该如何解决这个问题,是什么导致了 Firebase 实时数据库更新延迟?

我们以为是wifi网络的问题,并连接了高速wifi网络,但更新仍然有延迟。我的朋友建议,如果我们购买Firebase,那么更新就不会延迟。这是真的吗?

实现代码如下:

#include<FirebaseESP32.h>
#define FIREBASE_HOST "..."
#define FIREBASE_AUTH "..."

int MoisturePin = 2;
int FlamePin = 19;

int triger_pin = 5;
int echo_pin = 18;

int triger_pin2 = 17;
int echo_pin2 = 16;

int triger_pin3 = 4;
int echo_pin3 = 0;

int duration;
int distance; 

int duration2;
int distance2; 

int duration3;
int distance3;
 
// bazer
int bazzer_pin = 10;

int green_led = 13;
int red_led=9 ;


char auth[] = FIREBASE_AUTH;
char ssid[] = "my-wifi";
char pass[] = "1121111";

void setup(){

 Serial.begin(9600);  
 WiFi.begin(ssid, pass); 
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("Connected to WiFi");

  // Initialize Firebase
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
pinMode(triger_pin,OUTPUT);
pinMode(echo_pin,INPUT);
pinMode(triger_pin2,OUTPUT);
pinMode(echo_pin2,INPUT);
pinMode(triger_pin3,OUTPUT);
pinMode(echo_pin3,INPUT);
pinMode(bazzer_pin,OUTPUT);
pinMode(red_led,OUTPUT);
pinMode(green_led,OUTPUT); 
pinMode(MoisturePin,INPUT); 
pinMode(FlamePin,INPUT); 

   
}
void loop() {  
 ultrasonicOne();
 ultrasonicTwo();
 ultrasonicThree();
 moisture_sersor();
 flame_sersor();
}


// ----------------------- Ultrasonic Sensor 1 ---------------------------  
void ultrasonicOne(){
  int ultrasonicData;
  digitalWrite(red_led,LOW);  
  digitalWrite(triger_pin,LOW);
  delayMicroseconds(10);
  digitalWrite(triger_pin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triger_pin,LOW); 
  duration=pulseIn(echo_pin,HIGH);
  distance=duration*(0.034)/2;
  Serial.print("Left distance is : ");
  Serial.println(distance);
if(distance>60){  
  ultrasonicData = map(distance,61, 400, 0, 0);
}
else if(distance<=60){  
  ultrasonicData = map(distance,0, 60, 3 , 3);
  }
else {
  }
  Serial.println(ultrasonicData);
  String databasePathultrasonicData = "/Left";
  FirebaseData firebaseData;

    if(Firebase.setString(firebaseData, databasePathultrasonicData, ultrasonicData)){

    Serial.println("Data set in Firebase successfully.");
  } else {
    Serial.println("Error setting data in Firebase:");
    Serial.println(firebaseData.errorReason());
  } //display the moisture percent.

    Serial.println("***********************************************");
    Serial.println();
//-----------------------------------------------------------------------    
}
firebase-realtime-database delay esp32
1个回答
0
投票

但问题是,当你将数据发送到 Firebase 的实时数据库时,更新数据可能需要时间

所有 API 都会发生这种情况。不仅仅是 Firebase 的情况如此。所有异步操作都需要时间。

我该如何解决这个问题,是什么导致了 Firebase 实时数据库更新延迟?

延迟可能是由多种因素造成的,例如互联网连接较弱、带宽、延迟等。

我的朋友建议,如果我们购买Firebase,那么更新就不会延迟。这是真的吗?

不,那不是真的。无论您使用的是 Spark 计划还是 Blaze 计划,与 Firebase 的连接都应该是相同的。

这就是连接。然而,这种延迟也可能来自代码。如果是这种情况,请编辑您的问题并向我们展示 MCVE,看看问题出在哪里。

© www.soinside.com 2019 - 2024. All rights reserved.