Go Down

Topic: Arduino web server: aggiornare pagina html (Read 1 time) previous topic - next topic

nagy

Salve a tutti,
sto usando arduino uno come webserver e ho impostato una pagina html per accendere e spegnere un led. Supponiamo che mi collego al server contemporaneamente da due pc. Da un pc premo il pulsante che mi fa accendere il led. Nella pagina html visualizzo con un rettangolino verde l'avvenuta accensione. Sull'altro pc invece continuo a visualizzare la pagina non aggiornata.
La mia domanda è come posso far aggiornare la pagina html al cambiamento di uno stato in tempo reale? Non voglio fare il refresh automatico dopo un tot di secondi.
Allego un'immagine di ciò che vedo attualmente

lesto

l'HTTP non prevede un real time. Puoi usare il refresh o i WebSocket, però l'unica libreria WebSocket che ho mai visto è single client.
Ci stiamo lavorando, se ti va di partecipare (anche solo come tester, velocizzeresti un sacco lo sviluppo visto che io NON ho una EthernetShield e quind per debuggare il codice mi devo affidare a vlontari) vedi quì: http://forum.arduino.cc/index.php?topic=173783.0
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

nagy

Purtroppo non sono un esperto di programmazione ma se posso essere utile eseguendo dei test lo faccio volentieri.
Leggerò quella discussione sperando di capirci qualcosa e nel caso testerò il codice  :)

superlol

un'altra possibilità è usare ajax per il refresh del solo box facendo un
Code: [Select]
<script type="text/javascript">
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","?sensore",true);
xmlhttp.send();
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
</script>

ovviamente il capo di interesse dev'essere scritto così:
Code: [Select]
<div id="myDiv">contnuto iniziale</div>

nel codice dovrai anche mettere che quando gli arriva come parametro "sensore" lui invii solo il valore del sensore.

te lo adatti un attimo ma con 20 righe di js lo fai.

mi chiedo perchè pochi usino questa funzione, in fondo arduino sopporta fino a 5 connessioni in simultanea quindi 2 utenti in contemporanea.
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

nagy

Mi è venuta in mente una cosuccia... ma prima però ho bisogno di sapere se si può fare un refresh un pò particolare... quando premo sul pulsante  di accensione del led nella barra degli indirizzi del browser mi esce scritto

http://192.168.1.3:6789/?LED1=ON

Quando faccio il refresh usando

<meta http-equiv=\"refresh\" content=\"2\">

Il browser mi esegue il refresh dell'ultimo indirizzo e cioè http://192.168.1.3:6789/?LED1=ON.
Io vorrei invece eseguire il refresh di http://192.168.1.3:6789/
Si può fare? Oppure esiste un modo per ritornare in quella pagina "principale"?

Go Up