Ir ao conteúdo
  • Cadastre-se

ESP8266 - A Pequena Maravilha para Comunicação WIFI


aphawk

Posts recomendados

Pessoal to com uma duvidazinha... Num codigo simples de acionar buttons com o nodemcu programado pela ide do arduino

 

#include <ESP8266WiFi.h>
 
const char* ssid = "Net Virtua 41A";
const char* password = "aablcoa12";
 
int ledPin = D1; // GPIO13
int teste=D2;
int button=D0;
int button1=D4;
boolean status =LOW;
boolean statis= LOW;

String vetor1;
String vetor2;

WiFiServer server(80);
 
void setup() {
  
  Serial.begin(115200);
  delay(10);

  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  pinMode(teste,OUTPUT);
  digitalWrite(teste,LOW);
 pinMode(button,INPUT);
 pinMode(button1,INPUT);
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
void loop() {
   if(digitalRead(button)==LOW){
            delay(300);
            status=!status;
          }
          if(status==HIGH){
            digitalWrite(ledPin,HIGH);
            vetor1="apagado";
          }
          if(status==LOW){
            digitalWrite(ledPin,LOW);
            vetor1="aceso";
          }
           if(digitalRead(button1)==LOW){
            delay(300);
            statis=!statis;
          }
          if(statis==HIGH){
            digitalWrite(teste,HIGH);
            vetor2="apagado";
          }
          if(statis==LOW){
            digitalWrite(teste,LOW);
            vetor2="aceso";
          }
   
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  //while(!client.available()){
    //delay(1);
 // }
 
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
 
  if (request.indexOf("/quarto=ON") != -1)  {
    
    status=HIGH;
  }
  if (request.indexOf("/quarto=OFF") != -1)  {
    
  status=LOW;
  }
  if (request.indexOf("/corredor=ON") != -1)  {
    
           statis=HIGH;
  }
  if (request.indexOf("/corredor=OFF") != -1)  {
   statis=LOW;
  }
  
 
// Set ledPin according to the request
//digitalWrite(ledPin, value);
 
  // Return the response

  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<center>");
  client.print("Eletronica e utilidades:Automacao residencial ");
 
  
  client.println("<br><br>");
  client.println("<a href=\"/quarto=ON\"\"><button>Ligar quarto  </button></a>");
  client.println("<a href=\"/quarto=OFF\"\"><button>Desligar quarto </button></a><br />");
  client.println("<a href=\"/corredor=ON\"\"><button>Ligar corredor </button></a>");
  client.println("<a href=\"/corredor=OFF\"\"><button>Desligar corredor </button></a><br />");    
 client.println(vetor1);
 client.println("<br><br>");
 client.println(vetor2);
 client.println("<br><br>");
 
  
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

Minha duvida é justamente neste trecho:

const char* ssid = "Net Virtua 41A";

const char* password = "aablcoa12";

 

Teria como imputar o ssid e o pasword pelo monitor serial????? Tipo, voce imputa e toda vez que precisar mexer no monitor serial voce digita uma tecla qualquer 'e'  e entra em modo de configuração?

Link para o comentário
Compartilhar em outros sites

@lucianolcoa  É possível sim, porém, tem que atentar para um detalhe: suas variáveis estão como "const char*", eu conheço pouco das variáveis do arduíno, mas no geral, const=constante, não muda, você declara ela e não altera mais, pelo menos não em modo programação.

 

Pra receber qualquer comando pela porta serial e executar determinada função é muito fácil, basta acrescentar as rotinas de recebimento pela serial, se receber... executa. Tem muito exemplo por aí de como fazer isto.

Link para o comentário
Compartilhar em outros sites

Sim Vinicius entenda a minha ideia mais apurada... Eu queria tipo "gravar" as informações de login e senha, e so modifica-las quando for preciso. Tipo, vamos supor que eu faça pra alguem, ahe a pessoa me fala previamente seu login e senha e eu  configuro da minha casa e mando pra ela, sem precisar "compartilhar meu codigo". E a pessoa por um acaso mudou a senha, bastaria a pessoa mesma digitar a nova senha pelo monitor serial. Enteda que teria que tar gravado pois ao "desplugar" do pc as informações tenderiam a se apagar. não?

Link para o comentário
Compartilhar em outros sites

@lucianolcoa

 

Exatamente como eu te disse, é bem provável que usando variáveis do tipo "const" não seja possível alterar em tempo de execução, somente pela programação. 

 

O que pode ser feito é o seguinte, você muda essas variáveis para char* ao invés de const char*, aí sim elas provavelmente aceitarão ser modificadas em tempo de execução. 

 

Pra esse tipo de coisa que você quer fazer, você terá que usar a memória eeprom pra gravar este usuario e esta senha, daí toda vez que o esp inicializar, ele carrega esses dados pegando eles na eeprom e salvando nas variáveis (que não poderão ser do tipo const), daí você cria as rotinas para alteração dessas informações seja pela porta serial, seja por um display alfanumérico, seja pela web, aí vai do que você quer fazer.

Link para o comentário
Compartilhar em outros sites

@lucianolcoa

 

Vou te ajudar a ganhar dinheiro e ficar muito rico, rerere...

 

Faz assim, o esp tem a própria eeprom interna dele, é uma eeprom simulada e não é aconselhável um uso constante, mas no seu caso pode usar sem medo.

 

Código pra gravar na eeprom do ESP:

/*
 * EEPROM Write
 *
 * Stores values read from analog input 0 into the EEPROM.
 * These values will stay in the EEPROM when the board is
 * turned off and may be retrieved later by another sketch.
 */

#include <EEPROM.h>

// the current address in the EEPROM (i.e. which byte
// we're going to write to next)
int addr = 0;

void setup()
{
  EEPROM.begin(512);
}

void loop()
{
  // need to divide by 4 because analog inputs range from
  // 0 to 1023 and each byte of the EEPROM can only hold a
  // value from 0 to 255.
  int val = analogRead(A0) / 4;

  // write the value to the appropriate byte of the EEPROM.
  // these values will remain there when the board is
  // turned off.
  EEPROM.write(addr, val);

  // advance to the next address.  there are 512 bytes in
  // the EEPROM, so go back to 0 when we hit 512.
  // save all changes to the flash.
  addr = addr + 1;
  if (addr == 512)
  {
    addr = 0;
    EEPROM.commit();
  }

  delay(100);
}

 

Código pra ler a eeprom:

 

/*
 * EEPROM Read
 *
 * Reads the value of each byte of the EEPROM and prints it
 * to the computer.
 * This example code is in the public domain.
 */

#include <EEPROM.h>

// start reading from the first byte (address 0) of the EEPROM
int address = 0;
byte value;

void setup()
{
  // initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  EEPROM.begin(512);
}

void loop()
{
  // read a byte from the current address of the EEPROM
  value = EEPROM.read(address);

  Serial.print(address);
  Serial.print("\t");
  Serial.print(value, DEC);
  Serial.println();

  // advance to the next address of the EEPROM
  address = address + 1;

  // there are only 512 bytes of EEPROM, from 0 to 511, so if we're
  // on address 512, wrap around to address 0
  if (address == 512)
    address = 0;

  delay(500);
}

 

 

Código para apagar a eeprom:

/*
 * EEPROM Clear
 *
 * Sets all of the bytes of the EEPROM to 0.
 * This example code is in the public domain.

 */

#include <EEPROM.h>

void setup()
{
  EEPROM.begin(512);
  // write a 0 to all 512 bytes of the EEPROM
  for (int i = 0; i < 512; i++)
    EEPROM.write(i, 0);

  // turn the LED on when we're done
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);
  EEPROM.end();
}

void loop()
{
}

 

 

Todos esses códigos são da biblioteca do arduino chamada EEPROM. Dê uma estudada nela que vai entender melhor, ela é muito simplesinha de compreender.

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@lucianolcoa  Eu usava ela no ESP12F sem problemas nenhum, agora eu uso uma memória eeprom física externa, mas creio que pode usar sem medo, se funcionou no esp12, com certeza vai funcionar também no node. Só fique atento para as posições dos pinos, você poderá ter que alterá-los, nesses exemplos tem comandos para piscar um led indicando a gravação e se o pino estiver incorreto esse led não vai funcionar.

Link para o comentário
Compartilhar em outros sites

@lucianolcoa  A memória interna é muito boa, tando em confiabilidade quanto em velocidade, inclusive ela pode até ser mais rápida que a externa pelo fato da externa ser por comunicação i2c. O problema dela é que usa a memória flash e esta memória não aguenta gravar a mesma quantidade que a externa i2c, mas se você for usar só pra senha como já disse antes, pode ficar tranquilo, só não pode usar ela pra ficar gravando dados de sensores por exemplo, senão arrebenta ela.

 

Se mesmo assim quiser usar a memória externa, muda muito pouca coisa nos códigos, o que muda mais é a parte de conexões de fios(eletrônica). Naqueles exemplos que postei lá mais no início, tem isso tudo: login na página web, gravação da senha web, ips, nome e senha da rede wifi na eeprom... já tá tudo prontinho. Pesquisa lá.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Papibakigrafo

 

Então já vou deixar o dever de casa rerere...

 

O FSBrouser tem que estar funcionando. 

Eu fiz pequenas alterações no FSBrouser em anexo, pata podermos testar, aqui ele está funcionando 100%. Grava ele no ESP, depois de gravado, faça os seguintes testes:

 

Na tela da porta serial, ao ligar o ESP, tem que aparecer a lista de arquivos carregados na SPIFFS, e também o ip que ele está operando, se não aparecer a lista com os arquivos, não se preocupe por enquanto, de imediato precisa saber se o ESP está mesmo online e operando, pra isto entra com o IP dele seguido de /tst (exemplo: 192.168.0.100/tst), deverá aparecer no seu brouser a frase: "Teste de pagina sem FS ok!!", se não aparecer, seu sketch não está rodando ou tem alguma coisa errada no seu sistema de gravação, porque aqui está normal.

 

Se a mensagem "Teste de pagina sem FS ok!!" apareceu, significa que com o ESP e o sketch está tudo ok.

 

Agora sim, vamos nos ater a SPIFFS, se a lista de arquivos aparece no monitor serial, está tudo certo com ela , tem uns arquivos que DEVEM constar nesta lista e se você tiver feito a parte de upload corretamente, os nomes deles aparecerão:

 

> edit.htm.gz

> favicon.ico

> graphs.js.gz

e se não me engano tem também o arquivo ace.js(esse eu não tenho certeza)

 

Se estes arquivos estão na lista, agora podemos acessar o gerenciador de arquivos (exemplo: 192.168.0.100/edit), deverá aparecer uma tela onde você pode fazer upload de novos arquivos entre outras coisas, eu só uso esta tela para upload e também para deletar arquivos, mais nada, eu edito meus arquivos no meu pc, entro nesta tela de gerenciamento e faço upload deles para a SPIFFS.

 

Caso estes arquivos não estejam na lista, ou não tenha nenhum arquivo na lista, significa que não foram copiados ainda, você pode tentar reenviar, colocando eles na pasta data e clicando em ferramentas/ESP8266 Sketch data upload, deve ser observado se o processo vai chegar aos 100%, caso não chegue, não enviou.

 

Comigo já aconteceu de enviar, normal, chegando o processo nos 100% direitinho, mas os arquivos não aparecem na lista mesmo assim, daí eu fiz um outro procedimento antes de enviar o Sketch data upload, eu formatei a memória da seguinte maneira:

 

Na função setup()

depois da instrução SPIFFS.begin();

Insira a instrução para formatá-la:

 

DBG_OUTPUT_PORT.printf("Formatando a memória SPIFFS");
SPIFFS.format();
Serial.println("SPIFFS formatado");

 

Esse processo demora, espera terminar e em seguida pode fazer o Sketch data upload novamente, só não se esqueça de desativar esta instrução e regravar o sketch antes de fazer o data upload.

 

 

Para executar os testes acima, use este sketch:

ps: não se esqueça de colocar o nome e senha da sua rede!

/* 
  FSWebServer - Example WebServer with SPIFFS backend for esp8266
  Copyright (c) 2015 Hristo Gochkov. All rights reserved.
  This file is part of the ESP8266WebServer library for Arduino environment.
 
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.
  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.
  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  
  upload the contents of the data folder with MkSPIFFS Tool ("ESP8266 Sketch Data Upload" in Tools menu in Arduino IDE)
  or you can upload the contents of a folder if you CD in that folder and run the following command:
  for file in `ls -A1`; do curl -F "file=@$PWD/$file" esp8266fs.local/edit; done
  
  access the sample web page at http://esp8266fs.local
  edit the page by going to http://esp8266fs.local/edit
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <FS.h>

#define DBG_OUTPUT_PORT Serial

const char* ssid = "Sua rede";
const char* password = "Senha da sua rede";
const char* host = "esp8266fs";

ESP8266WebServer server(80);
//holds the current upload
File fsUploadFile;

//format bytes
String formatBytes(size_t bytes){
  if (bytes < 1024){
    return String(bytes)+"B";
  } else if(bytes < (1024 * 1024)){
    return String(bytes/1024.0)+"KB";
  } else if(bytes < (1024 * 1024 * 1024)){
    return String(bytes/1024.0/1024.0)+"MB";
  } else {
    return String(bytes/1024.0/1024.0/1024.0)+"GB";
  }
}

String getContentType(String filename){
  if(server.hasArg("download")) return "application/octet-stream";
  else if(filename.endsWith(".htm")) return "text/html";
  else if(filename.endsWith(".html")) return "text/html";
  else if(filename.endsWith(".css")) return "text/css";
  else if(filename.endsWith(".js")) return "application/javascript";
  else if(filename.endsWith(".png")) return "image/png";
  else if(filename.endsWith(".gif")) return "image/gif";
  else if(filename.endsWith(".jpg")) return "image/jpeg";
  else if(filename.endsWith(".ico")) return "image/x-icon";
  else if(filename.endsWith(".xml")) return "text/xml";
  else if(filename.endsWith(".pdf")) return "application/x-pdf";
  else if(filename.endsWith(".zip")) return "application/x-zip";
  else if(filename.endsWith(".gz")) return "application/x-gzip";
  return "text/plain";
}

bool handleFileRead(String path){
  DBG_OUTPUT_PORT.println("handleFileRead: " + path);
  if(path.endsWith("/")) path += "index.htm";
  String contentType = getContentType(path);
  String pathWithGz = path + ".gz";
  if(SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)){
    if(SPIFFS.exists(pathWithGz))
      path += ".gz";
    File file = SPIFFS.open(path, "r");
    size_t sent = server.streamFile(file, contentType);
    file.close();
    return true;
  }
  return false;
}

void handleFileUpload(){
  if(server.uri() != "/edit") return;
  HTTPUpload& upload = server.upload();
  if(upload.status == UPLOAD_FILE_START){
    String filename = upload.filename;
    if(!filename.startsWith("/")) filename = "/"+filename;
    DBG_OUTPUT_PORT.print("handleFileUpload Name: "); DBG_OUTPUT_PORT.println(filename);
    fsUploadFile = SPIFFS.open(filename, "w");
    filename = String();
  } else if(upload.status == UPLOAD_FILE_WRITE){
    //DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize);
    if(fsUploadFile)
      fsUploadFile.write(upload.buf, upload.currentSize);
  } else if(upload.status == UPLOAD_FILE_END){
    if(fsUploadFile)
      fsUploadFile.close();
    DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize);
  }
}

void handleFileDelete(){
  if(server.args() == 0) return server.send(500, "text/plain", "BAD ARGS");
  String path = server.arg(0);
  DBG_OUTPUT_PORT.println("handleFileDelete: " + path);
  if(path == "/")
    return server.send(500, "text/plain", "BAD PATH");
  if(!SPIFFS.exists(path))
    return server.send(404, "text/plain", "FileNotFound");
  SPIFFS.remove(path);
  server.send(200, "text/plain", "");
  path = String();
}

void handleFileCreate(){
  if(server.args() == 0)
    return server.send(500, "text/plain", "BAD ARGS");
  String path = server.arg(0);
  DBG_OUTPUT_PORT.println("handleFileCreate: " + path);
  if(path == "/")
    return server.send(500, "text/plain", "BAD PATH");
  if(SPIFFS.exists(path))
    return server.send(500, "text/plain", "FILE EXISTS");
  File file = SPIFFS.open(path, "w");
  if(file)
    file.close();
  else
    return server.send(500, "text/plain", "CREATE FAILED");
  server.send(200, "text/plain", "");
  path = String();
}

void handleFileList() {
  if(!server.hasArg("dir")) {server.send(500, "text/plain", "BAD ARGS"); return;}
  
  String path = server.arg("dir");
  DBG_OUTPUT_PORT.println("handleFileList: " + path);
  Dir dir = SPIFFS.openDir(path);
  path = String();

  String output = "[";
  while(dir.next()){
    File entry = dir.openFile("r");
    if (output != "[") output += ',';
    bool isDir = false;
    output += "{\"type\":\"";
    output += (isDir)?"dir":"file";
    output += "\",\"name\":\"";
    output += String(entry.name()).substring(1);
    output += "\"}";
    entry.close();
  }
  
  output += "]";
  server.send(200, "text/json", output);
}

void tst(){
    server.send(200, "text/html", "Teste de pagina sem FS ok!!");
}


void setup(void){
  DBG_OUTPUT_PORT.begin(115200);
  DBG_OUTPUT_PORT.print("\n");
  SPIFFS.begin();
  {
    Dir dir = SPIFFS.openDir("/");
    while (dir.next()) {    
      String fileName = dir.fileName();
      size_t fileSize = dir.fileSize();
      DBG_OUTPUT_PORT.printf("FS File: %s, size: %s\n", fileName.c_str(), formatBytes(fileSize).c_str());
    }
    DBG_OUTPUT_PORT.printf("\n");
  }
  

  //WIFI INIT
  DBG_OUTPUT_PORT.printf("Connecting to %s\n", ssid);
  if (String(WiFi.SSID()) != String(ssid)) {
    WiFi.begin(ssid, password);
  }
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    DBG_OUTPUT_PORT.print(".");
  }
  DBG_OUTPUT_PORT.println("");
  DBG_OUTPUT_PORT.print("Connected! IP address: ");
  DBG_OUTPUT_PORT.println(WiFi.localIP());

  MDNS.begin(host);
  DBG_OUTPUT_PORT.print("Open http://");
  DBG_OUTPUT_PORT.print(host);
  DBG_OUTPUT_PORT.println(".local/edit to see the file browser");
  
  
  //SERVER INIT
  //list directory
  server.on("/tst", tst);
  server.on("/list", HTTP_GET, handleFileList);
  //load editor
  server.on("/edit", HTTP_GET, [](){
    if(!handleFileRead("/edit.htm")) server.send(404, "text/plain", "FileNotFound");
  });
  //create file
  server.on("/edit", HTTP_PUT, handleFileCreate);
  //delete file
  server.on("/edit", HTTP_DELETE, handleFileDelete);
  //first callback is called after the request has ended with all parsed arguments
  //second callback handles file uploads at that location
  server.on("/edit", HTTP_POST, [](){ server.send(200, "text/plain", ""); }, handleFileUpload);

  //called when the url is not defined here
  //use it to load content from SPIFFS
  server.onNotFound([](){
    if(!handleFileRead(server.uri()))
      server.send(404, "text/plain", "FileNotFound");
  });

  //get heap status, analog input value and all GPIO statuses in one json call
  server.on("/all", HTTP_GET, [](){
    String json = "{";
    json += "\"heap\":"+String(ESP.getFreeHeap());
    json += ", \"analog\":"+String(analogRead(A0));
    json += ", \"gpio\":"+String((uint32_t)(((GPI | GPO) & 0xFFFF) | ((GP16I & 0x01) << 16)));
    json += "}";
    server.send(200, "text/json", json);
    json = String();
  });
  server.begin();
  DBG_OUTPUT_PORT.println("HTTP server started");

}
 
void loop(void){
  server.handleClient();
}

 

 

É isso aí, se mesmo assim não der certo, dá um grito pra tentarmos descobrir o problema. 

 

Boa sorte.

 

 

 

 

 

 

 

 

 

 

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

20 horas atrás, ViniciusKruz disse:

Então já vou deixar o dever de casa rerere...

 

O FSBrouser tem que estar funcionando. 

Eu fiz pequenas alterações no FSBrouser em anexo, pata podermos testar, aqui ele está funcionando 100%. Grava ele no ESP, depois de gravado, faça os seguintes testes:

 

Na tela da porta serial, ao ligar o ESP, tem que aparecer a lista de arquivos carregados na SPIFFS, e também o ip que ele está operando, se não aparecer a lista com os arquivos, não se preocupe por enquanto, de imediato precisa saber se o ESP está mesmo online e operando, pra isto entra com o IP dele seguido de /tst (exemplo: 192.168.0.100/tst), deverá aparecer no seu brouser a frase: "Teste de pagina sem FS ok!!", se não aparecer, seu sketch não está rodando ou tem alguma coisa errada no seu sistema de gravação, porque aqui está normal.

 

Se a mensagem "Teste de pagina sem FS ok!!" apareceu, significa que com o ESP e o sketch está tudo ok.

 

Peguei esse Sktch e upei no meu ESP... ai apareceu isso:

 

NOT.jpgserial.jpg

 

 

Link para o comentário
Compartilhar em outros sites

Ok, seu sketch está ok e operando perfeitamente, está faltando fazer o upload dos arquivos que te falei, que são os arquivos que permitem o acesso à SPIFFS: 

21 horas atrás, ViniciusKruz disse:

> edit.htm.gz

> favicon.ico

> graphs.js.gz

e se não me engano tem também o arquivo ace.js(esse eu não tenho certeza)

 

Eles estão dentro da sua pasta data?

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Eles ficam dentro da pasta data do exemplo FSBrowser, estou disponibilizando eles, você vai descompactar o arquivo, copiar os arquivos para a pasta data dentro da pasta do seu sketch, feito isso, refaça o Sketch Data Upload, que eles serão enviados para o ESP.

 

data.rar

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Certo, agora sim chegamos à sua primeira dúvida: Como acesso os arquivos na SPIFFs?

 

A primeira coisa é lógico, entre no gerenciador de arquivos: (192.168.0.100/edit) e faça o upload dos seus arquivos: 

 

Cica em "Escolher arquivo" , seleciona ele no seu pc, e depois clica em "upload" no gerenciador, desta forma o arquivo irá aparecer na lista à esquerda da tela. 

 

Agora para passar a ter acesso a este arquivo, precisa mexer no sketch:

Supondo que você quer dar acesso ao arquivo "style.css", você pega esta instrução:

server.on("/style.css", HTTP_GET, [](){
    if(!handleFileRead("/style.css")) server.send(404, "text/plain", "FileNotFound");
  });

 e coloca no setup do sketch, isso será necessário para cada arquivo salvo na SPIFS.

 

 

adicionado 9 minutos depois

@Papibakigrafo

 

Não consegui te mencionar, deu erro aqui, segue a resposta novamente, agora com a menção:

 

8 minutos atrás, ViniciusKruz disse:

Certo, agora sim chegamos à sua primeira dúvida: Como acesso os arquivos na SPIFFs?

 

A primeira coisa é lógico, entre no gerenciador de arquivos: (192.168.0.100/edit) e faça o upload dos seus arquivos: 

 

Cica em "Escolher arquivo" , seleciona ele no seu pc, e depois clica em "upload" no gerenciador, desta forma o arquivo irá aparecer na lista à esquerda da tela. 

 

Agora para passar a ter acesso a este arquivo, precisa mexer no sketch:

Supondo que você quer dar acesso ao arquivo "style.css", você pega esta instrução:


server.on("/style.css", HTTP_GET, [](){
    if(!handleFileRead("/style.css")) server.send(404, "text/plain", "FileNotFound");
  });

 e coloca no setup do sketch, isso será necessário para cada arquivo salvo na SPIFS.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

4 minutos atrás, Papibakigrafo disse:

handleFileRead

 

Esta função não foi declarada no seu sketch oficial, faz o seguinte, pega todas as funções do FSBrowser e copia no seu código que vai dar certo.

 

Talvez o mais indicado seria o contrário, pegar suas funções e copiar no FSBrowser, certamente você teria menos problemas.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Papibakigrafo consegui usar seu codigo, mas nao consigo achar as configurações dele, como voce entra nelas? grato qualquer ajuda. Agora consegui entrar, so nao consigo adicionar mais de um botao, sempre que tendto adicionar o segundo ele trava por algum motivo =/

Esqueça o que pedi Pabi, consegui usar conforme gostaria agora. Uma ultima duvida, voce importa algum ajax que porventura esta em seu servidor? da bronca se voce desligar seu pc ahe? posso usar sem grilos?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!