Go Down

Topic: Arduino client, riceve http request? (Read 1 time) previous topic - next topic

AnTrea

Salve

Vorrei creare una pagina web su un server e vorrei che arduino ricevesse ed inviasse http request al server.
Siccome in questa configurazione è un client, può anche ricevere le http request? come?

potete linkarmi uno sketch giusto per farmi un idea di come gestire la ricezione (in modalità client) delle http request?

grazie
Arduino, MODs e DIY: blackstufflabs.com

niki77

Se sei un client non potrai mai ricevere richieste http, ma solo risposte alle tue richieste.

Eventualmente devi prevedere di utilizzare sia la libreria client che quella server contemporaneamente.
I miei test per ora si sono fermati all'avere più tipi di server su arduino (http e telnet) in contemporanea, ma mai client e server insieme.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

AnTrea

Se sei un client non potrai mai ricevere richieste http, ma solo risposte alle tue richieste.


Era quello che sospettavo.

Quindi se volessi inviare dati ad un server e ricevere (dal server) un comando non potrei farlo.
Dovrei avere due arduino: un server e un client. Giusto?
Arduino, MODs e DIY: blackstufflabs.com

niki77

No, dovresti avere un fw su arduino che fa sia da client che da server.
Il server ti ascolta su una porta XX, il client ti invia richiesta ad un URL YYYY.
Sono due cose distinte che dovresti poter fare con un arduino solo, semplicemente utilizzando ethernetserver ed ethernetclient contemporaneamente sullo stesso sketch.

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

AnTrea


Sono due cose distinte che dovresti poter fare con un arduino solo, semplicemente utilizzando ethernetserver ed ethernetclient contemporaneamente sullo stesso sketch.


Ok, non sapevo che potesse essere entrambe le cose.
Ho trovato questo: http://arduino.cc/forum/index.php?topic=90210.0

grazie :)
Arduino, MODs e DIY: blackstufflabs.com

lesto

nono allora ad ogni richiesta HTTP fatta da arduino, il server risponde con una pagina HTML... quindi la tua risposta la puoi mettere nella pagina HTML!

poi se invece devi inviare un comando da una pagina HTML, il mio consiglio è di usare un javascript che crea un iframe nascosto nella pagina che fa fare al client la get sull'arduino... in questo modo colleghi il client direttamente con l'arduino, una architettura più p2p con i suoi pro e contro
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niki77

Non penso che abbia quella necessita lesto.
Io ho capito che a lui ha bisogno di comunicazione bidirezionale asincrona tra due entità , e che intendeva comunicare via http.
L'unica soluzione è che entrambe le entità siano client e server simultaneamente.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

AnTrea


Io ho capito che a lui ha bisogno di comunicazione bidirezionale asincrona tra due entità , e che intendeva comunicare via http.


esattamente.
bidirezionale e asincrono
Arduino, MODs e DIY: blackstufflabs.com

AnTrea

Sono due cose distinte che dovresti poter fare con un arduino solo, semplicemente utilizzando ethernetserver ed ethernetclient contemporaneamente sullo stesso sketch.


Pensavo: cosa succede nel momento in cui dal sito invio un comando quando in quel momento arduino è in modalità client e sta inviando un dato al sito? Come posso gestire queste... collisioni?

grazie
Arduino, MODs e DIY: blackstufflabs.com

lesto

è uno sbattimento getito dallo stack ISO/OSI, quindi semplicemente non te ne devi preoccupare, nel caso succeda verrà autogestito tutto
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

AnTrea


è uno sbattimento getito dallo stack ISO/OSI, quindi semplicemente non te ne devi preoccupare, nel caso succeda verrà autogestito tutto



Interessante.

Quindi quando faccio una request da un webservice verso arduino, se quest'ultimo è occupato a fare altre cose (magari proprio una request verso il webservice), viene messa in coda la richiesta finchè arduino non l'ascolta? tutto gestito il tutto dallo stack iso/osi...? 
Ottimo...
Arduino, MODs e DIY: blackstufflabs.com

lesto

è molto più complicata, e non sai quale richiesta sarà messa in coda. Per il resto vai tranquillo.
Ovvio che ogni errore aumenta i tempi e dopo un pò di errori in un certo slasso di tempo la connessione va in errore definitivo
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

pablos

10 gg fa
http://arduino.cc/forum/index.php/topic,144070.msg1082875.html#msg1082875
no comment

AnTrea


è molto più complicata, e non sai quale richiesta sarà messa in coda. Per il resto vai tranquillo.
Ovvio che ogni errore aumenta i tempi e dopo un pò di errori in un certo slasso di tempo la connessione va in errore definitivo


grazie lesto!





10 gg fa
http://arduino.cc/forum/index.php/topic,144070.msg1082875.html#msg1082875


letto.
ma in questo mio post approfondisco l'aspetto collisioni.
Arduino, MODs e DIY: blackstufflabs.com

pablos

#14
Jan 30, 2013, 10:14 pm Last Edit: Jan 30, 2013, 10:18 pm by pablos Reason: 1
quali collisioni?

nel loop
--------------
apri il client
trasmetti
chiudi
--------------
apri il server
ascolti
se c'e' una richiesta in corso .... rispondi, hai 20 secondi prima che il client vada in timeout
chiudi
--------------
fine loop

che collisioni vuoi avere?
no comment

Go Up