[RISOLTO]TinyWebServer BlinkLed .... a me non funziona !!

Buongiorno,
sto provando a far funzionare l'esempio blinkled della libreria TinyWebServer ma senza risultati.

Ho
Una scheda arduino uno
Una shield ethernet sainsmart
Una sd da 2 gb formattata fat 16

Ho provato a fare l'upload dei file con il file batch allegato ma dalla seriale di arduino vedevo che non scriveva nulla sulla sd.
Ho quindi copiato manualmente sulla sd sotto upload i file.

Il server web risponde ma quando apro index.htm sul browser questo mi dice:
Could not find file: INDEX.HTM

L'indirizzo che do è: http://10.0.0.22/upload/index.htm

Qualcuno ha qualche indicazione aggiuntiva per farlo funzionare ?

Grazie, Alberto

P.S. Uso l'ide 1.0.6 ..... ma ho provato anche con altri meno recenti ma non risolve, anche perchè non ho problemi di compilazione

Prova a non usare subdirectory, il file mettilo nella root della SD http://10.0.0.22/index.htm

Si Pablos, avevo già provato ........ niente :frowning:

Nel monitor seriale mi sembra ok:
Free RAM: 6182
Setting up SD card...
Setting up the Ethernet card...
Web server starting...
Ready to accept HTTP requests.

Non riesco proprio a capire ........ va a tutti meno che a me.
Non so più dove e cosa inventare

Se leggo la sd sul monitor seriale vedo:

Initializing SD card...Wiring is correct and a card is present.

Card type: SD2

Volume type is FAT16

Volume size (bytes): 2012839936
Volume size (Kbytes): 1965664
Volume size (Mbytes): 1919

Files found on the card (name, date and size in bytes):
INDEX.HTM 2014-10-13 11:56:44 695
JQUERY.JS 2014-10-13 11:56:44 94020
LIGHTS.PNG 2014-10-13 11:56:44 55830
MAIN.JS 2014-10-13 11:56:44 1501
STYLE.CSS 2014-10-13 11:56:44 341

Tutto Ok .... ma non va

Lo sketch e la lib da dove l'hai presa? metti il link che ci do un occhiata

Si Pablos, GitHub - ovidiucp/TinyWebServer: Small web server for Arduino, fits in 10KB ROM, less than 512 bytes RAM

Un'altra cosa ....... io ho un ethernet shield SainSmart che non ha il mac stampato.
Uso quello che sta nel codice ........ va bene no ?
Il server, pingandolo, risponde.

Grazie, Alberto

Si il MAC va bene, e quella lib funziona, probabilmente non si inizializza correttamente lo shield, perche il 10.0.0.1 risponde dicendoti FILE NOT FOUND
Nemmeno con l'webserver di esempio nell'ide funziona? quello che manda 5 valori analogici sulla pag web, se non va nemmeno quello il prob è da ricercare sullo shield

Il webserverSD e il SimpleWebServer mi mostra HELLO Word .... niente di più

m.alverman:
Il webserverSD e il SimpleWebServer mi mostra HELLO Word .... niente di più

non so a cosa ti riferisci .... io a questo

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);
EthernetServer server(80);

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
      
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("
");
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disconnected");
  }
}

che mostra i valori analogici con refresh del client ogni 5 sec

File > Esempi > Ethernet > WebServer.ino

Pensavo che ti riferivi agli esempi inclusi nella libreria tiny :slight_smile:
Quelli della libreria ethernet funzionano !!

m.alverman:
Quelli della libreria ethernet funzionano !!

Sono sconcertato, uso la tinyweb da diversi anni modificata un po' e ritengo sia la lib migliore sul mercato :slight_smile: , la conosco molto bene, ci faccio di tutto e di più, so con certezza che funziona ... non so che dirti, non dovrebbe darti quegli errori .... se vuoi fare uno zip di quello che hai e lo provo sul mio ... anche se ho un hardware diverso in base a quello che hai detto dovrei avere problemi anch'io

ciao

Ciao Pablos, non sto mettendo in discussione il suo funzionamento ...... so che funziona !!
Ho appunto girato il web in lungo e in largo e non ho mai trovato nessun che mostrasse problemi di alcun genere.
Quindi il problema è solo mio, solo che avendo provato la libreria con diverse schede, arduino uno, uno versione 3 e mega e avendo sempre lo stesso problema non so più cosa provare.
Di shield ethernet ne ho due, una senza sd originale arduino e una con sd, arrivata ieri appositamente per questa prova, non originale targata SainSmart.

L'unica cosa anomala è che se uso il file batch con curl i file non vengono salvati sulla sd e devo caricarli manualmente.

Boh, non so più che pesci pigliare.

Comunque grazie per l'interesse.

Un saluto, Alberto

Che dire .... questo http://kellykeeton.com/2013/08/06/webpower/ funziona alla grande maaaaa ... non è il tiny :0

Quel progetto usa webduino e la lib non gestisce l'sd.
La tiny può essere debuggata, controlla le request che non arrivino sbagliate o non arrivino proprio

cambia nel file cpp la prima linea

#define DEBUG 0

in

#define DEBUG 1

apri il monitor seriale e leggi molte info di quello che sta facendo

Provato ........
questo è il tutto, ma non riesco a capire cosa dovrei vedere se funzionasse.

Free RAM: 550
Setting up SD card...
Setting up the Ethernet card...
Web server starting...
Ready to accept HTTP requests.
TWS:New request: GET /upload/index.htm HTTP/1.1

Host: 192.168.50.177
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4

TWS:Returning 200
TWS:New request: GET /favicon.ico HTTP/1.1

Host: 192.168.50.177
Connection: keep-alive
Accept: /
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4

TWS:Returning 200

Ho inserito qualche istruzione nello sketch per vedere se riconosceva la sd e il suo contenuto mentre era in funzione il server e sembra che tutto sia ok.
Questo è quello che visualizzo a monitor:

Free RAM: 368
Setting up SD card...
vol.init success!
openRoot success!
Has filesystem!

Card type: SD2

Volume type is FAT16
Volume size (bytes): 2012839936
Volume size (Kbytes): 1965664
Volume size (Mbytes): 1919

Files found on the card (name, date and size in bytes):

UPLOAD/ 2014-10-17 11:48:58
INDEX.HTM 2014-10-15 19:25:18 695
JQUERY.JS 2014-10-15 19:25:18 94020
LIGHTS.PNG 2014-10-15 19:25:18 55830
MAIN.JS 2014-10-15 19:25:18 1501
STYLE.CSS 2014-10-15 19:25:18 341

Setting up the Ethernet card...
Web server starting...
Ready to accept HTTP requests.
TWS:New request: GET /upload/index.htm HTTP/1.1
Host: 192.168.50.177
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4

TWS:Returning 200
TWS:New request: GET /favicon.ico HTTP/1.1
Host: 192.168.50.177
Connection: keep-alive
Accept: /
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4

TWS:Returning 200

Niente da fare .... sono due giorni che ci giro attorno e ho deciso di prendere una ethernet shield, con sd, originale arduino ....... vedremo.

In effetti qualcosa manca dall'header del client ... ora faccio pappa e dopo stampo le mie request

Vedo che stai caricando da win 7 64bit tramite chrome con questa richiesta
TWS:New request: GET /upload/index.htm HTTP/1.1 quindi di nuovo da una subdirectory e non credo che le sub la tiny le gestisca, non l'ho mai fatto e comunque sei andato oltre l'esempio base :slight_smile:

la tinywebserver non ti chiede di specificare il file, devi solo scrivere http://192.168.x.x
index.htm è già compreso nel percorso root se non scrivi nulla
lo fa questa linea send_file_name(web_server, "INDEX.HTM");

vedo che ti chiede anche un file ico
TWS:New request: GET /favicon.ico HTTP/1.1

prendi un immagine icona e nomina favicon.ico, se non lo trova ti fa perdere tempo e rallenta tutto

Io non uso quasi mai chrome lo odio perchè secondo me è poco pratico, hai mai provato con firefox? io mi trovo bene e ho sempre usato quello ...

se inserisci nella SD un file qualunque può essere letto con ES: http://192.168.x.x/file.txt, puoi leggere tutti i file direttamente in questo caso specificandolo nel path, prova con un altro file .... tutti i file purchè le estensioni siano comprese nella lib altrimenti vanno aggiunte .. ad esempio un file.ini verrà letto ma visualizzato in modo scorretto