refresh pagina

eccomi ancora a chiedervi aiuto

questo è il mio codice:

#include <EtherCard.h>
static byte mymac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte Ethernet::buffer[1000];
boolean L1,L2,L3,L4,L5,L6,L7,L8;
const char *sito="[color=red]miosito[/color]";

void setup () {
  ether.begin(sizeof Ethernet::buffer, mymac, 10);
  ether.hisport = 81;
  ether.dhcpSetup();
  DDRD = B11111100;
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  L1=L2=L3=L4=L5=L6=L8=false;
  }
  
void loop() {
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);
  
  if(pos) {
     if(strstr((char *)Ethernet::buffer + pos, "GET /1") != 0) {  
        L1 = !L1;
        digitalWrite(2, L1);
        }
     if(strstr((char *)Ethernet::buffer + pos, "GET /2") != 0) {
        L2 = !L2;
        digitalWrite(3, L2);
        }
     if(strstr((char *)Ethernet::buffer + pos, "GET /3") != 0) {
        L3 = !L3;
        digitalWrite(4, L3);
        }
     if(strstr((char *)Ethernet::buffer + pos, "GET /4") != 0) {
        L4 = !L4;
        digitalWrite(5, L4);
        }
     if(strstr((char *)Ethernet::buffer + pos, "GET /6") != 0) {
        L5 = !L5;
        digitalWrite(7, L5);
        }
     if(strstr((char *)Ethernet::buffer + pos, "GET /7") != 0) {
        L6 = !L6;
        digitalWrite(8, L6);
        }
     if(strstr((char *)Ethernet::buffer + pos, "GET /5") != 0) {
        digitalWrite(6, HIGH);
        delay(200);
        digitalWrite(6, LOW);
        }
     if(strstr((char *)Ethernet::buffer + pos, "GET /8") != 0) {
        L8 = !L8;
        digitalWrite(9, L8);
        }
   BufferFiller bfill = ether.tcpOffset();
   bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
                      "Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
                      "<title>Ardumino 1.3</title>"));
   bfill.emit_p (PSTR("<a href=\"/1\"><img src=\"$S/lam-$F.jpg\" width=30% height=30%>"), sito, L1 ? PSTR ("1") : PSTR ("0"));
   bfill.emit_p (PSTR("<a href=\"/2\"><img src=\"$S/cor-$F.jpg\" width=30% height=30%>"), sito, L2 ? PSTR ("1") : PSTR ("0"));
   bfill.emit_p (PSTR("<a href=\"/3\"><img src=\"$S/wd-$F.jpg\" width=30% height=30%>"), sito, L3 ? PSTR ("1") : PSTR ("0"));
   bfill.emit_p (PSTR("<a href=\"/4\"><img src=\"$S/hdd-$F.jpg\" width=30% height=30%>"), sito, L4 ? PSTR ("1") : PSTR ("0"));
   bfill.emit_p (PSTR("<a href=\"/6\"><img src=\"$S/alb-$F.jpg\" width=30% height=30%>"), sito, L5 ? PSTR ("1") : PSTR ("0"));
   bfill.emit_p (PSTR("<a href=\"/7\"><img src=\"$S/led-$F.jpg\" width=30% height=30%>"), sito, L6 ? PSTR ("1") : PSTR ("0"));
   bfill.emit_p (PSTR("

<a href=\"/\"><img src=\"$S/agg.png\" width=15% height=15% hspace=100>"), sito);
   bfill.emit_p (PSTR("<a href=\"/5\"><img src=\"$S/wifi.jpg\" width=15% height=15% hspace=150>"), sito);
   bfill.emit_p (PSTR("<a href=\"/8\"><img src=\"$S/but-$F.jpg\" width=15% height=15%>"), sito, L8 ? PSTR ("1") : PSTR ("0"));
   ether.httpServerReply(bfill.position());
 }
}

come posso fare in modo che ogni volta che io premo un tasto/immagine poi faccia anche un refresh
in modo che l’url da /1 /2 ecc diventi /

non so se sono stato chiaro
a me serve questa cosa in modo che se io attivo il primo rele (/1) , aggiornando la pagina non mi cambi di stato

grazie

Esiste un header apposito per il redirect

location: http://mio sito.it/

Comunque sarebbe meglio eseguire richieste asincrone per inviare istruzioni ad Arduino.

sono alle prime armi… riusciresti a spiegarmi meglio?

secondo me conviene usare

<meta http-equiv="refresh" content="5> </blockquote> <p>senza scomodare il javascipt, anche perchè il tuo browser dovrebbe caricare una lib javascript esterna. La più piccola pesa +/- 30k e la enc28j60 ci sta una vita<br> cè solo un difetto, se usi il GET, al refresh ti resta sulla barra dell’indirizzo l’ultimo comando</p> <p>esempi ne trovi quanti ne vuoi</p> <p>google >> arduino webserver html refresh</p>

pablos:
secondo me conviene usare senza scomodare il javascipt, anche perchè il tuo browser dovrebbe caricare una lib javascript esterna. La più piccola pesa +/- 30k e la enc28j60 ci sta una vita

Questa non l'ho capita. Perché una libreria? in javascript basta un

window.location.href = 'http://sito.org/';

Io comunque consigliavo di includere il redirect nel header di risposta cosi da inviare il minimo indispensabile, niente html.

client.println("HTTP/1.1 200 OK");
client.println("location: http://miosito.org/");
client.println("Connection: close");
client.println();

Questo dovrebbe bastare.

Pensavo volesse un button

<script>
function load() {
    window.location("http://192.168.2.100")
}
</script>
<body>
<input type="button" value="Refresh" onclick="load()">

no niente button
vorrei che ad ogni comando la pagina refreshasse in modo da non avere nessun /1 o /2 ecc alla fine
il tutto per far si che anche refreschando con f5 non mi ricarica lo stesso comando di prima

Da quello che ho capito il suo problema sta nel ritornare all’url della pagina originale dopo aver fatto richiesta ad un altro url che medi il comando ad Arduino. In effetti non è spiegato benissimo, potresti spiegarti meglio, per favore?

Edit:
Ok allora come ti ho suggerito io può andare, sia in javascript che nell’header della risposta http.
Oppure in HTML

<meta http-equiv="refresh" content="0;URL=http://www.miosito.com/">

Che sinceramente trovo poco elegante, insieme alla soluzione javascript.

facciamo finta che io chiamo l'arduino all'indirizzo 192.168.1.127:81
pigiando sulla prima immagine ottengo 192.168.1.127:81/1
se poi pigio sulla seconda immagine ho 192.168.1.127:81/2

ora io quello che vorrei che dopa aver eseguito il comando si ritorni a 192.168.1.127:81

Posta il codice dello sketch che vediamo di aiutarti con qualche esempio.

RobertoBochet:
Posta il codice dello sketch che vediamo di aiutarti con qualche esempio.

è nel primo post

Scusa, è l'ora. Te la faccio semplice, devi dividere il tuotto in due macro richieste:
Le richieste alla pagina principale "/" alla quale restituirai l'intera pagina esattamente come fai ora.
Le richieste ad un pagina "/n" in questo caso identifichi quale comando è stato inviato, proprio come fai ora, e restituisci al client una pagina con l'header location alla pagina principale

bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\nlocation: http://miosito.org/\r\n\r\n"));

riesci a modificare il mio codice per farmi l’esempio?

per farla semplice basterebbe che dopo ogni comando si esegua anche :

bfill.emit_p (PSTR("

<a href=\"/\"><img src=\"$S/agg.png\" width=15% height=15% hspace=100>"), sito);

Purtroppo non conosco la libreria in questione e le sue specifiche, non saprei come modificarlo senza fare danni.