Nombre de red y contraseña de la wifi que crea: ArduinoBlocks_AP y 0123456789.
#include <WiFi.h>
#include <WebServer.h>
#include "FS.h"
#include "SD.h"
#include "SPI.h"
const int chipSelect = SS;//10;
const char espwifi_ap_ssid[]="ArduinoBlocks_AP";
const char espwifi_ap_pass[]="0123456789";
IPAddress espwifi_ap_ip(192,168,2,1);
IPAddress espwifi_ap_sn(255,255,255,0);
IPAddress espwifi_ap_gw(192,168,2,1);
WebServer http_server;
File sd_file;
void espwifi_ap_setup(){
if(espwifi_ap_pass!=""){
WiFi.softAP(espwifi_ap_ssid, espwifi_ap_pass);
}
else{
WiFi.softAP(espwifi_ap_ssid);
}
WiFi.softAPConfig(espwifi_ap_ip, espwifi_ap_gw, espwifi_ap_sn);
delay(100);
}
String fnc_sd_content_esp32ks(String _f)
{
String cont="";
sd_file = SD.open(String("/")+_f, FILE_READ);
if(sd_file)
{
while(sd_file.available())
{
cont += sd_file.readStringUntil('\n');
}
sd_file.close();
}
return cont;
}
void http_server_on_abrir()
{
http_server.send(200,String("text/html"),fnc_sd_content_esp32ks(String("archivo_01.csv")));
}
void http_server_on_descargar()
{
http_server.send(200,String("text/csv"),fnc_sd_content_esp32ks(String("archivo_01.csv")));
}
void _http_server_on__NOTFOUND__(){
http_server.send(200,String("text/html"),String("CODIGO NO VALIDO"));
}
void http_server_on_(){
http_server.send(200,String("text/html"),String("Conectado Servidor Web ESP32"));
}
//-----------------------------------------funciones servidor Web---FIN
//-----------------------------------------funciones comunicacion SD
void readFile(fs::FS &fs, const char * path) //funcion para leer un archivo
{
Serial.println("READFILE.....");
Serial.printf("Reading file: %s\n", path);
File file = fs.open(path);
if(!file){
Serial.println("Failed to open file for reading");
return;
}
Serial.print("Read from file: ");
while(file.available())
{
Serial.write(file.read());
}
file.close();
}
void writeFile(fs::FS &fs, const char * path, const char * message) //funcion para escribir en un archivo, borra lo anterior. Escribe solo texto
{
File file = fs.open(path, FILE_WRITE);
if(!file){
Serial.println("Failed to open file for writing");
return;
}
if(file.print(message))
{
}
else
{
Serial.println("Write failed");
}
file.close();
}
void incor_datoln(fs::FS &fs, const char * path, const char * message) //funcion para añadir datos a un archivo en una linea nueva, escribe solo texto
{
File file = fs.open(path, FILE_APPEND);
if(!file){
Serial.println("Failed to open file for appending");
return;
}
if(file.println(message))
{
} else {
Serial.println("Append failed");
}
file.close();
}
void incor_dato(fs::FS &fs, const char * path, const char * message) //funcion para añadir datos a un archivo en una linea nueva, escribe solo texto
{
File file = fs.open(path, FILE_APPEND);
if(!file){
Serial.print("Failed to open file for appending");
return;
}
if(file.print(message)){
} else {
Serial.println("Append failed");
}
file.close();
}
void incor_numln(fs::FS &fs, const char * path, int message) //funcion para añadir datos a un archivo en una linea nueva, escribe variables
{
File file = fs.open(path, FILE_APPEND);
if(!file){
Serial.println("Failed to open file for appending");
return;
}
if(file.println(message))
{
} else {
Serial.println("Append failed");
}
file.close();
}
void incor_num(fs::FS &fs, const char * path, int message) //funcion para añadir datos a un archivo en una linea nueva, escribe variables
{
File file = fs.open(path, FILE_APPEND);
if(!file){
Serial.print("Failed to open file for appending");
return;
}
if(file.print(message)){
} else {
Serial.println("Append failed");
}
file.close();
}
//-----------------------------------------funciones comunicacion SD---FIN
void setup()
{
Serial.begin(115200);
Serial.flush();
while(Serial.available()>0)Serial.read();
digitalWrite(2, LOW);
//espwifi_setup();
espwifi_ap_setup();
http_server.begin(80);
Serial.println(WiFi.localIP().toString());
http_server.on("/abrir",HTTP_GET,http_server_on_abrir);
http_server.on("/descargar",HTTP_GET,http_server_on_descargar);
http_server.onNotFound(_http_server_on__NOTFOUND__);
http_server.on("/",HTTP_GET,http_server_on_);
delay(2000);
if(!SD.begin(SS)){
Serial.println("Card Mount Failed");
return;
}
uint8_t cardType = SD.cardType();
if(cardType == CARD_NONE){
Serial.println("No SD card attached");
return;
}
writeFile(SD, "/archivo_01.csv", "NUMERO;TEMPERATURA;HUMEDAD");
incor_datoln(SD, "/archivo_01.csv", "");
delay(2000);
readFile(SD, "/archivo_01.csv");
delay(2000);
}
unsigned long tiempo;
int x=1;
int temperatura;
int humedad;
int numero;
void loop()
{
http_server.handleClient();
if((millis()-tiempo)>=800)
{
tiempo=millis();
if(x<=5)
{
temperatura=42+2*x;
humedad=75+x;
}
if(x>5)
{
temperatura=70-2*x;
humedad=90-2*x;
}
numero=numero+1;
incor_num(SD, "/archivo_01.csv", numero);
incor_dato(SD, "/archivo_01.csv", ";");
incor_num(SD, "/archivo_01.csv", temperatura);
incor_dato(SD, "/archivo_01.csv", ";");
incor_num(SD, "/archivo_01.csv", humedad);
incor_datoln(SD, "/archivo_01.csv", ";");
x=x+1;
if(x>10)
{
x=1;
readFile(SD, "/archivo_01.csv");
}
}
delay(1000);
}