«

»

Dic 02

Stampa Articolo

NodeMCU Lua Wifi getUrl

Il nodeMCU Lua Wifi getUrl è un esempio di come poter usare il tuo ESP8266 per connetterti ad un sito web in modalità client get http

NodeMCU Lua WiFi

dopo l’articolo in cui hai imparato a connettere il node mcu al wifi con lua è il momento di iniziare a sfruttare la connessione wifi e provare qualche esempio di connessione.

Prima di passare alla realizzazione di un server e di iniziare a programmare pagine e pagine web per visualizzare sul browser come accendere e spegnere il classico led è bene prendere confidenza con i comandi del modulo net e le connessioni http.

NodeMCU Lua WiFi getUrl

Il primo esperimento che ti propongo è quello di connetterti ad un sito web, nello specifico ho scelto www.mauroalfieri.it, e chiedere gli header della homepage ( se non sai cosa sono gli header http puoi leggere il seguente link ) ecco come ho fatto:

conn=net.createConnection(net.TCP, 0)
conn:on("connection",function(conn, payload) 
            conn:send("HEAD / HTTP/1.1\r\n".. 
                      "Host: www.mauroalfieri.it\r\n"..
                      "Accept: */*\r\n"..
                      "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua;)"..
                      "\r\n\r\n") 
        end)
            
conn:on("receive", function(conn, payload)
            print( payload )
        end)
conn:dns('www.mauroalfieri.it',function(conn,ip) ipaddr=ip end)
conn:connect(80,ipaddr)

il risultato su node mcu lua wifi getUrl è stato:

NodeMCU Lua Wifi get mauroalfieri hader

leggendo lo sketch puoi notare facilmente i comandi:

linea 01: crei una connessione di tipo TCP in cui il parametro “0” significa “Non SSL” ( vedi manuale node mcu module )

linee 02-08: imposta l’evento “connection” della connessione associandogli la funzione che invia la richiesta della sola parte HEAD al sito www.mauroalfieri.it ( HEAD / HTTP/1.1\r\n Host: www.mauroalfieri.it\r\n )

linee 10-12: imposta l’evento “receive” della connessione associando la funzione che scriverà sul monitor seriale le informazioni ricevute in risposta dalla chiamata precedente;

linea 13: crea la query DNS per ricevere l’IP corrispondente all’url impostato;

linea 14: esegui la connessione all’IP ricavato dalla riga precedente sulla porta 80 ( http standard non ssl )

Nota la semplicità di questa chiamata con sole 14 righe hai interrogato un webserver e ricevuto gli HEADER della pagina interrogata.


Permalink link a questo articolo: http://www.mauroalfieri.it/informatica/nodemcu-lua-wifi-geturl.html

6 comments

Vai al modulo dei commenti

  1. lorenzo

    Anche io ho scoperto questa board in settimana e ne sono affascinato,
    a meno di 3 EURO ti porti a casa un modulo wifi in una scheda programmabile.
    ho visto che esistono almeno altre due versioni 0.1 e 0.9 perciò prima di comprarla aspetto un altro pochino per capire quello che compro.
    complimenti per tutto il sito e resto in attesa di vedere sviluppi per questa board sui tuoi post 😉
    un saluto
    Lorenzo

    1. Mauro Alfieri

      Ciao Lorenzo,
      si è una scheda davvero interessante.

  2. Marco Sangiorgio

    ciao Mauro, intanto grazie per i tuoi tutorial ben spiegati e documentati,
    ho un dubbioi sulle ultime 2 righe dell’esempio:

    conn:dns(‘www.mauroalfieri.it’,function(conn,ip) ipaddr=ip end)
    conn:connect(80,ipaddr)

    se risolvo l’IP del nome del mio dominio e poi lo navigo non vengo indirizzato sulla pagina principale del mio dominio ma genericamente sulla webmail, stessa cosa accade con il tuo dominio http://www.mauroalfieri.it che corrisponde al’IP 213.165.88.116 ma che rimanda a https://webmail.1and1.it/

    la domanda è: a cosa serve risolvere e puntare l’IP se poi devo fare la GET di una pagina che si trova altrove?

    Grazie ancora e saluti
    Marco

    1. Mauro Alfieri

      Ciao Marco,
      non ho compreso il tuo dubbio. Se usi l’IP di un server via getUrl il server ti rimanderà al DefaultDomain impostato nel server, puoi verificare con chi gestisce il tuo server perché l’Ip punti ad una webmail, nel mio caso l’ho impostato io.

      1. Marco Sangiorgio

        Ciao Mauro,
        grazie per la precisazione, il mio dubbio era proprio il caso dell’impossibilità di configurare il DefaultDomain per far puntare l’ip del sito web e che velocizza le chiamate rest in quanto si elimina il tempo di elaborazione del dns.
        Comunque navigando ho trovato altri utenti con lo stesso problema di non conoscere o poter risolvere l’ip del proprio dominio, alla fine ho scoperto che banalmente basta sostituire l’ip con l’url nella chiamata connect, es.:
        conn:connect(80,’mauroalfieri.it’)

        Grazie ancora e saluti
        Marco

        p.s. ho visto che abbiamo qualche amico in comune, come Costantino e Zoe di WeMake 😉

        1. Mauro Alfieri

          Ciao Marco,
          puoi sostituire il nome del domino ma introduci la latenza di risoluzione dns.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>