Error implementando libreria Firebase en esp8266 #include <addons/RTDBHelper.h>

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

Estoy implementando Firebase a un proyecto y tengo este error al implementar #include en el archivo WeatherStation.h

Este es el错误:

c:/users/diego/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\WeatherStation\WeatherStation.cpp.o: in function `_Z11printResultR10StreamData':
C:\Program Files (x86)\Arduino\libraries\Firebase_ESP8266_Client\src/addons/RTDBHelper.h:142: multiple definition of `_Z11printResultR10StreamData'; sketch\WeatherStation.ino.cpp.o:C:\Program Files (x86)\Arduino\libraries\Firebase_ESP8266_Client\src/addons/RTDBHelper.h:142: first defined here
c:/users/diego/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\WeatherStation\WeatherStation.cpp.o: in function `_Z11printResultR12FirebaseData':
C:\Program Files (x86)\Arduino\libraries\Firebase_ESP8266_Client\src/addons/RTDBHelper.h:26: multiple definition of `_Z11printResultR12FirebaseData'; sketch\WeatherStation.ino.cpp.o:C:\Program Files (x86)\Arduino\libraries\Firebase_ESP8266_Client\src/addons/RTDBHelper.h:26: first defined here
collect2.exe: error: ld returned 1 exit status
Se encontraron varias bibliotecas para "SD.h"
Usado: C:\Users\DIEGO\AppData\Local\
Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD
 No usado: C:\Program Files (x86)\Arduino\libraries\SD
exit status 1
Error compilando para la tarjeta LOLIN(WEMOS) D1 mini Pro.

Este es el codigo de WeatherStation.ino:

#include <WeatherStation.h>
const char* ssid = "asd";
const char* password = "12345asd";
uint8_t sensorType = DHT22;   
int pinSensor = 2;

WeatherStation WeatherStation(pinSensor,sensorType); // se instancia el objeto
void setup() {  
  Serial.begin(9600); 
   WeatherStation.setupWeatherStation(ssid, password);
}
void loop() { 
  WeatherStation.captureData(); 
  WeatherStation.uploadDataFirebase();
}

Este es el codigo del archivo WeatherStation.h:

#ifndef WeatherStation_h
#define WeatherStation_h

#include <Arduino.h>
#if defined(ESP32)
#include <WiFi.h>
#include <FirebaseESP32.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <FirebaseESP8266.h>    
#endif

#include <addons/RTDBHelper.h>

#define DATABASE_URL "plataforma-iot-aa10d-default-rtdb.firebaseio.com"

#include <DHT.h>     
#include <ArduinoJson.h> 

class WeatherStation{  
    int humidity;
    int temperature;    
    const char* WIFI_SSID;
    const char* WIFI_PASSWORD;
    public:
        WeatherStation(int pinSensor, uint8_t sensorType); // constructor             
        void captureData(); // metodo
        void connectModeStation(const char* ssid, const char* password);
        void setupWeatherStation(const char* ssid, const char* password);
        void firebaseSetupConfig();
        void uploadDataFirebase();        
    private:
        DHT dht;    
        FirebaseData fbdo;
        FirebaseAuth auth;
        FirebaseConfig config;      
};
#endif

Este es el codigo del archivo WeatherStation.cpp:

#include <WeatherStation.h>

WeatherStation::WeatherStation(int pinSensor, uint8_t sensorType): dht(pinSensor, sensorType) {}
void WeatherStation::captureData()
{
    dht.begin();          
    delay(2000);
    humidity = dht.readHumidity();  
    temperature = dht.readTemperature();       
    Serial.println(); 
    Serial.print("Temperature: ");
    Serial.println(temperature);
    Serial.print("Humidity: ");
    Serial.println(humidity);   
}
void WeatherStation::connectModeStation(const char* ssid, const char* password)
{                   
    WiFi.mode(WIFI_STA);
    WIFI_SSID = ssid;
    WIFI_PASSWORD = password;
    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    Serial.print("connecting");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        delay(200);
    }
    Serial.println();
    Serial.println("connected: ");      
}

void WeatherStation::setupWeatherStation(const char* ssid, const char* password)
{
   connectModeStation(ssid, password);
   firebaseSetupConfig();
}

void WeatherStation::firebaseSetupConfig()
{                       
    config.database_url = DATABASE_URL;
    config.signer.test_mode = true; 
    Firebase.reconnectWiFi(true);
    Firebase.begin(&config, &auth); 
}
void WeatherStation::uploadDataFirebase()
{                                                           
    if (Firebase.setFloat(fbdo, "sensores/temperature", temperature)){         
        Serial.println("Temperatura insertada correctamente");     
    }else {    
        Serial.print("ERROR insertando temperatura... failed, reason: ");
        Serial.println(fbdo.errorReason().c_str());
    }       
    
    if (Firebase.setFloat(fbdo, "sensores/humidity", humidity)){         
        Serial.println("Humedad insertada correctamente");     
    }else {    
        Serial.print("ERROR insertando humedad... failed, reason: ");
        Serial.println(fbdo.errorReason().c_str());
    }       
}

Estoy utilizando la libreria Firebase ESP8266 Client By Mobitz version 4.3.9 y Mobitz 的 Firebase ESP32 客户端版本 4.3.9

Estoy empezando a trabajar con firebase y espero poder entender los ejemplos de la libreria, pero cuando implemento esta linea de codigo:

 #include <addons/RTDBHelper.h>

en el archivo WeatherStation.h 我马卡错误。 Por otra parte cuando implemento todo el codigo en un solo archivo .ino este error deja de aparecer.

c++ firebase arduino esp8266 nodemcu
© www.soinside.com 2019 - 2024. All rights reserved.