Pages: [1] 2   Go Down
Author Topic: aggiornare pagina web da client  (Read 2016 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, riprendo dopo mesi il mio progetto di comunicazione client- server web con due arduino con ethernet shield.
Con il mio codice sono riuscito con successo ad accendere un led su arduino server chiudendo un pulsante su arduino client. Il tutto gestito da una pagina web caricata sul server e visibile da un pc in rete. Naturalmente anche via web riesco ad  inviare post al server che eseguirà il comando: quello che non riesco ancora a fare è aggiornare in tempo reale la pagina web che controllo dal pc quando il client manda un comando al server: per spiegarmi meglio, quando chiudo il pusante sul client, il server esegue l'accensione del led, ma contemporaneamente non cambia lo stato sulla pagina web del pc. Per fare ciò ho bisogno di aggiornare la pagina dal pc stesso: come posso fare per aggiornare da arduino la pagina che vedo dal pc? Grazie in anticipo a chi mi verrà in aiuto.
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao, devi implementare una pagina html + javascript AJAX. Nella sezione megatopic trovi un mio progettino che ne fa uso, file show.php

Ciao
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti ringrazio della celere risposta, ma purtroppo non sono ferrato nella programmazione. Ho provato al leggere il tuo codice ma lo trovo troppo complesso:questo è  la pagina web in html lato server che utilizzo. Si può modificare, magari non tanto,  per ottenere quella funzione?
          
Quote
               //Creazione pagina web
          client.println("<html><head>");
          
          client.println("<title>Domotic-Arduino</title>");
          
          client.println("</head>");
          client.println("<body bgcolor=""black"" text=""white"">");
          
          client.println("<h1 align=""center"">Domotic-Home</h1><hr />");
          client.println("<br />");
          client.print("Temperatura interna : ");
          client.print((int)tempC);
          client.println(" C");
          client.println("<br /><br />");
          client.println("<h3><a href=""/"">Aggiorna Sensore</a></h3>");
          client.println("<br />");
          client.println("<hr />");
          client.println("<br />");
          client.print("Comandi LED su pin ");
          client.println(ledpin);
          client.println("<br />");
          client.print("Stato LED :");
          if(ledstatus){
            client.println("<font color=""green""> ON</font>");
          }else{
            client.println("<font color=""red""> OFF</font>");
          }
          client.println("<br />");
          client.println("<h2><a href=""/?led=1"">ACCENDI</a> | <a href=""/?led=0"">SPEGNI</></h2>");
          
          client.println("</body></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;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
  }
}

}}
Grazie
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao, devi implementare una pagina html + javascript AJAX. Nella sezione megatopic trovi un mio progettino che ne fa uso, file show.php

Ciao
Scusa Andrea, come interpreta il suo browser il file php?
Lui sta parlando di pagine costruite con client.print che arrivano da arduino, sul client mi pare di capire che ha solo un browser che interroga arduino.

prova a mettere un client.print("<meta http-equiv=\"refresh\" content=\"2\">");
« Last Edit: January 13, 2013, 07:44:22 pm by pablos » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Full Member
***
Karma: 3
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Già scusa smiley-red, io l'ho fatto però di mezzo c'è un server web
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bene, potrebbe essere una soluzione..ma il problema è che il browser si aggiorna ogni tot secondi col fastidioso suono.....Dovrei aggiornare solo se il pulsante cambia stato! Posso utilizzare lo stesso comando però lato client (è lui che sa quando il pulsante cambia stato)? Grazie.
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 148
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il comando che hai aggiunto fa si che il client ogni un tot di tempo richiede al server la pagina in html...

se non vuoi ricaricare tutta la pagina ma solo un elemento devi usare ajax.  se non erro c'e' una libreria che permette di emulare un server web... pero' non l'ho mai usata ( trovo la cosa un po' innaturale  smiley-red ma e' una considerazione personale )
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bene, potrebbe essere una soluzione..ma il problema è che il browser si aggiorna ogni tot secondi col fastidioso suono....
il suono fastidioso si può sempre eliminare

Quote
.Dovrei aggiornare solo se il pulsante cambia stato! Posso utilizzare lo stesso comando però lato client (è lui che sa quando il pulsante cambia stato)? Grazie.

non può arduino chiamare il client e dirgli .... ehiii sono cambiato aggiorna la pagina!!!! altrimenti non sarebbe più un webserver, ma sarebbe un "webclient".

te lo hanno detto qui
Quote
se non vuoi ricaricare tutta la pagina ma solo un elemento devi usare ajax
Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie dell'interesse! Ora spiego mi meglio, magari sto sbagliando tutto!!!
Ho due arduino  con ethernet shield, uno sever e l'altro client. Sul client si chiude un pulsante, con il codice che ho caricato mando una post al server che riceve la post e mi accende un led (sul server).
Sul server ho caricato la pagina web che ho postato: quando il client comunica  al server di accendere, lui esegue ed io posso verificare il tutto collegandomi dal mio pc all'indirizzo del server su cui e caricata la pagina. Ma mentre sono collegato,se chiudo il pusante sul client, il mio pc rimane fisso sulla schermata (a meno che non faccia il refresh come suggerito) fino a quando non aggiorno manualmente.
Mi sa che devo studiare ajax....
Ma questa è solo una chicca....dato che userò i due arduino per la domotica, non credo che sarà indispensabile avere un monitor aggiornato al secondo.....
Invece un altro quesito che sottopongo alla vostra attenzione è il seguente:
posso da arduino server accendere un led su arduino client? Oppure il client è nato solo per trasmettere dati senza poter ricevere alcun comando? Grazie, Fabio.
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ahhhh ora capisco la confusione ... parliamo della stessa cosa su 2 post identici aperti da te.... pensa se ne aprissimo tutti 2 o 3 che casino scoppia smiley
http://arduino.cc/forum/index.php/topic,144070.0.html sei sempre tu con lo stesso problema
« Last Edit: January 22, 2013, 02:46:35 pm by pablos » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sorry.....  smiley-sad
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
posso da arduino server accendere un led su arduino client? Oppure il client è nato solo per trasmettere dati senza poter ricevere alcun comando?
Non è questione di nascere o meno, il concetto è:
Le comunicazioni http (in questo caso) avvengono su richiesta e conseguente risposta....senza risposta si va in timeout
Es: Il server è in attesa di qualche domanda.... la domanda la fa il client, il server manda i dati, il client riceve la risposta ... fine sessione.
Se voglio aggiornare i dati sulla pagina, il client deve sempre chiederli al server e il server glieli manda, ad ogni ricevuta dei dati la sessione finisce.
Il server non invia dati se nessuno glieli chiede, il server non fa domande e non invia dati di sua spontanea volontà.
Per questo ti ho detto che il tuo programma deve contenere sia le funzioni server che client, io personalmente non l'ho mai fatto, ma so con certezza che potrei farlo. Ci sono esempi in rete, anche se è una particolare necessità.
« Last Edit: January 22, 2013, 04:49:09 pm by pablos » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@pablos
stavo appunto dando uno sguardo ad un post che hai commentato:
http://arduino.cc/forum/index.php/topic,56928.0.html
dove si sfruttava il tyni webserver per accendere 5 led.
Con questo sketch avrò l'aggiornamento dinamico della pagina?
Grazie, fabio
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Purtroppo non riesco a trovare uno straccio di codice che mi permetta di avere l'esempio  client-server insieme, che faccia al caso.....
qualcuno sa aiutarmi?
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@pablos
stavo appunto dando uno sguardo ad un post che hai commentato:
http://arduino.cc/forum/index.php/topic,56928.0.html
dove si sfruttava il tyni webserver per accendere 5 led.
Con questo sketch avrò l'aggiornamento dinamico della pagina?
Grazie, fabio

si, c'e' un po di js, jquery ajax, ma non è difficile
« Last Edit: January 27, 2013, 07:34:34 am by pablos » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Pages: [1] 2   Go Up
Jump to: