firebase-arduino
firebase-arduino copied to clipboard
Arduino board (node mcu) is not sending or read any data to firebase
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 <ESP8266WiFi.h> #include <FirebaseArduino.h>
// 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:
I have same trouble. My system working very well before 1 week
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"
thank you @TheRealNaery error fixed
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 <ESP8266WiFi.h> #include <FirebaseArduino.h> #include <DHT.h> #define DHTPIN 4 //d2 #define DHTTYPE DHT21 DHT dht(DHTPIN, DHTTYPE);
#include <OneWire.h> #include <DallasTemperature.h> #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);
}
@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:
Please help me figure this out, thanks!
This is my code, for your reference:
#include <ESP8266WiFi.h> #include <FirebaseArduino.h>
// 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);
}
Actualice las librerias
@ 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:
Por favor, ayúdame a resolver esto, ¡gracias!
Este es mi código, para su referencia:
#include <ESP8266WiFi.h> #include <FirebaseArduino.h>
// 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?
@Danin066 did you check your firebase database, is the data is sending to the database or not?
@angelbarusta I don't understand your language sorry...
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 <ESP8266WiFi.h> #include <FirebaseArduino.h>
// 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); }`
@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
@pkptissera080 Thank you! It works!
It was only necessary to change the fingerprint.
@JuanMTB you are welcome
@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
anyone having still error
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 <ESP8266WiFi.h> #include <FirebaseArduino.h> #include <DHT.h> #define DHTPIN 4 // d2 #define DHTTYPE DHT21 DHT dht (DHTPIN, DHTTYPE);
#include <OneWire.h> #include <DallasTemperature.h> #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)
@Danin066 change the serial monitor output to 9600 and you will get a output
@angelbarusta I gave a solution for that problem of @JuanMTB and fixed please check that thank you.
@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
@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 <Wire.h>
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#include <SoftwareSerial.h>
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 <Adafruit_MLX90614.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
#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 <user_interface.h> // 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);
}