Aiuto progetto domotico maturità

Ciao a tutti, fra circa 10 giorni ho la maturità, ho realizzato un progetto in miniatura di una casa domotica.
Tutto funziona senza problemi ho terminato il tutto.
L'unico problema che mi succede che prima non era presente è che la pagina web caricata su arduino con ethernet shield a volte non viene caricata al 100%

Ho messo un video per farvi capire cosa succede (il rumorino che sentite nel video sono i motorini della casa domotica che rimangono attivi se sapete come togliere il rumore ditemi pure ma non è un grosso problema): clicca qui

Chiedo veramente a voi il vostro aiuto perchè ho cercato ovunque e sono disperato.. mi è uscito questo problema a pochi giorni dalla maturità! :frowning:
Vi ringrazio anticipatamente per l'aiuto che mi darete!

Vi lascio anche il mio sorgente solo della pagina HTML (non riesco a mettere tutto lo sketch perchè è lungo):

// Indirizzo IP del server
          IPAddress serverIPAddress = Ethernet.localIP();
          
          // Stampo la pagina HTML
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          client.print("<p><h1><font color='TEAL'><center><u>Arduino Domotic Home</u></center></font></h1></p>");
          client.print("<p><h3>Comandi disponibili: </h3></p>");
          client.print("
");
          client.print("<table width=\"75%\" border=\"2\″ cellpadding=\"10\" cellspacing=\"5\">");
          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Luci Viale:  ");
          // Stampo lo stato del pulsante Viale
          if (viale == 1) client.print("<font color='green'>Accese</font>");
          else client.print("<font color='red'>Spente</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?v'>");
          client.print("Accendi/Spegni Viale");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");

          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Luci Sala:  ");
          // Stampo lo stato del pulsante Sala
          if (sala == 1) client.print("<font color='green'>Accese</font>");
          else client.print("<font color='red'>Spente</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?s'>");
          client.print("Accendi/Spegni Sala");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");

          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Luci Stanza1:  ");
          // Stampo lo stato del pulsante Stanza1
          if (stanza1 == 1) client.print("<font color='green'>Accese</font>");
          else client.print("<font color='red'>Spente</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?t'>");
          client.print("Accendi/Spegni Stanza1");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");

          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Luci Stanza2:  ");
          // Stampo lo stato del pulsante Stanza2
          if (stanza2 == 1) client.print("<font color='green'>Accese</font>");
          else client.print("<font color='red'>Spente</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?z'>");
          client.print("Accendi/Spegni Stanza2");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");

          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Climatizzatore:  ");
          // Stampo lo stato del pulsante Stanza2
          if (clima == 1) client.print("<font color='green'>Acceso</font>");
          else client.print("<font color='red'>Spento</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?c'>");
          client.print("Accendi/Spegni Climatizzatore");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");
          
          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Luci Corridoio:  ");
          // Stampo lo stato del pulsante corridoio
          if (corridoio == 1) client.print("<font color='green'>Accese</font>");
          else client.print("<font color='red'>Spente</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?k'>");
          client.print("Accendi/Spegni luci corridoio");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");

          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Porta d'ingressso casa:  ");
          // Stampo lo stato del pulsante porta
          if (servo == true) client.print("<font color='green'>Aperta</font>");
          else client.print("<font color='red'>Chiusa</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?p'>");
          client.print("Apri/Chiudi Porta d'ingressso casa");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");
          
          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Luce Arduino:  ");
          // Stampo lo stato del pulsante Arduino
          if (arduino == 1) client.print("<font color='green'>Accese</font>");
          else client.print("<font color='red'>Spente</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?a'>");
          client.print("Accendi/Spegni luce Arduino");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");

          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Porta Garage:  ");
          // Stampo lo stato del pulsante garage
          if (motore == true) client.print("<font color='green'>Aperta</font>");
          else client.print("<font color='red'>Chiusa</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          //APRI GARAGE
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?g'>");
          client.print("Apri/Chiudi Porta Porta Garage");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");
          
          client.print("<tr>");
          client.print("<td>");
          client.print("Stato Luci Garage:  ");
          // Stampo lo stato del pulsante Ledg
          if (ledg == 1) client.print("<font color='green'>Accese</font>");
          else client.print("<font color='red'>Spente</font>");
          client.print("</td>");
          client.print("<td>");
          client.print("
");
          client.print("
");
          client.print("<a href='http://");
          client.print(serverIPAddress);
          client.print("?j'>");
          client.print("Accendi/Spegni luci garage");
          client.print("</a>");
          client.print("</tr>");
          client.print("</td>");
          
          break; // Fondamentale, per evitare un loop.
        }
      }
    }
    // Quando la richiesta e' stata elaborata, fermo il client
    delay(1);
    client.stop();
  }

non so se può essere un problema o meno ma ho visto che fai TANTISSIME chiamate del tipo:

...
client.print("</td>");
client.print("<td>");
client.print("
");
client.print("
");
client.print("<a href='http://");
client.print(serverIPAddress);
client.print("?v'>");
client.print("Accendi/Spegni Viale");
client.print("</a>");
client.print("</tr>");
client.print("</td>");
...

e se fai cosi:

...
client.print("</td><td>

<a href='http://");
client.print(serverIPAddress);
client.print("?v'>Accendi/Spegni Viale</a></tr></td>");
...

ovviamente usando il metodo per tutta la parte che ti crea la pagina html !
Accorci di molto il codice che carichi su arduino e chissa..magari le troppe chiamate client.print lo impallavano ?

Prova e fa sapere :slight_smile:

Ho provato come mi hai detto, ma non funziona.
Ho accorciato di molto l'html unendo molte cose ma nulla.. :frowning:

Quello cambia poco.
È opportuno usare la macro F() se stampi del testo:

client.print(F(""));

ecc.

Ciao,
potresti vedere con firefox la console web, che trovi nel menù strumenti,sviluppo web,console web; la attivi prima di caricare la pagina e vedi cosa sta facendo in browser; magari riesci a scoprire quale è il problema, a me è stata molto utile quando ho sviluppato pagine web simili alla tua.

Ciao
fiodavd

Ho provato con la console già fatto, l'HTML arriva incompleto.
Non so cosa potrebbe essere il problema

prova a trasformare l'ultimo client.print(...) in client.println(...), subito dopo aggiungi un client.println().

Nada nulla.
Fa niente vi ringrazio a tutti faro un continuo refresh ahahha
Purtroppo non ho altro tempo da dedicare.
Il mio lavoro comunque l'ho concluso e tutto funziona :slight_smile:

amir2012:
Ho provato con la console già fatto, l'HTML arriva incompleto.
Non so cosa potrebbe essere il problema

A me invece sembra abbastanza probabile che sia un problema di buffer di uscita, ossia il problema si divide in due: primo, tu mandi una unica riga di testo, secondo, chiudi troppo presto il canale ("client.stop();") quando il browser non ha ancora ricevuto tutto il testo, visto il brevissimo tempo chi gli concedi ("delay(1);" ossia solo 1 millisecondo per tutta la enorme riga html che stai mandando!!).

Prova queste due semplici modifiche:

  1. metti un println ogni tanto, diciamo almeno ad ogni ""
  2. prima dello stop() fai un delay(10)

Lo so che hai già concluso, ma prova lo stesso e facci sapere: sia per la curiosità di capire il problema, sia perché comunque potrebbe aiutare altri nella tua stessa condizione, no?

Avevo gia provato ad aumentare il delay portandolo a 8 ma stesso problema.
Per la println prima erano una println ogni tr e ogni td e quindi lo sketch era molto più lungo e quindi più pesante.
Pensando che fosse problema di grandezza dello sketch l'ho rimpicciolito