Estoy implementando Firebase a un proyecto y tengo este error al implementar
#include
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.