Creare web server per dati stazione meteo

Salve a tutti,
Sto facendo una stazione meteo completa, sono già riuscito a visualizzare molti dati su un display fatto un datalogger e anche creato un ip dove si visualizzano i dati(devo solo renderlo pubblico...) ma a parte questo veniamo al dunque. Praticamente vorrei creare un sito più carino tramite sketch, oppure magari caricando un sito o template su sd e poi metterci magari i miei dati sopra se si può fare, ma vorrei visualizzare i miei dati su un sito più bello graficamente, però non so come fare con l'html... voi sapete indirizzarmi a qualcosa? perché adesso visualizzo così


Qui la parte relativa al client

guyguygiy.ino (12.4 KB)

L'unica cosa da fare per un lavoro fatto bene è studiarsi l'html e il CSS... oppure ripieghi su qualcosa di già fatto. Per imparare questi due linguaggi molto elementari puoi far riferimento a HTML.it e w3Schools.com.
Su Arduino è importante non basarsi su template disegnati per dei normali siti, bisogna cercare di minimizzare la dimensione dei file da inviare al client, per via della poco potenza di Arduino e la limitatezza della memoria.
Importante è sicuramente l'uso della scheda SD per salvare le pagine e cercare di minimizzare il numero delle stesse, impiegando tecniche come le richieste Ajax.

Capito grazie :wink: E se tipo volessi hostare al posto dell'ip, tipo su un sito che me lo permette come dominio? E poi utilizzare un codice html di un template semplice non ingombrante, adattandolo ovviamente ad arduino?

  if (ethclient.connect("www.lineameteo.it", 80))
    {
   ethclient.println("GET / HTTP/1.1");
  ethclient.println("Host: www.lineameteo.it");
        ethclient.println("Connection: close");
        ethclient.println();
 }

Così tipo intendo...

As_Needed:
Capito grazie :wink: E se tipo volessi hostare al posto dell'ip, tipo su un sito che me lo permette come dominio? E poi utilizzare un codice html di un template semplice non ingombrante, adattandolo ovviamente ad arduino?

Evita le espressioni gergali, non si capisce nulla della tua richiesta. Vuoi aggiungere un DNS che mascheri il tuo IP? Oppure vuoi appoggiarti ad un hosting cosi da avere il tuo bel sito di gestione sull'hosting che si interfacci con Arduino?(Cosi facendo non dovresti conservare alcuna pagina web su Arduino)

Scusami, faccio sempre l'errore di essere troppo frettoloso nello scrivere..
Comunque preferirei la seconda, peró il punto che anche essendo hostato su quel sito dovrei crearmi sempre una grafica della mia pagina, perché non c é una li per me, non so se mi spiego. Quindi magari se vengo hostato li, oltre crearmi la pagina, poi devo sempre rendere l ip pubblico oppure siccome il sito è pubblico la mia pagina é pubblica direttamente? spero di essermi spiegato bene

Quale sito? Li dove? ip pubblico di cosa?

Se per esempio ho questo template, voglio metterci sopra i miei dati come faccio? Il sito intendevo un sito da cui vengo hostato, ip pubblico invece nel senso che quando metti dei dati online con l'ethernet shield, li possono vedere al massimo la tua rete usando il virtual server dalle impostazioni del router, allora mi chiedevo: se metto i miei dati su una pagina hostata da un sito che è già pubblico, la mia pagina è pubblica direttamente verso tutto il mondo?
template.htm

L'host è vuoto, ti danno uno "scatolone vuoto", gratis con accessi e componenti base, a pagamento se chiedi un certo tot di connessioni contemporanee, un certo tipo di protocollo, quantità di traffico in MByte, etc etc
Ma la pagina la costruisci tu, i protocolli li costruisci tu con relativi php, js, asp, html, ecc ecc e ce le metti dentro tu.
se poi deve essere pubblica o privata, sarai tu con la dovuta programmazione a decidere user pass e accessi vari.

E' come affittare un magazzino vuoto, decidi tu gli scaffali e la merce da ordinare all'interno, se le vuoi automatizzare questo magazzino e semplificare le ricerche userai il Mysql altrimenti no, se ci metti le porte con la chiave darai tu le chiavi, se non ci metti le porte entreranno tutti ..... tutti quelli che conoscono l'indirizzo o tutti quelli che passano di li per caso.

As_Needed:
Se per esempio ho questo template, voglio metterci sopra i miei dati come faccio? Il sito intendevo un sito da cui vengo hostato, ip pubblico invece nel senso che quando metti dei dati online con l'ethernet shield, li possono vedere al massimo la tua rete usando il virtual server dalle impostazioni del router, allora mi chiedevo: se metto i miei dati su una pagina hostata da un sito che è già pubblico, la mia pagina è pubblica direttamente verso tutto il mondo?
template.htm

Quotando tutto quello che ha detto pablos. Aggiungo... L'host come lo definisci te in tal caso farebbe solo da gateway, che puo essere sensato o meno in base alle tue esigenze. Mi pare tu abbia un estrema confusione su come funzioni una WAN e una LAN. Il virtual server non è altro che un redirect delle richieste che vengono fatte al tuo modem che gestisce il tuo ip pubblico, questo deve sapere a chi rigirare le connessioni e se deve farle passare o bloccarle (firewall). La questione del ip pubblico e privato è una semplice gestione semplificativa, le reti aziendali aperte tante hanno decine di sotto reti con ogni server con ip pubblico.
Se tu sapessi il mio indirizzo IP potresti benissimo accedere alle pagine presenti sul mio server apache, anche se questo gira su una macchina con il suo ip privato nella mia LAN. In poche parole ti sto dicendo che posizionare Arduino nella tua LAN non lo esclude dal mondo, va solo configurata la LAN per renderlo visibile dalla WAN esterna(internet). Se poi vuoi aggiungere un gateway hostato su un server avrai i tuoi motivi.
Ps, mi piace quel templeate, sarebbe solo buona cosa sostituire tutte le png con delle svg inline.

Allora, innanzitutto scusate per non aver risposto subito, è il periodo di festa che é movimentato... comunque capisco ció che dite, purtroppo, come avete detto, non mi é chiaro tutto di questo argomento, ma a come mi avevano detto sempre qui sul forum, da Guglielmo, a me serve rendere l ip forwarding, in modo tale che anche le reti esterne alla mia possano vederlo!
Comunque si, quel template é carino e pure leggero, vorrei pure ampliarlo inserendo un' altra pagina con gli estremi annui e mensili ma é un problema l html... in ogni caso non ho capito la questione di modifica delle svg...
Poi magari sapete qualche guida da consigliarmi per far si di mettere i miei dati nel posto giusto di quel template e poi metterlo online tramite ethernet shield? poi in caso devo caricarlo con l sd il template giusto? oppure devo riscriverlo con il client print dentro il programma? Grazie di tutto comunque :wink: e scusate ancora!

SVG inline

é possibile inserire il tutto nella SD, è anche la scleta consigliabile a meno che non sia estremeamente leggera.

C'è una cosa però che non ho capito. Come si fa a trasferire i miei dati a un template che magari carico su scheda sd? Ovvero vorrei sapere, come faccio a caricare il template su sd come programma e come faccio anche ad inserire al suo interno i miei dati....

Solitamente si fa implementando un richiesta asincrona nella pagina html, che ricontatti il server chiedendoli solo i dati. In questo modo il template si scarica una sola volta e i dati vengono aggiornati periodicamente mentre la pagina web è aperta. Un sistema semplice ed elegante. Vedi javascript richieste ajax.

Eh si, praticamente è quello che voglio ovvero caricare tramite programma un template da sd e dentro quel template deve esserci pure la richiesta dei dati che voglio su ogni casella del template... è un po' complicato però....

Complicato?! Noo. Ovviamente se non si hanno delle minime conoscenze di javascript non si va lontano. Puoi far riferimento a w3schools.

Ma che è sto template??? cosa intendi per template?

non riesco a collegare il tuo template con arduino e con la sua reale definizione

vedo che hai aperto un altro topic e continuamo a parlare di template, ma vuoi che sia raggiungibile da remoto, vuoi trasferire il template, ip pubblico, ecc ecc .....

mi sfugge qualcosa?

Scusa pablos, non riesco a essere preciso su queste cose, visto che le conosco poco! Comunque il template è un modello appunto dove mettere i dati...l'ho messo nei file da scaricare pure
In ogni caso siccome alla fine senza sprecare chissà quanta memoria sto facendo un lavoro così (foto)
Penso che l'unica cosa che mi serva adesso è rendere il server visibile a tutti quanti... non riesco a trovare una soluzione.

Si template non è la parola migliore, ma dai si capisce cosa intende. In ambito web il template di un sito è la base grafica, html, CSS e immagini di sfondo, quello che vuole fare lui è semplicemente creare uno sketch che restituisca ad un client una pagina ben formattata con all'interno già i dati. Io continuo a consigliare la strada della richiesta dati asincrona per i dati.

una cosa tipo questa http://www.meteolevicoterme.it/Dati-Meteo/Stazione-Online.aspx senza flash player

Come ti ha detto Roberto, su SD lo puoi fare benissimo, hai solo il limite di peso della pagina che andrai a caricare una volta solo e poi aggiornata con solo flusso dati, da prove fatte per scaricare 5Mb dalla sd al browser ci vogliono circa 5 minuti (1Mb/Min) forte eh :), se non carichi immagini pesanti ma quanche .png non hai grossi problemi

Se vuoi qualche esempio su cui iniziare negli anni ne avevo postati diversi, se vuoi una mano per fare il traffico dati js e ajax ti posso aiutare, l'unica cosa non chiedermi design grafico :slight_smile:

Di quale arduino parliamo? MEGA?