Go Down

Topic: Formattazione pagina web con webduino (Read 1 time) previous topic - next topic

bacconi

Ciao a tutti dopo svariate prove sono riuscito ad avere cio che volevo:Arduino che legge temperatura da 1 o piu sensori ds18b20 e ethernet shield 5100 con server web per gestione remota, pero mancano ancora alcune cose:
è possibile formattare la pagina in modo che riempia la pagina del browser in versione mobile? va bene anche se lo fa nel pc
è corretto generare la pagina con la funzione server.print o è meglio client.print? con la seconda non sono riuscito a intercettare i comandi POST o GET
Code: [Select]
void Start(WebServer &server, WebServer::ConnectionType type,char *url_param, bool param_complete)//funzione pagina Start
{
  server.httpSuccess();//restituisce al browser l'intestazione http 200 OK
  if (type != WebServer::HEAD)//gestisco il tipo di richiesta HEAD
  {
    String s = "";
    if (param_complete == true)
    {
      s = url_param;
      if ( s == "T1=+") TObbiettivo1 += .1;
      if ( s == "T1=-") TObbiettivo1 -= .1;
    }
    sensors.requestTemperatures(); // Send the command to get temperatures
    temperatura1 = sensors.getTempCByIndex(0);//read 18b20
    if (temperatura1 >= TObbiettivo1+.1 ) rele1=0,    Serial.print(rele1);// se aumenta Tamb spengi 0.1 isteresi
    if (temperatura1 <= TObbiettivo1-.1 ) rele1=1,    Serial.print(rele1);// se diminuisce Tamb accendi 0.1 isteresi


    P(htmlHead) =//gestisco la pagina html in base allo stato delle uscite di Arduino
    "<html>"
      "<head>"
      "<font color=white>"
      "<div style=\"width:400px;\">" //risoluzione pagina web
    "<title>Cronotermostatino</title>"
      "</head>"
      "<font color=white><align=\"center\">Cronotermostatino</font>"
      "<body bgcolor='#444444'>";
    server.printP(htmlHead);
    server.print("<table border=\"5\">");
    server.print("<tr><td><font color=white>Temperatura</td><td><font color=white>T Set</td><td><font color=white>Comandi</td></tr>");// crea tabella

    // prima cella
    server.print("<tr><td style=\"color: white;\">");
    server.print(temperatura1);
    //temperaturavecchia = temperatura1;
    server.print(" C° </td>");
    //seconda cella

    if (rele1 == 0 )// Scrive bianco (off)
    {
      server.print("<td style=\"color: white;\">");
      server.print(TObbiettivo1);
      server.print(" C° </td>");
      digitalWrite(2, LOW);
    }
    else// Scrive rosso (on)
    {
      server.print("<td style=\"color: red;\">");
      server.print(TObbiettivo1);
      server.print(" C° </td>");
      digitalWrite(2, HIGH);
    }
  }
  //terza cella   
  server.print("<td><input type=\"button\" value=\"T-\"onclick=\"location.href='?T1=-'\">");
  server.print("<input type=\"button\" value=\"T+\"onclick=\"location.href='?T1=+'\">");
  server.print("<input type=\"button\" value=\"ON\"onclick=\"location.href='?U1=ON'\">");
  server.print("</td></tr>");

  server.print("</table></body></html>");//fine tabella

Questa è la parte webserver e mi mancherebbe come ho gia detto di "fittare" la pagina nello chermo del telefono e se possibile di inviare un refresh pagina alla variazione dei dati visualizzati senza intervenire sul browser che vede la pagina.
se qualcuno ha eventualmente anche qualche guida dove viene spiegato come costruire la pagina con webduino perche non sono riuscito a trovarla

mancio

Non so se funziona anche per i div ma quando vai ad impostare la larghezza prova a mettere al posto di 400px la percentuale.. Nel tuo caso 100% se vuoi a tutta pagina.. Con le tabelle funziona

cybor

Ciao,

  refresh a cambio valori: Che io sappia non puoi forzare il refresh della pagina web da lato server dal momento che la connessione si chiude, potresti eventualmente inserire nella pagina un refresh ogni tot, da una veloce ricerca su google ho trovato questo:

http://www.createwebsite.it/auto-refresh-della-pagina-con-timer

Come spiegato, oltre che includerlo nella pagina html che crei, potresti salvarlo sulla SD dell'ethernet shield e farlo caricare dalla tua pagina.

Sperando di non aver detto delle castronerie... :-)

Carlo.

lsinfo

Se vuoi fare un refresh della pagina ad ogni tot secondi , senza usare script o altre diavolerie, puoi semplicemente usare il tag meta

<meta http-equiv="refresh" content="'60'" />   <-- esempio per 60 secondi


Ciao
Leo55

bacconi

io vorrei che arduino aggiornasse la pagina web al variare dei dati da visualizzare, è possibile o è "vietato dalle regole html"?
per quanto riguarda il refresh ciclico funziona ma usando il passaggio dei parametri verso arduino con href mi ripassa continuamente lo stesso comando.
come si fa a cancellare la stringa nella barra degli indirizzi una volta letto il comando?

Go Up