Go Down

Topic: Arduino e Server Web esterno (Read 2 times) previous topic - next topic

Rinpe

Ciao a tutti, approfitto di questo topic per chiedere delle delucidazioni riguardo il webserver e il webclient su arduino perchè mi sa che ho una mega confusione in testa.  :P
Anche il mio obiettivo è quello di utilizzare arduino e ethernet shield per un progetto domotico per accensione luci, tappasrelle, temperature, sensori pioggia ecc nella casa. Ho fatto alcuni sketch di prove accendendo led ecc e interagendo con il browser.
La mia domanda o meglio la confusione che ho ancora in testa è questa:
supponiamo che io ho l'ip del mio arduino 192.168.1.100; quando nello sketch scrivo client.print (...) teoricamente vado a crearmi una pagina web che ha come indirizzo quello di arduino quindi sto creando un webserver, corretto? (speriamo). Ora se io volessi crearmi una pagina esterna all'arduino (o cmq un sito), crearmi quindi un qualcosa con dei programmi tipo dreamweaver o altri web editor e mettere questo sito su un tablet o pc o quant'altro, che tipo di indirizzo ip avrebbe? chi diventerebbe il server e chi il client con arduino?
Pensavo che si potesse scrivere un sito esterno con un web editor e poi nello sketch di arduino scrivere solo alcuni client.print(...) che scrivessero su quella pagina o sito ma non saprei l'indirizzo  e non saprei se si può fare così.
Comunque avete capito che ho un casino in testa su questa cosa e finchè non ce l'ho chiara è difficile che possa continuare a ragionare con la mia testa...Qualcuno sarebbe così gentile in poche parole (semplici) dirmi come funziona sta cosa oppure qual'è il modo giusto sul quale possa continuare a ragionare?
Grazie mille
Ciao

pablos

#6
Nov 17, 2012, 10:58 pm Last Edit: Nov 17, 2012, 11:37 pm by pablos Reason: 1
Visto che vuoi una cosa semplice

Il server è silenzioso, non parla mai se non gli fai delle domande (richieste), quindi il server ti invia quello che gli chiedi.
Chi è che fa le domande? Il client!

Tu col tuo pc a casa quando fai una ricerca su google sei un client, chiedi al server di mandarti il risultato preciso di una ricerca.

Quindi se arduino è un webserver, esso risponderà solo quando ti colleghi e quando gli fai delle domande sullo stato delle sue porte con un client. E' logico che devi conoscere l'IP di arduino

Se arduino deve invece mandare dei dati ogni tot minuti ad un server esso sarà un client. Al server non interessa sapere l'IP di arduino

Quando tu dici
Quote
Ora se io volessi crearmi una pagina esterna all'arduino (o cmq un sito), crearmi quindi un qualcosa con dei programmi tipo dreamweaver o altri web editor e mettere questo sito su un tablet o pc o quant'altro, che tipo di indirizzo ip avrebbe? chi diventerebbe il server e chi il client con arduino?

Qui bisogna vedere cosa intendi per creare un sito, un sito si costruisce su un server comprando uno spazio web e un dominio con tanto di mail dedicate, php 5.x o superiore, mysql ecc. (anche a casa tua se hai un ip statico e una macchina sempre accesa)
In questo caso sarà arduino a mandare ogni tanto i dati all'indirizzo www.miosito.it/dati.php .... sul server ci sarà un programma php (fatto da te) che è in attesa di ricevere i dati, sempre in questo caso l'ip del server è relativo saperlo visto che ha un link per raggiungerlo e al server non interessa sapere l'ip di arduino. Quando tu vorrai sapere come sta arduino dovrai andare su www.miosito.it/pagina.html che visualizzerà i dati raccolti e archiviati dal php

Se invece vuoi realizzare una pagina html nel tuo pc (che non è un sito) con es. dei tasti, questi dovranno fare delle GET all'indirizzo ip di arduino, in questo caso arduino è sempre un server. Il creare la paginetta sul tuo pc renderà le cose più difficili se vuoi visualizzare gli stati con un tablet fuori casa.

Se vuoi complicarti ancora di più la vita arduino può avere entrambe le funzioni, ogni tanto il programma può alternare facendo un po' da server e un po' da client.


Quote
quando nello sketch scrivo client.print (...) teoricamente vado a crearmi una pagina web

quando scrivi client.print stai rispondendo alla richiesta del client e arduino come server gli invia il contenuto di quello che vuole sapere o meglio di quello che vuoi fargli sapere scrivendolo nello sketch
client.print=stampa sul client (...)

Questo è in sintesi come funziona il sistema, poi come ti ho già scitto in altre occasioni ci sono molti modi di sviluppare un dialogo tra macchine su rete e molti sistemi di programmazione che dipendono dalla difficolta, potenza di quello che si vuol fare, ognuno è affezionato al suo metodo come un medico è specializzato su una piccola parte del corpo umano, non può sapere tutto, spesso si deve consultare con altri specialisti.

ciao

no comment

Rinpe

Grazie Pablos, mi è un po' più chiara la situazione ora...anche se devo assimilare ancora tantissime nozioni per capire più in dettaglio altre cose.
Ciao

pablos

Visto che vuoi fare un piccolo webserver che possa essere visualizzato da pc o tablet con aggiornamento automatico ti consiglio di dare un occhiata alla libreria tinywebserver, è un po' complicata se hai poche nozioni, ma tocca molti argomenti che possono interessarti a titolo di studio, server, client, pagine html, css, autorefresh, javascript, json, GET, POST, uso di SD su arduino ecc
no comment

Rinpe

Grazie pablos ci darò sicuramente un'occhiata. Sai per caso se ci sono degli esempi simili (e semplici :P) di quel che vorrei fare in modo da poter fare il "reverse engineering" e capire al meglio il tutto?
Grazie ancora
Ciao

Go Up