bool estado = false;
// Estructura de almacenamiento de datos de los sectores
struct Sector {
float temperatura, humedad, pH;
bool estado_sector = false, estado_riego;
} Sector [10];
String PathSector = "/UsersData/dZ5wEC3Q5FfrtajG9wsWdWXG9uZ2/Sector";
String Path ;
void setup() {
Serial.begin(115200);
byte entrada[5] = {13, 14};
for (byte i = 0; i < sizeof(entrada) / sizeof(entrada[0]); i++) {
pinMode(entrada[i], INPUT);
}
Serial.println("URL SECTOR");
for(byte i = 0; i<10; i++ ){
ExtPath(i);
Serial.println(Path);
}
}
void loop() {
String dato = "";
if (Serial.available() && digitalRead(13) == 1 ) {
while (Serial.available()) {
char c = Serial.read();
if (c == '\0') {
break;
}
dato += c;
}
estado = true;
}
if(Serial.available() && digitalRead(13) == 0 ){
limpiarEntradaSerial();
}
if(estado){
if(parcela(dato)){
extraccion(dato);
Serial.println("Exito");
}else{
Serial.println("Error de dato");
}
Serial.println("Datos ingresados "+dato);
estado= false;
}
if(digitalRead(14) == 1){
Serial.println("DATOS DE SECTORES\n");
for(byte i =0; i<10; i++){
if(Sector[i].estado_sector){
Serial.print("Sector ");
Serial.println(i+1);
Serial.print("Temperatura: ");
Serial.println(Sector[i].temperatura);
Serial.print("Humedad: ");
Serial.println(Sector[i].humedad);
Serial.print("pH: ");
Serial.println(Sector[i].pH);
Serial.print("Estado Riego: ");
if(Sector[i].estado_riego){
Serial.println("ENCENDIDO");
}
else{
Serial.println("APAGADO");
}
Serial.println("");
}
else{
Serial.print("Sector ");
Serial.print(i+1);
Serial.println(" APAGADO");
}
}
while(digitalRead(14)==1){delay(10);}
}
delay(10);
}
//||||||||||||||||||| FUNCIONES |||||||||||||||||
void ExtPath(int sector) { // EXTRACCION DE ENLACE DEL SECTOR
Path = "";
Path = PathSector;
Path += sector;
}
bool parcela(String contenido ){ //VERIFICACION DE DATOS POR COM SERIAL
for(byte i= 0; i<2; i++){
if(!isdigit(contenido[i])){
return false;
}
}
return true;
}
void limpiarEntradaSerial() { //LIMPIAR ENTRADA SERIAL
while (Serial.available() > 0) {
char c = Serial.read();
}
}
void extraccion(String Datos){ // EXTRACCION DE DATOS
char ext [5];
byte indice = 0;
for(byte i=0; i<2; i++){ //extrae los primeros dos digitos del sector
ext [i] = Datos[i];
}
indice = atoi(ext); // Conviert de cadena a entero (Sector)
lvariable(ext); // Limpia el arreglo
Sector[indice-1].estado_sector = true;
/* 01 30.4 45.6 67.9 1*/
Sector[indice-1].temperatura = lecturaFloat (3, 6, ext, Datos);
Sector[indice-1].humedad = lecturaFloat (8, 12, ext, Datos);
Sector[indice-1].pH = lecturaFloat (13, 16, ext, Datos);
Sector[indice-1].estado_riego = ((Datos[18] - '0') == 1 ) ;
return;
}
void lvariable(char* ext){ //Limpia el arreglo
for(int i= 0; i<5; i++){
ext[i] = '\0';
}
}
float lecturaFloat (int com , int lim, char* ext, String Datos){
for(int i = com; i<lim; i++){
ext [i-com] = Datos[i];
}
float valor = atof(ext);
return valor ;
}