FTPmicro Tutorial – SMTP

Introduzione
In questo esempio, vogliamo utilizzare le nuove funzionalità dello stack TCP/IP di Microchip per permettere ad FTPMicro di inviare una e-mail al verificarsi di un determinato evento.
Il codice proposto, si basa principalmente sul precedente esempio, per il quale,però, veniva impiegato una versione meno recente dello stack.
In particolare, avremo una pagina web attraverso la quale è possibile monitorare la temperatura del dispositivo e modificare lo stato dei LED. A questa verrà aggiunto (per comodità) un nuovo pulsante per l'invio dell'e-mail, ma vedremo che sarà possibile effettuare l'invio in modo assolutamente automatico.

Impostazioni
Innanzitutto FTPMicro deve essere configurato in modo tale da poter raggiungere la rete Internet, ovvero è necessario assegnare un indirizzo IP e configurare gli indirizzi del gateway e dei server DNS. Questa operazione può essere effettuata modificando le relative define nel file TCPIPConfig.h.
Inoltre, è necessario avere accesso ad un server SMTP, vedremo tra poco dove inserire il suo indirizzo.

I file utilizzati
Vengono ripresi gli stessi file utilizzati in precedenza, ovvero index.htm, status.cgi, style.css eahah.js. Solo il primo verrà (lievemente) modificato, e a questi si aggiungerà il file mail.htm che contienesemplicemente la scritta "Mail Sent".
Il codice aggiunto alla pagina principale, è il seguente: <div class="left"> <form> <table class="status_table"> <tr><th>Mail</th></tr> <tr><td><input type="submit" value="e-mail" onclick="javascript: noloadAHAH(''/Mail.htm?m=1'',''maildiv'',''GET''); return false;" /></td></tr> <tr><td><div id="maildiv"> </div></td></tr> </table> </form> </div>e si trova immediatamente prima del tag </body>. Con questo aggiungiamo un pulsante che richiama la pagina mail.htmcon il parametro m.

Il codice
Il codice necessario al corretto funzionamento del software si trova nel file MainDemo.c ed èin gran parte costituito dal codice già presente nell'esempio citato prima.
L'invio del messaggio avviene attraverso la funzione SMTPDemo, la quale viene chiamata periodicamente nel metodo main; in questo modo è possibile inserire direttamente all'interno della funzione il controllo dell'evento che determina quando sia necessario l'invio dell'e-mail. Infatti quando si verificherà tale evento, non appena verrà chiamata la funzione, il controllo darà esito positivo ed inizierà la procedura di invio.
Tale controllo deve essere inserito tra queste due righe: case MAIL_HOME: break;Per iniziare l'invio è sufficiente incrementare di uno la variabile MailState. La procedura inizierà effettivamentealla successiva chiamata di SMTPDemo.

Una modifica è stata apportata al metodo HTTPExecCmd, per intepretare il parametro m:
void HTTPExecCmd(BYTE** argv, BYTE argc){
if (argv[1][0] == ''t'') {
switch (argv[2][0] - ''0'') {
case CMD_LED1 :
LED1_IO = !LED1_IO;
break;
case CMD_LED2 :
LED2_IO = !LED2_IO;
break;
}
}
else
if (argv[1][0] == ''m'')
SMTPDemo(TRUE);
}
Rispetto al codice ufficiale, ho aggiunto al metodo SMTPDemo un paramentro di tipo booleano, che ci permette di iniziarel'invio dell'e-mail da qualunque punto del codice, piuttosto che effettuare un controllo all'interno di quel metodo.

SMTPDemo
L'invio di una e-mail non è immediato, ma richiede più chiamate del metodo SMTPDemo, perciò vengono sfruttati due LED per segnalare lo stato dell'operazione. Il primo LED è acceso durante il processo di invio,mentre il secondo, al termine dell'operazione, si accende se questa è andata a buon fine.

Per concludere, vediamo cosa troviamo all'interno di SMTPDemo.
- Nella prima parte (MAIL_BEGIN), vi sono alcune stringhe di "configurazione", ovvero l'indirizzo del server SMTP,l'indirizzo del destinatario, quello del mittente e l'oggetto del messaggio.
- Nella sezione seguente (MAIL_PUT_DATA), viene scritto nel testo del messaggio una prima parte del messaggio (puramente statica),e poi viene inserito il valore attuale della temperautra.
- Infine (MAIL_SMTP_FINISHING) si conclude l'operazione.
, In questo esempio, vogliamo utilizzare le nuove funzionalità dello stack TCP/IP di Microchip per permettere ad FTPMicro di inviare una e-mail al verificarsi di un determinato evento.

Tutta la documentazione su FTPmicro è disponibile a questa pagina FTPmicro per Utenti Premium.
Potete realizzarlo da soli (fai-da-te) scaricando tutti i codici sorgenti (Schema elettrico realizzato con Orcad, lista parti, circuito stampato realizzato con Orcad, file gerber, codice sorgente assembler realizzato su piattaforma Microchip).

Il progetto montato e collaudato è disponibile sul nostro store --> FTPmicro

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend