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.

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/informatica/nodemcu-lua-wifi-geturl.html

6 comments

Skip to comment form

    • lorenzo on 3 dicembre 2016 at 16:41
    • Reply

    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. Ciao Lorenzo,
      si è una scheda davvero interessante.

  1. 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. 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. 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. Ciao Marco,
          puoi sostituire il nome del domino ma introduci la latenza di risoluzione dns.

Lascia un commento

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.