Notificatore Gmail: PHP + Arduino

Salve a tutti! :) Da tempo gira nel web un tutorial su come mostrare la presenza di nuove email nella casella di posta (gmail) tramite Arduino, che accende un rispettivo led... Ecco il rimando al tutorial: http://blog.tinyenormous.com/2008/11/25/gmail-notifier-project-for-dummies/ Ad ogni modo, credo che questa soluzione sia ben poco utile, visto che lo script python che controlla la presenza di nuove mail, risiede su di un pc che deve necessariamente essere acceso, e che fa eseguire il suddetto script ogni dato intervallo di tempo...

Il mio intento è dunque quello di elaborare uno progettino simile, ma che sia indipendente dal suddetto pc che deve eseguire lo script periodicamente... avendo un dominio online, ho trovato come soluzione, quella di far eseguire lo script dal server sul provider e qualora trovasse nuove mail, invia una chiamata (tcp/ip) all'Arduino di casa, dicendogli "accendi il led!". L'Arduino sarà facilmente reperibile via web usufruendo del noto servizio Dyndns.org e mappando opportunamente le porte sul router domestico... I problemi sono 2: 1- Come posso fare eseguire lo script sul server periodicamente dopo N secondi, se il mio provider non mi concede l'utilizzo del cronjob? Oltretutto se pagassi (e preferirei non farlo =( ) per avere a disposizione il cronjob, l'intervallo più piccolo di tempo impostabile è 1 giorno... il che è alquanto inutile... non beneficerei di alcun guadagno se mi viene indicato che ci sono nuove email nella posta solo una volta al giorno! Infatti se successivamente alle prime controllate, ne arrivassero altre, me ne accorgerei solo il giorno dopo!! 2- Ovviamente il mio Arduino implementerà un web server (posseggo infatti l'Arduino ethernet integrato)... ho visto vari tutorial sul web , ma non capisco come posso inviare la chiamata poi ad Arduino tramite il tcp/ip e comunicargli la presenza di nuove mail! Ho visto utilizzare il metodo GET in varie guide, ma non me ne è chiara l'implementazione...

Spero possiate aiutarmi, inizialmente con il primo quesito, per poi procedere alla soluzione del secondo che ritengo ben meno ardua!

Grazie anticipatamente a quanti si renderanno disponibili! Ovviamente il mio progetto una volta concluso sarà pubblicato gratuitamente, in piena filosofia "Arduiniana" :P

mikecurl91: Salve a tutti! :) Da tempo gira nel web un tutorial su come mostrare la presenza di nuove email nella casella di posta (gmail) tramite Arduino, che accende un rispettivo led... Ecco il rimando al tutorial: http://blog.tinyenormous.com/2008/11/25/gmail-notifier-project-for-dummies/ Ad ogni modo, credo che questa soluzione sia ben poco utile, visto che lo script python che controlla la presenza di nuove mail, risiede su di un pc che deve necessariamente essere acceso, e che fa eseguire il suddetto script ogni dato intervallo di tempo...

Il mio intento è dunque quello di elaborare uno progettino simile, ma che sia indipendente dal suddetto pc che deve eseguire lo script periodicamente... avendo un dominio online, ho trovato come soluzione, quella di far eseguire lo script dal server sul provider e qualora trovasse nuove mail, invia una chiamata (tcp/ip) all'Arduino di casa, dicendogli "accendi il led!". L'Arduino sarà facilmente reperibile via web usufruendo del noto servizio Dyndns.org e mappando opportunamente le porte sul router domestico... I problemi sono 2: 1- Come posso fare eseguire lo script sul server periodicamente dopo N secondi, se il mio provider non mi concede l'utilizzo del cronjob? Oltretutto se pagassi (e preferirei non farlo =( ) per avere a disposizione il cronjob, l'intervallo più piccolo di tempo impostabile è 1 giorno... il che è alquanto inutile... non beneficerei di alcun guadagno se mi viene indicato che ci sono nuove email nella posta solo una volta al giorno! Infatti se successivamente alle prime controllate, ne arrivassero altre, me ne accorgerei solo il giorno dopo!! 2- Ovviamente il mio Arduino implementerà un web server (posseggo infatti l'Arduino ethernet integrato)... ho visto vari tutorial sul web , ma non capisco come posso inviare la chiamata poi ad Arduino tramite il tcp/ip e comunicargli la presenza di nuove mail! Ho visto utilizzare il metodo GET in varie guide, ma non me ne è chiara l'implementazione...

Spero possiate aiutarmi, inizialmente con il primo quesito, per poi procedere alla soluzione del secondo che ritengo ben meno ardua!

Grazie anticipatamente a quanti si renderanno disponibili! Ovviamente il mio progetto una volta concluso sarà pubblicato gratuitamente, in piena filosofia "Arduiniana" :P

se devi metterlo su server php tanto vale che non apri le porte sul router ed ogni secondo fai una richiesta tramite arduino.

comunque è esattamente il servizio su cui sto lavorando io XD

superlol:

mikecurl91: Salve a tutti! :) Da tempo gira nel web un tutorial su come mostrare la presenza di nuove email nella casella di posta (gmail) tramite Arduino, che accende un rispettivo led... Ecco il rimando al tutorial: http://blog.tinyenormous.com/2008/11/25/gmail-notifier-project-for-dummies/ Ad ogni modo, credo che questa soluzione sia ben poco utile, visto che lo script python che controlla la presenza di nuove mail, risiede su di un pc che deve necessariamente essere acceso, e che fa eseguire il suddetto script ogni dato intervallo di tempo...

Il mio intento è dunque quello di elaborare uno progettino simile, ma che sia indipendente dal suddetto pc che deve eseguire lo script periodicamente... avendo un dominio online, ho trovato come soluzione, quella di far eseguire lo script dal server sul provider e qualora trovasse nuove mail, invia una chiamata (tcp/ip) all'Arduino di casa, dicendogli "accendi il led!". L'Arduino sarà facilmente reperibile via web usufruendo del noto servizio Dyndns.org e mappando opportunamente le porte sul router domestico... I problemi sono 2: 1- Come posso fare eseguire lo script sul server periodicamente dopo N secondi, se il mio provider non mi concede l'utilizzo del cronjob? Oltretutto se pagassi (e preferirei non farlo =( ) per avere a disposizione il cronjob, l'intervallo più piccolo di tempo impostabile è 1 giorno... il che è alquanto inutile... non beneficerei di alcun guadagno se mi viene indicato che ci sono nuove email nella posta solo una volta al giorno! Infatti se successivamente alle prime controllate, ne arrivassero altre, me ne accorgerei solo il giorno dopo!! 2- Ovviamente il mio Arduino implementerà un web server (posseggo infatti l'Arduino ethernet integrato)... ho visto vari tutorial sul web , ma non capisco come posso inviare la chiamata poi ad Arduino tramite il tcp/ip e comunicargli la presenza di nuove mail! Ho visto utilizzare il metodo GET in varie guide, ma non me ne è chiara l'implementazione...

Spero possiate aiutarmi, inizialmente con il primo quesito, per poi procedere alla soluzione del secondo che ritengo ben meno ardua!

Grazie anticipatamente a quanti si renderanno disponibili! Ovviamente il mio progetto una volta concluso sarà pubblicato gratuitamente, in piena filosofia "Arduiniana" :P

se devi metterlo su server php tanto vale che non apri le porte sul router ed ogni secondo fai una richiesta tramite arduino.

Il web server che ho sull'hosting, deve in qualche modo rimandare l'esito dell'operazione ad Arduino, quindi farò puntare ad esso tramite Dyndns, porta 8080 e sul router redirigo il traffico proveniente dalla 8080 verso Arduino ed è fatta...

comunque è esattamente il servizio su cui sto lavorando io XD

mikecurl91: 1- Come posso fare eseguire lo script sul server periodicamente dopo N secondi, se il mio provider non mi concede l'utilizzo del cronjob? Oltretutto se pagassi (e preferirei non farlo =( ) per avere a disposizione il cronjob, l'intervallo più piccolo di tempo impostabile è 1 giorno... il che è alquanto inutile... non beneficerei di alcun guadagno se mi viene indicato che ci sono nuove email nella posta solo una volta al giorno! Infatti se successivamente alle prime controllate, ne arrivassero altre, me ne accorgerei solo il giorno dopo!!

non puoi. o metti lo script in una pagina che un programma esterno la richiama ogni tot (ma a questo punto....), o usi cron, o crei un demone.

credo che a questo punto sia più facile implementare SSH su arduino :)

mikecurl91: 2- Ovviamente il mio Arduino implementerà un web server (posseggo infatti l'Arduino ethernet integrato)... ho visto vari tutorial sul web , ma non capisco come posso inviare la chiamata poi ad Arduino tramite il tcp/ip e comunicargli la presenza di nuove mail! Ho visto utilizzare il metodo GET in varie guide, ma non me ne è chiara l'implementazione...

apri il terminale (window o linux o mac) digita telnet, e prova ad inviare delle richieste GET scritte a mano.

per esempio adesso sono sulla pagina: http://arduino.cc/forum/index.php?action=post;quote=562405;topic=74623.0;num_replies=2;sesc=b5878ed9e943f4262c0744414f4a29b5

la richiesta GET è stata: GET /forum/index.php?action=post;quote=562405;topic=74623.0;num_replies=2;sesc=XXXXXXXxxXXxXxxxx HTT/1.0 Host: http://arduino.cc (due volte a capo)

ti ho detto il tuo arduino fa una chiamata in http alla tua pagina che in quel momento (magari passi in post una password sicura) verifica se ci sono nuove mail se è così printi 1 altrimenti printi 0.

l'arduino legge la pagina se legge 1 accende il led se legge 0 lo spegne

Mhhh... ora che ci penso... e se un fac-simile di demone lo faccio fare ad Arduino stesso? Ogni tot secondi esegue la chiamata, poi se ci sono email, sarò il server sull provider a chiamare Arduino e eventualmente far accendere il led... In pratica, prima Arduino si comporta da Client (quando chiama lo script sul server), poi da server, quando è chiamato dallo script...

Cosa ne dite?

possibile, la pgina PHP ti fa da ponte tra HTTPS (google) e HTTP (arduino)

mikecurl91: Mhhh... ora che ci penso... e se un fac-simile di demone lo faccio fare ad Arduino stesso? Ogni tot secondi esegue la chiamata, poi se ci sono email, sarò il server sull provider a chiamare Arduino e eventualmente far accendere il led... In pratica, prima Arduino si comporta da Client (quando chiama lo script sul server), poi da server, quando è chiamato dallo script...

Cosa ne dite?

attento che il casino è che non puoi usare le imap con php per gmail, ho provato ma... nulla da fare

io ho fatto così... http://arduino.cc/forum/index.php?topic=63799.0 magari ti è di aiuto..

Ci studierò sopra... molto interessante... ;)

credo che ci siano delle API apposite.

Oppre usi l’SMTP o L’IMAP da arduino… col POP3 puoi pure inviare le mail! e se l’autorizzazione è una semplice base64_encode, anche arduino ce la fa direttamente.

Oppre usi l'SMTP o L'IMAP da arduino...

infatti, il problema è che anche su imap richiede SSL.

Via imap ti basterebbe verificare quante email ci sono con flag UNSEEN, qui c'è un esempio (per server IMAP che non richiedono SSL): http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1270142324

anche l'smtp richiede SSL o TLS... uff mi sa che prima o poi bisogna portarci una libreria, chissà se è fattibile..