Buenas dias.
EStoy utilizando esta libreria,
name=ESP8266 Firebase
version=1.1.0
author=Rupak Poddar
maintainer=Rupak Poddar poddarrupak2808@gmail.com
sentence=Library for ESP8266 to read and write data to Firebase Realtime Database.
paragraph=A reliable low latency library to read, write, update and delete data from Firebase Realtime Database.
category=Communication
url=GitHub - Rupakpoddar/ESP8266Firebase: Arduino library to read and write data to Google Firebase Realtime Database.
architectures=esp8266
para gestionar datos desde un ESP8266 y arduino.
Cuando envio datos a firebase aparentemente va correcto.
El codigo es el siguiente:
#include "FirebaseESP8266.h"
#include <ESP8266WiFi.h>
#include <ArduinoJson.hpp>
#include <ArduinoJson.h>
const char* ssid = "****";
const char* password = "****";
// FIREBASE
#define FIREBASE_HOST "****"
#define FIREBASE_AUTH "****"
FirebaseData firebaseData;
String path1 = "/control";
String path0 = "/riego";
StaticJsonDocument<300> doc;
//
#include "DHTesp.h"
#define sensoluz 5
#define DHTpin 14 // D5
#define releagua 12 // D6
#define relevent 13 // D7
#define releluz 2 //D2
#define SensorPin A0 // A0
String val1 ="";
//
String estaluz="";
String estatie="";
String ves ="";
String jsonStr = "";
String valorjson="";
String valor ="";
String vzona ="";
String vtiempo="";
String vestado="";
String vparada="";
String a ="";
String b ="";
String c ="";
unsigned int lvalor = valor.length();
float temperature =0;
//
DHTesp dht;
int luz = 0;
unsigned long hmedida =0;
//
// Tiempo entre lecturas
unsigned long tiempo1=0;
unsigned long tiempo2=0;
unsigned long entreseg = 0;
// Fin tiempo entre lecturas
int contadatos = 0; //
int lectura;
String temp;
const int dry = 595; //
const int wet = 239; //
const int AirValue = 3620; //
const int WaterValue = 1680; //
int soilMoistureValue = 0;
int soilmoisturepercent=0;
int vrel=0; // rele bomba apagado
int vven=0; // rele ventilador apagado
boolean priemavez = true;
boolean automod = false;
// Medias de control temepratrura, humedad, humedad tierra
int stemp= 50; // temperatura media
int shuma=50; // humedad ambiente
int shumt=50; // humedad tierra
boolean v1,v2,v3 = false;
void setup()
{
pinMode(4, INPUT); // D2
pinMode(2, OUTPUT); // D4
pinMode(5, INPUT); // D1
Serial.begin(115200);
// RED
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100); //500
Serial.print(".");
}
Serial.println(WiFi.localIP());
Serial.println();
Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)\tHeatIndex (C)\t(F)");
dht.setup(DHTpin, DHTesp::DHT11); // DHT11
lectura = 0;
temp=" ";
tiempo1 = millis(); //Defino el incio de tiempos
pinMode(releagua, OUTPUT) ;
pinMode(relevent, OUTPUT) ;
pinMode(releluz, OUTPUT) ;
digitalWrite(releagua, LOW);
digitalWrite(relevent, LOW);
digitalWrite(releluz, LOW);
delay(5000);
digitalWrite(releagua, HIGH);
digitalWrite(relevent, HIGH);
digitalWrite(releluz, HIGH);
// Firebase
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
Firebase.reconnectWiFi(true);
Firebase.setReadTimeout(firebaseData, 1000 * 60);
Firebase.setwriteSizeLimit(firebaseData, "tiny");
val1= Firebase.getString(firebaseData, path0+"/ariego");
Serial.println("El valor de ariego es: "+ val1);
//
}
void regar(){
// V1
int lhumedad = digitalRead(4);
if (lhumedad == 1){
digitalWrite(releagua, LOW);
} else {
// Serial.println("Fin riego");
}
}
void ventilar(){
// v2
float humidity = dht.getHumidity();
if (humidity == 1){
digitalWrite(relevent, LOW);
} else {
//Serial.println("Fin ventilo");
}
}
void luces(){
// v3
int luz = digitalRead(5); // Led ON
if (luz == HIGH){
digitalWrite(releluz, LOW);
} else {
digitalWrite(releluz, HIGH);
}
}
void loop(){
tiempo2= millis();
if(tiempo2 > (tiempo1 + 360000)){
tiempo1= millis();
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
//sensor humedad tierra
float htierra = analogRead(SensorPin);
int humedad_tierra = map(htierra, wet, dry, 100, 0);
Serial.println(humedad_tierra);
//
temp = String (humidity,1);
temp.concat(" %humedad ambiente;");
temp.concat(temperature);
temp.concat("º de temperatura ambiente;");
temp.concat(humedad_tierra);
temp.concat("% humedad de suelo;");
Serial.println(temp);
int lhumedad = digitalRead(4);
if (lhumedad== 1){
Serial.println("Voy a regar");
} else {
Serial.println("No Riego ");
digitalWrite(releagua, HIGH);
}
luz = digitalRead(5); // Led ON
if (luz == HIGH) {
Serial.println("No hay luz");
} else {
Serial.println("Si hay luz");
}
humidity = dht.getHumidity();
temperature = dht.getTemperature();
htierra = analogRead(SensorPin);
humedad_tierra = map(htierra, wet, dry, 100, 0);
//
temp = String (humidity,1);
temp.concat("% humedad ambiente; ");
temp.concat(temperature);
temp.concat("º de temperatura ambiente; ");
temp.concat(htierra);
temp.concat("% humedad de suelo; ");
Serial.println(temp);
luz = digitalRead(2); // Led ON
if (luz == HIGH) {
Serial.println("No hay luz");
} else {
Serial.println("Si hay luz");
}
int lht = digitalRead(4);
if (lht == HIGH) {
estatie="Suelo seco";
} else {
estatie="Suelo humedo";
}
ves = Firebase.setString(firebaseData, path0+"/datos",temp);
ves = Firebase.setString(firebaseData, path0+"/humeamb",String(humidity,3));
ves = Firebase.setString(firebaseData, path0+"/temperatura",String(temperature,3));
ves = Firebase.setString(firebaseData, path0+"/luz", estaluz);
ves = Firebase.setString(firebaseData, path0+"/humetierradig", estatie);
val1= Firebase.getString(firebaseData, path0+"/datos");
Serial.println("El valor de datos es: "+ String(val1));
} // fin comprobacion del tiempo
regar();
ventilar();
luces();
}
Envio esto:
datos
:"56.0% humedad ambiente; 28.70º de temperatura ambiente; 1024.00% humedad de suelo; "
pero si quiero leer de firebase con:
val1= Firebase.getString(firebaseData, path0+"/datos");
me devuelve esto:
El valor de datos es: (valor no visible cuando edito este post)
¿Que estoy haciendo mal?.
Gracias