FirebaseExtended / firebase-arduino

Arduino samples for Firebase.
Apache License 2.0
943 stars 494 forks source link

Arduino board (node mcu) is not sending or read any data to firebase #480

Open pkptissera080 opened 4 years ago

pkptissera080 commented 4 years ago

My project worked perfectly until 2020/02/17 1:28:55 AM and suddenly it crashed. error - firebase failed there is no issue with wifi or the Node MCU libraries I used - firebase library : https://github.com/FirebaseExtended/firebase-arduino JSON library : https://github.com/bblanchon/ArduinoJson/tree/v5.13.1

Please help me and thank you for your time.

This is my demo code:

`#include

include

// Set these to run example.

define FIREBASE_HOST "xxxxxxxxxx.firebaseio.com"

define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

define WIFI_SSID "wifi"

define WIFI_PASSWORD "wifipwd"

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); }

int n = 0;

void loop() { // set value Firebase.setFloat("number", 42.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// update value Firebase.setFloat("number", 43.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// get value Serial.print("number: "); Serial.println(Firebase.getFloat("number")); delay(1000);

// remove value Firebase.remove("number"); delay(1000);

// set string value Firebase.setString("message", "hello world"); // handle error if (Firebase.failed()) { Serial.print("setting /message failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// set bool value Firebase.setBool("truth", false); // handle error if (Firebase.failed()) { Serial.print("setting /truth failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// append a new value to /logs String name = Firebase.pushInt("logs", n++); // handle error if (Firebase.failed()) { Serial.print("pushing /logs failed:"); Serial.println(Firebase.error());
return; } Serial.print("pushed: /logs/"); Serial.println(name); delay(1000); }`

Serial monitor output ........

connecting... connected: 192.xxx.x.xxx setting /number failed: setting /number failed: . . setting /number failed:

SinanCidem commented 4 years ago

I have same trouble. My system working very well before 1 week

TheRealNaery commented 4 years ago

Update the fingerprint

static const char kFirebaseFingerprint[] = "03 D6 42 23 03 D1 0C 06 73 F7 E2 BD 29 47 13 C3 22 71 37 1B"

pkptissera080 commented 4 years ago

thank you @TheRealNaery error fixed

NilangiSithu commented 4 years ago

Hi I also had the same issue and I updated the fingerprint. After updating the latest fingerprint, data was uploaded to Firebase. But, the NodeMCU crashes automatically after sending data for a while. The Serial Monitor displays an exception. After decoding the exception, my understanding was that the issue was with the "Firebase.getInt" code parts. It works when put in "Void Setup", but results in an exception when it is placed in "Void Loop". I have been unable to fix the issue for about a week now. Please help.

Here is my code:

//D0 = 16; //D1 = 5; //D2 = 4; //D3 = 0; //D4 = 2; //D5 = 14; //D6 = 12; //D7 = 13; //D5 = 15; //D9 = 3; //D10 = 1;

include

include

include

define DHTPIN 4 //d2

define DHTTYPE DHT21

DHT dht(DHTPIN, DHTTYPE);

include

include

define ONE_WIRE_BUS 2 // DS18B20 on NodeMCU pin D4

OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire);

define WIFI_SSID "Dialog 4G 142"//"Dialog 4G"

define WIFI_PASSWORD "2D8D37F1"//"FDL6552MG04"

define FIREBASE_HOST "slrs-iot.firebaseio.com"

define FIREBASE_AUTH "bwaDhgMWwLHpFiv4A1plexT02TUwzyHjajSyyDd5"

void setup() { dht.begin(); Serial.begin(115200); DS18B20.begin();

pinMode(D1, OUTPUT); digitalWrite(D1, LOW); pinMode(D7, OUTPUT); digitalWrite(D7, LOW); pinMode(D6, OUTPUT); digitalWrite(D6, LOW);

pinMode(0, OUTPUT); delay(1000); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //try to connect with wifi

while (WiFi.status() != WL_CONNECTED) { digitalWrite(0, digitalRead(0) ^ 1); delay(500); }

Serial.println(WiFi.localIP()); //print local IP address Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); digitalWrite(0, 1); }

void loop() { DS18B20.requestTemperatures(); float t = DS18B20.getTempCByIndex(0); float h = dht.readHumidity();

Serial.print(t); Serial.print(","); Serial.println(h); if (isnan(h) || isnan(t)) { // Check if any reads failed and exit early (to try again). Serial.println(F("Failed to read from DHT sensor!")); return; }

Firebase.setFloat("/devices/lalan-d1/Status/Humidity", h); //setup path and send readings Firebase.setFloat("/devices/lalan-d1/Status/Temperature", t); //setup path and send readings

int ac_low = Firebase.getInt("/devices/lalan-d1/Parameters/AC_LOW"); int ac_high = Firebase.getInt("/devices/lalan-d1/Parameters/AC_HIGH"); int hum_low = Firebase.getInt("/devices/lalan-d1/Parameters/HUMIDIFIER_LOW"); int hum_high = Firebase.getInt("/devices/lalan-d1/Parameters/HUMIDIFIER_HIGH"); int dehum_low = Firebase.getInt("/devices/lalan-d1/Parameters/DEHUMIDIFIER_LOW"); int dehum_high = Firebase.getInt("/devices/lalan-d1/Parameters/DEHUMIDIFIER_HIGH"); int AC_S = Firebase.getInt("/devices/lalan-d1/Switch/AC"); int HUM_S = Firebase.getInt("/devices/lalan-d1/Switch/HUMIDIFIER"); int DEHUM_S = Firebase.getInt("/devices/lalan-d1/Switch/DEHUMIDIFIER");

if (h < hum_low ) { if (HUM_S == 1) { digitalWrite(D1, HIGH); Firebase.setFloat("/devices/lalan-d1/Status/humiditifier", 1); Serial.println("Firebase Set 1");

}
else {
  digitalWrite(D1, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/humiditifier", 0);
  Serial.println("Firebase Set 0");

}

} if (h > hum_high ) { digitalWrite(D1, LOW); Firebase.setFloat("/devices/lalan-d1/Status/humiditifier", 0); Serial.println("h > hum_high Firebase Set 0");

}

//*****

if (h > dehum_high) { if (DEHUM_S == 1) { digitalWrite(D6, HIGH); // Firebase.setFloat("/devices/lalan-d1/Status/dehumiditifier", 1);

}
else {
  digitalWrite(D6, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/dehumiditifier", 0);

}

} if (h < dehum_low) { digitalWrite(D6, LOW); Firebase.setFloat("/devices/lalan-d1/Status/dehumiditifier", 0);

}

//*****

if (t > ac_high) { if (AC_S == 1) { digitalWrite(D7, HIGH); Firebase.setFloat("/devices/lalan-d1/Status/ac", 1);

}
else {
  digitalWrite(D7, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/ac", 0);

}

} if (t < ac_low) { digitalWrite(D7, LOW); Firebase.setFloat("/devices/lalan-d1/Status/ac", 0);

}

delay(5000);

}

Danin066 commented 4 years ago

@pkptissera080 I also am trying to make the same code work on my system, however, even though the code is getting uploaded, the output is not as expected at all:

errorsnip

Please help me figure this out, thanks!

This is my code, for your reference:

include

include

// Set these to run example.

define FIREBASE_HOST "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

define WIFI_SSID "xxxxx"

define WIFI_PASSWORD "xxxxxxxxx"

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); }

int n = 0;

void loop() { // set value Firebase.setFloat("number", 42.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// update value Firebase.setFloat("number", 43.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// get value Serial.print("number: "); Serial.println(Firebase.getFloat("number")); delay(1000);

// remove value Firebase.remove("number"); delay(1000);

// set string value Firebase.setString("message", "hello world"); // handle error if (Firebase.failed()) { Serial.print("setting /message failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// set bool value Firebase.setBool("truth", false); // handle error if (Firebase.failed()) { Serial.print("setting /truth failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// append a new value to /logs String name = Firebase.pushInt("logs", n++); // handle error if (Firebase.failed()) { Serial.print("pushing /logs failed:"); Serial.println(Firebase.error());
return; } Serial.print("pushed: /logs/"); Serial.println(name); delay(1000); }

angelbarusta commented 4 years ago

Actualice las librerias

angelbarusta commented 4 years ago

@ pkptissera080 También estoy tratando de hacer que el mismo código funcione en mi sistema, sin embargo, a pesar de que el código se está cargando, la salida no es la esperada:

errores

Por favor, ayúdame a resolver esto, ¡gracias!

Este es mi código, para su referencia:

include

include

// Establecer estos para ejecutar el ejemplo.

define FIREBASE_HOST "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

define WIFI_SSID "xxxxx"

define WIFI_PASSWORD "xxxxxxxxx"

configuración nula () { Serial.begin (9600);

// conéctate a wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("conexión"); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); retraso (500); } Serial.println (); Serial.print ("conectado:"); Serial.println (WiFi.localIP ());

Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

int n = 0;

void loop () { // establece el valor Firebase.setFloat ("número", 42.0); // maneja el error si (Firebase.failed ()) { Serial.print ("configuración / número falló:"); Serial.println (Firebase.error ()); regreso; } retraso (1000);

// valor de actualización Firebase.setFloat ("número", 43.0); // maneja el error si (Firebase.failed ()) { Serial.print ("configuración / número falló:"); Serial.println (Firebase.error ()); regreso; } retraso (1000);

// obtener el valor Serial.print ("número:"); Serial.println (Firebase.getFloat ("número")); retraso (1000);

// elimina el valor Firebase.remove ("número"); retraso (1000);

// establece el valor de la cadena Firebase.setString ("mensaje", "hola mundo"); // maneja el error si (Firebase.failed ()) { Serial.print ("configuración / mensaje falló:"); Serial.println (Firebase.error ()); regreso; } retraso (1000);

// establece el valor de bool Firebase.setBool ("verdad", falso); // maneja el error si (Firebase.failed ()) { Serial.print ("configuración / verdad falló:"); Serial.println (Firebase.error ()); regreso; } retraso (1000);

// agrega un nuevo valor a / logs String name = Firebase.pushInt ("logs", n ++); // maneja el error si (Firebase.failed ()) { Serial.print (" error al empujar / registrar:"); Serial.println (Firebase.error ()); regreso; } Serial.print ("push: / logs /"); Serial.println (nombre); retraso (1000); }

Los baudios son 9600 en el scope?

pkptissera080 commented 4 years ago

@Danin066 did you check your firebase database, is the data is sending to the database or not?

pkptissera080 commented 4 years ago

@angelbarusta I don't understand your language sorry...

JuanMTB commented 4 years ago

Hi, I have the same problem but I already actualized the fingerprint and still no working. I installed the last Arduino firebase library, the ArduinoJson 5.13.1 library, and the ESP8266 2.5.2 board.

I have tried many things, uninstalling libraries and looking for new ones but it doesn't work.

I use this fingerprint ("03 D6 42 23 03 D1 0C 06 73 F7 E2 BD 29 47 13 C3 22 71 37 1B")

The problem is (setting /number failed:), so the firebase.begin is okay

Thank you all!

Here is my code:

`#include

include

// Set these to run example.

define FIREBASE_HOST "sensor-de-consumo-agua.firebaseio.com"

define FIREBASE_AUTH "XXXXXXXXXX"

define WIFI_SSID "XXXXXXXXXX"

define WIFI_PASSWORD "XXXXXXXXXX"

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); }

int n = 0;

void loop() { // set value Firebase.setFloat("number", 42.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error()); return; } delay(1000);

// update value Firebase.setFloat("number", 43.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error()); return; } delay(1000);

// get value Serial.print("number: "); Serial.println(Firebase.getFloat("number")); delay(1000);

// remove value Firebase.remove("number"); delay(1000);

// set string value Firebase.setString("message", "hello world"); // handle error if (Firebase.failed()) { Serial.print("setting /message failed:"); Serial.println(Firebase.error()); return; } delay(1000);

// set bool value Firebase.setBool("truth", false); // handle error if (Firebase.failed()) { Serial.print("setting /truth failed:"); Serial.println(Firebase.error()); return; } delay(1000);

// append a new value to /logs String name = Firebase.pushInt("logs", n++); // handle error if (Firebase.failed()) { Serial.print("pushing /logs failed:"); Serial.println(Firebase.error()); return; } Serial.print("pushed: /logs/"); Serial.println(name); delay(1000); }`

pkptissera080 commented 4 years ago

@JuanMTB try to reinstall the https://github.com/FirebaseExtended/firebase-arduino and change the kFirebaseFingerprint like this : static const char kFirebaseFingerprint[] ="03:D6:42:23:03:D1:0C:06:73:F7:E2:BD:29:47:13:C3:22:71:37:1B"; // 2020-02

JuanMTB commented 4 years ago

@pkptissera080 Thank you! It works!

It was only necessary to change the fingerprint.

pkptissera080 commented 4 years ago

@JuanMTB you are welcome

HayTran94 commented 4 years ago

@JuanMTB try to reinstall the https://github.com/FirebaseExtended/firebase-arduino and change the kFirebaseFingerprint like this : static const char kFirebaseFingerprint[] ="03:D6:42:23:03:D1:0C:06:73:F7:E2:BD:29:47:13:C3:22:71:37:1B"; // 2020-02

Thank you so much. It work for me

Alpha-1729 commented 4 years ago

anyone having still error

angelbarusta commented 4 years ago

Hola , también tuve el mismo problema y actualicé la huella digital. Después de actualizar la última huella digital, los datos se cargaron en Firebase. Pero, el NodeMCU se bloquea automáticamente después de enviar datos por un tiempo. El monitor serie muestra una excepción. Después de decodificar la excepción, entendí que el problema estaba en las partes del código "Firebase.getInt". Funciona cuando se coloca en "Configuración vacía", pero da como resultado una excepción cuando se coloca en "Bucle vacío". No he podido solucionar el problema durante aproximadamente una semana. Por favor ayuda.

Aquí está mi código:

// D0 = 16; // D1 = 5; // D2 = 4; // D3 = 0; // D4 = 2; // D5 = 14; // D6 = 12; // D7 = 13; // D5 = 15; // D9 = 3; // D10 = 1;

include

include

include

define DHTPIN 4 // d2

define DHTTYPE DHT21

DHT dht (DHTPIN, DHTTYPE);

include

include

define ONE_WIRE_BUS 2 // DS18B20 en el pin

NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire);

define WIFI_SSID "Dialog 4G 142" // "Dialog 4G"

define WIFI_PASSWORD "2D8D37F1" // "FDL6552MG04"

define FIREBASE_HOST "slrs-iot.firebaseio.com"

define FIREBASE_AUTH "BwaDhyW2D1

configuración nula () { dht.begin (); Serial.begin (115200); DS18B20.begin ();

pinMode (D1, SALIDA); digitalWrite (D1, BAJO); pinMode (D7, SALIDA); digitalWrite (D7, BAJO); pinMode (D6, SALIDA); digitalWrite (D6, BAJO);

pinMode (0, SALIDA); retraso (1000); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); // intenta conectarte con wifi

while (WiFi.status ()! = WL_CONNECTED) { digitalWrite (0, digitalRead (0) ^ 1); retraso (500); }

Serial.println (WiFi.localIP ()); // imprime la dirección IP local Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); digitalWrite (0, 1); }

bucle vacío () { DS18B20.requestTemperatures (); flotante t = DS18B20.getTempCByIndex (0); flotante h = dht.readHumidity ();

Serial.print (t); Serial.print (","); Serial.println (h); if (isnan (h) || isnan (t)) {// Compruebe si alguna lectura falló y salga temprano (para intentarlo de nuevo). Serial.println (F ("¡Error al leer del sensor DHT!")); regreso; }

Firebase.setFloat ("/ devices / lalan-d1 / Status / Humidity", h); // configurar ruta y enviar lecturas Firebase.setFloat ("/ devices / lalan-d1 / Status / Temperature", t); // configurar ruta y enviar lecturas

int ac_low = Firebase.getInt ("/ devices / lalan-d1 / Parameters / AC_LOW"); int ac_high = Firebase.getInt ("/ devices / lalan-d1 / Parameters / AC_HIGH"); int hum_low = Firebase.getInt ("/ devices / lalan-d1 / Parameters / HUMIDIFIER_LOW"); int hum_high = Firebase.getInt ("/ devices / lalan-d1 / Parameters / HUMIDIFIER_HIGH"); int dehum_low = Firebase.getInt ("/ devices / lalan-d1 / Parameters / DEHUMIDIFIER_LOW"); int dehum_high = Firebase.getInt ("/ devices / lalan-d1 / Parameters / DEHUMIDIFIER_HIGH"); int AC_S = Firebase.getInt ("/ devices / lalan-d1 / Switch / AC"); int HUM_S = Firebase.getInt ("/ devices / lalan-d1 / Switch / HUMIDIFIER"); int DEHUM_S = Firebase.getInt ("/ devices / lalan-d1 / Switch / DEHUMIDIFIER");

if (h <hum_low) { if (HUM_S == 1) { digitalWrite (D1, HIGH); Firebase.setFloat ("/ devices / lalan-d1 / Status / humiditifier", 1); Serial.println ("Firebase Set 1");

}
else {
  digitalWrite(D1, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/humiditifier", 0);
  Serial.println("Firebase Set 0");

}

} if (h> hum_high) { digitalWrite (D1, LOW); Firebase.setFloat ("/ devices / lalan-d1 / Status / humiditifier", 0); Serial.println ("h> hum_high Firebase Set 0");

}

// **** ** ***

if (h> dehum_high) { if (DEHUM_S == 1) { digitalWrite (D6, HIGH); // Firebase.setFloat ("/ devices / lalan-d1 / Status / deshumiditifier", 1);

}
else {
  digitalWrite(D6, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/dehumiditifier", 0);

}

} if (h <dehum_low) { digitalWrite (D6, LOW); Firebase.setFloat ("/ devices / lalan-d1 / Status / deshumiditifier", 0);

}

// **** ** ***

if (t> ac_high) { if (AC_S == 1) { digitalWrite (D7, HIGH); Firebase.setFloat ("/ devices / lalan-d1 / Status / ac", 1);

}
else {
  digitalWrite(D7, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/ac", 0);

}

} if (t <ac_low) { digitalWrite (D7, LOW); Firebase.setFloat ("/ devices / lalan-d1 / Status / ac", 0);

}

retraso (5000);

}

replicate your error, I can't find a solution, the fingerprint is the most current (2020-02)

pkptissera080 commented 4 years ago

@Danin066 change the serial monitor output to 9600 and you will get a output

pkptissera080 commented 4 years ago

@angelbarusta I gave a solution for that problem of @JuanMTB and fixed please check that thank you.

angelbarusta commented 4 years ago

@angelbarusta Di una solución para ese problema de @JuanMTB y lo solucioné, por favor verifique eso gracias.

even with the updated fingerprint it does not solve the problem

vienbu commented 2 years ago

@angelbarusta I gave a solution for that problem of @JuanMTB and fixed please check that thank you.

Hi, I also had the same issue and I updated the new fingerprint. but it still not send data to firebase. My serial monitor don't have error but firebase not update data. Kfingerprint = "50:89:50:57:90:1F:37:E3:B8:F3:5B:02:ED:3A:65:6E:6A:34:DB:93" This is my code:

include

include

include

include

SoftwareSerial s1(D7,D8);//7 rx, 8tx

define FIREBASE_HOST "datn-v2-default-rtdb.firebaseio.com"

define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

define WIFI_SSID "Quocthang"

define WIFI_PASSWORD "xxxxxxxxxxxxxx"

include

include

include

define SCREEN_WIDTH 128 // OLED display width, in pixels

define SCREEN_HEIGHT 64 // OLED display height, in pixels

define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)

define REPORTING_PERIOD_MS 1000

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //Declaring the display name (display) Adafruit_MLX90614 mlx = Adafruit_MLX90614();

define tt "False"

int bpm = 0; int bpm2; int Spo2 = 0; int Spo2_2;

int temp_ambient; float temp_object; float temp_object1;

define address_mlx 0x5A

extern "C" {

include // https://github.com/esp8266/Arduino actually tools/sdk/include

}

int checkForResetButtonPressed() { rst_info *myResetInfo; delay(5000); // slow down so we really can see the reason!! myResetInfo = ESP.getResetInfoPtr(); Serial.printf("myResetInfo->reason %x \n", myResetInfo->reason); // reason is uint32 Serial.flush(); return myResetInfo->reason; } void setup() { //Wire.begin(); Serial.begin(9600); s1.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);// initialize with the I2C addr 0x3C (for the 128x32)(initializing the display) Serial.println("Place your index finger on the sensor with steady pressure."); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to "); Serial.print(WIFI_SSID); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.print("Connected to "); Serial.println(WIFI_SSID); Serial.print("IP Address is : "); Serial.println(WiFi.localIP()); //print local IP address Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);// connect to firebase mlx.begin(); // if (checkForResetButtonPressed() == 2){ // Spo2 = Firebase.getInt ("datn-v2/Spo2"); // bpm = Firebase.getInt ("datn-v2/NhipTim"); // temp_object1 = Firebase.getFloat ("datn-v2/NhietDo"); Spo2 = Firebase.getInt ("datn-v2/Spo2"); bpm = Firebase.getInt ("datn-v2/NhipTim"); temp_object1 = Firebase.getFloat ("datn-v2/NhietDo1"); temp_ambient = Firebase.getFloat ("datn-v2/NhietDo2"); // } } void loop() {

nhan_nhiptim(); Serial.println("NHIPTIM OK"); //delay(50); nhan_spo2(); Serial.println("SPO2 OK"); truyen_du_lieu(); Serial.println("Truyen du lieu OK");

nhan_nhiet_do(); Serial.println("NHIETDO OK");

}

void nhan_nhiet_do(){ Wire.beginTransmission(address_mlx); //Send a request to begin communication with the device at the specified address Wire.endTransmission(); //this ends transmission of data from the arduino to the temperature sensor Wire.requestFrom(address_mlx, 1);//this requests 1 byte from the specified address temp_ambient= mlx.readAmbientTempC(); temp_object= mlx.readObjectTempC(); Serial.print("Nhiet do phong: "); Serial.print(temp_ambient); Serial.println("C"); Serial.print("Nhiet do co the: "); Serial.print(temp_object1); Serial.println("C"); //if ((temp_object <26.5)){ // temp_object1=0; //} //else temp_object1 = temp_object + 1.3; if(temp_object1<33){

temp_object1=0;
}

// } Serial.println(); display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0,0); display.print("T: "); display.print(temp_object1); display.println("C"); display.print("Beat: ");
display.println(bpm); display.print("SPO2: ");
display.print(Spo2); display.println("%"); display.display();

} void nhan_nhiptim(){ if (Serial.available()) { bpm=Serial.read(); Serial.print("Nhip Tim : "); Serial.println(bpm);

} } void nhan_spo2(){ if (s1.available()) { Spo2=s1.read(); Serial.print("Spo2 : "); Serial.println(Spo2);

} } void truyen_du_lieu(){ Firebase.setFloat("datn-v2/NhietDo1",temp_object1); Firebase.setFloat("datn-v2/NhietDo2",temp_ambient); // if ((bpm!=0) && (bpm < 100)){ // bpm2 = bpm;
// bpm=Serial.read(); Firebase.setInt("datn-v2/NhipTim",bpm); // } // if (temp_object1!=0){ // Firebase.setFloat ("datn_v2/NhietDo",temp_object1); // } // if ((Spo2>80)&&(Spo2<100)){ // Spo2_2= Spo2; // Spo2=s1.read(); Firebase.setInt("datn-v2/Spo2",Spo2);

}