Con il dispositivo che andiamo a presentare sarà possibile pilotare un carico, collegato a ESPertino, quando effettueremo una vera chiamata con il nostro smartphone. Inoltre tutte le telefonate in partenza dal nostro cellulare saranno anche monitorate su un foglio elettronico remoto, in modo da avere, costantemente, sotto controllo il traffico in uscita.
Introduzione
Con l'accoppiata vincente ESPertino e IFTTT non ci sono limiti. E' solo la fantasia a dettare i confini. Le possibilità realizzative offerte sono così numerose che, spesso, si ha qualche difficoltà a progettare una applicazione. Vediamo in che cosa consiste l'idea di questo articolo che può essere, naturalmente, modificata ed espansa secondo le più svariate esigenze e necessità.
Controlliamo le telefonate in partenza
Il dispositivo che andiamo a realizzare non serve per spiare qualcuno, anche perché le rilevazioni sono effettuate sul proprio smartphone. Ha, invece, il compito di monitorare e avvisare l'utente in caso d'inoltro di una chiamata vera. In dettaglio il progetto si occupa di:
- far lampeggiare un diodo Led, collegato alla scheda ESPertino, in caso di composizione di vero numero di telefono. La segnalazione dura qualche secondo, modificabile a piacere;
- memorizzare, in un foglio elettronico remoto, i dati della telefonata. Le informazioni riguardano la data e l'ora della chiamata, il numero di telefono chiamato, il nome del destinatario della telefonata e la durata della stessa, espressa in secondi.
La segnalazione avviene, ovviamente, quando si riattacca poiché il sistema deve contabilizzare e calcolare la durata effettiva della chiamata. Si tratta, come si può comprendere, di un'applicazione estremamente utile, per diversi scopi.
Gli ingredienti necessari
Per la realizzazione del progetto occorre preparare "il terreno" in maniera adeguata. Per lo scopo, infatti, servono le seguenti componenti:
- applicazione IFTTT installata sullo smartphone e abilitata con le proprie credenziali di registrazione;
- scheda di sviluppo ESPertino;
- server Web per hosting. Nell'esempio si è utilizzato quello di Aruba;
- l'esecuzione degli script in PHP deve essere abilitata.
Schema elettrico
Lo schema elettrico, visibile in figura 1, è estremamente banale in quanto il dispositivo presentato è molto generico. Prevede solo un diodo Led collegato alla porta GPIO16, preceduto dalla solita resistenza di limitazione da 120 ohm. Ricordiamo che la d.d.p. delle porte di I/O è di 3.3V, quando si trovano a livello logico alto. L'utente può modificarlo secondo le proprie necessità. Può, ad esempio, utilizzare uno dei due relé a bordo della scheda o, ancora, collegare un transistor o un Mosfet per pilotare carichi ben più importanti. Per ora interessa, maggiormente, la logica e la filosofia di funzionamento del sistema.
In figura 2, invece, è possibile osservare il minimale piano di cablaggio.
Prepariamo lo script in PHP
Quando si ha a disposizione un server Web, nel quale effettuare le più disparate operazioni in conseguenza di una richiesta di tipo HTTP, la libertà di azione è molto maggiore. Si deve creare uno script in PHP (nel nostro caso esso ha il nome "lampada.php") che, quando invocato attraverso la chiamata di una URL, memorizzi un file di testo in una cartella, con un particolare contenuto. L'indirizzo chiamato deve anche contenere un parametro GET (in questo caso) che lo script stesso controlla e sceglie, di conseguenza, la stringa da memorizzare. Con un esempio chiariamo perfettamente il concetto. Se la URL chiamata è la seguente:
http://www.elektrosoft.it/public/lampada.php?stato=1
lo script in PHP provvederà a memorizzare nel file "lampada.txt", contenuto nella stessa cartella remota, la stringa "ACCESA".
Se, invece, la URL chiamata è la seguente:
http://www.elektrosoft.it/public/lampada.php?stato=0
lo script in PHP provvederà a memorizzare nel file "lampada.txt" la stringa "SPENTA".
[...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2322 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Certo che IFTTT apre una miriade di applicazioni di ogni tipo. La fantasia è il solo limite. Il tempo di risposta dei servizi è di circa 8-10 secondi ma, considerando che IFTTT è utilizzato da milioni di utenti, si tratta di tempi eccezionalmente veloci.
Grazie Giovanni del bel articolo che stavo aspettando. Mi metto subito al lavoro per adattare il tuo progetto al mio caso ovvero comandare espertino con google assistant tramite IFTTT, ovvero comandare dei carichi con comandi vocali anche da remoto. Modificando il progetto precedete, ovvero quello della playstation, e questo sarò in grado di mettere in collegamento due espertini ovvero la pressione di un pulsante su uno provoca l’eccitazione di un relè sull’altro e viceversa fuori dalla rete di casa e la possibilità di comandare gli stessi con comandi vocali inviati tramite smartphone o tramite Google Home Mini Smart Assistant. Un saluto a tutti Voi. a presto.
Grazie a te Carboema66.
Buon lavoro.
Non mancare agli altri due articoli di approfondimento!!!
Vedrai che l’appetito vien mangiando e che IFTTT riuscira’ a risolvere tanti problemi.
Il nostro scopo è proprio quello di piantare un semino, sicuramento cresceranno tanti alberi sani, belli e robusti!!!
Buon lavoro!!!!!
Ciao a Giovanni ed a tutti i lettori.
Non avendo un web server il primo passo per me è procurarmene uno e possibilmente almeno in questa fase gratis. Scartato Aruba perché a pagamento ho optato per Hostinger. Mii sono iscritto e creato la mia prima pagina web che ha come indirizzo https://nomesito.000webhostapp.com.
Il sto è cosi organizzato root / e sottodirectory le seguenti : public_html e tmp. Attraverso il servizio ftp ho caricato il file lampada.php in public_html e richiamato la seguente url:
https://nomesito.000webhostapp.com/public_html/lampada.php?stato=0
che mi ha restituito l’errore 404 Not Found. ovviamente nulla e successo in public_html cioè il file lampada.txt non è stato creato. A questo punto ho creato nella root la dir public e li copiato il file lampada.php ed eseguito la url:
https://nomesito.000webhostapp.com/public/lampada.php?stato=0
ma niente stesso errore e stesso risultato di prima.
Sia nel file che nella dir ho abilitato tutti i pemessi, ma niente.
A questo punto mi arrendo, non so come andare avanti non so se l’esecuzione degli script in PHP è abilitata ed in caso contrario non so come abilitarla . Sarà forse perchè è gratis e quindi i servizi sono limitati? o forse sono io che sono limitato? Che ne pensate? Dove potrebbe essere il problema?
Un Grazie in anticipo.
Ciao.
Uhmmm… visto che il dominio è gratuito avrà sicuramente delle limitazioni. Dal nome della cartella “public_html” deduco che essa è abilitata a contenere solo i files contenenti linguaggio html….. penso…
In ogni caso NON TI ARRENDERE…. Aruba costa solo 25 euro….
In ogni caso, se vuoi fare un test, puoi usare il mio servizio. Mi mandi i files, li inserisco nella cartella pubblica e li provi. MA NON TI ARRENDERE :-))))))))))))
PS…. Come FTP usi Filezilla? Hai visto se effettivamente il files PHP si trovi nella cartella remota?
CIao
Per hosting gratuito che supporti PHP potete provare http://www.altervista.org, li sembra che il php funzioni discretamente bene, naturalmente per usi di test vari.
Come database potresti utilizzare sqlite che è compreso nelle estensioni che ti mette a disposizione altervista in maniera gratuita.
Prima di fare qualsiasi cosa crea uno script php semplicissimo tipo questo:
così testi se l’interprete funziona e soprattutto come è stato configurato.
Saluti a tutti.
Grazie Giovanni della disponibilità, Non voglio darti ulteriore disturbo, Non mi arrendo proverò a iscrivermi a qualche altro sito gratis e se non va magari allora se mi fai questa cortesia ti sono debitore. Giusto per testare e mettere a punto quanto intendo realizzare. Non ho usato filezilla ma il loro servizio ftp. Comunque confermo che i file ci sono ed in entrambe le cartelle ovvero la loro public_html e quella da me creata public. Ad ogni modo ti tengo aggiornato circa i progressi ,cosa che potrebbe essere utile anche agli altri lettori.
Un Grazie a tutti Voi
Grazie bcostant, ci provo subito. Vi faccio sapere. A presto,
Ok allora con altervista funziona ed è gratis. l’esecuzione degli script in PHP è abilitata di defaut. Non ho fatto altro che, dopo aver creato un sito, caricato il file lampada.php in una dir chiamata public precedentemente creata. La creazione della cartella public e il caricamento del file l’ho fatto da sito loro stesso usando i servizio ftp proprietario. Ho quindi richimato l’url:
http://miosito.altervista.org/public/lampada.php/?stato=0 ed il risultato e stato; ” Il flag e’ ‘SPENTA’ ” e cosi’ per l’url http://chamaleon.altervista.org/public/lampada.php/?stato=1 il risultato è Il flag e’ ‘ACCESA’. A questo punto , sempre usando il loro servizio ftp ho verificato la presenza del file lampada.txt nella cartella public che come era ovvio essere c’era. A questo punto andiamo avanti con la modifica al progetto di Giovanni. Un doveroso ringraziamento a bcostant per la dritta ed a Giovanni per la disponibilità ad ospitarmi su suo sito. Siete fantastici!!
Ciao ragazzi ho un altro problema.
il comando if(client.connect(host, 80)) non si connette al server per cui salta di pari passo l’intero ciclo if. Nel mio caso const char* host = “http://miosito.altervista.org”; ho provato a sostituire 80 con 21 ma niente. Bho non capisco perchè! Che ne pensate? potrebbe essere un problema di porta?
Grazie comunque.
Risolto!!
il problema era proprio in char* host = “http://miosito.altervista.org”. andava eliminato http://.
ora tutto funziona perfettamente!!
Grazie ugualmente.
Buongiorno a tutti,
Questo articolo ed il precedente ed i relativi progetti di Giovanni mi hanno fatto fantasticare sulla possibilità di mettere in comunicazione fra di loro uno o più espertini su reti diverse usando il servizio IFTTT di google (ma anche un espertino con un’altro modulo di altro fabbricante) , Grazie al suo aiuto ma anche a quello di bcostant il progetto ora funziona. Ogni espertino può controllare gli altri e viceversa.
Ogni espertino deve avere in file “lampada.php” e anche “lampada.txt” sul server univoci. Ho risolto rinominando i file con il Chip ID (es. ESP32_56738393.php). Ora per rendere la cosa più professionale ed automatica vorrei che al primo collegamento in rete espertino creasse lui il file direttamente sul sito senza doverlo fare io manualmente ogni volta. Quindi la domanda è come si fà? Quale è il codice? A questo punto controllando il file ESP32_xxxxxxxxxx.php sul sito, si controlla espertino, ed allora perchè non scrivere un’app per smartphone proprietaria per controllarlo? questo sarà il mio prossimo passo. Però ho notato che la variabile “pacchetto” viene scritta solo ad ogni variazione di stato del file txt ovvero ogni volta che il file viene scritto. Ho bisogno invece di interrogare il file txt per sapere quale era l’ultimo stato di espertino ovvero se acceso o spento. Ma interrogare il file txt può servire anche a memorizzare altri parametri di configurazione della scheda o a configurare la scheda a distanza usando lo smartphone .Quindi anche qui vorrei come fàre?
Ai visto Giovanni? Non mi sono arreso e grazie a Voi sono andato avanti. Non vorrei però essere andato troppo avanti nel senso che forse era già vostra intenzione pubblicare qualcosa di simile. nei prossimi articoli. Ed ora chiudo con una tua frase ” La fantasia è il solo limite “.
Un saluto a tutti Voi, a presto.
Ciao carboema66, io penso che la cosa migliore da fare per rendere l’applicativo più professionale è quella di abbandonare il file di testo e memorizzare le informazioni in un database, così da poter fare tutto quello che dici ed anche altro.
Potresti utilizzare un database sqlite, semplice da gestire in php e soprattutto supportato da altervista in maniera gratuita.
Anche duplicare il codice su più file php non è proprio il massimo, potresti inviare in get o in post l’identificativo del modulo esp32 e lasciare la gestione del tutto allo script php.
esempio (get):
file.php?id=56738393
Lato PHP puoi recuperare l’ID tramite $ID = $_GET[“ID”];
Per poter creare un’app su cellulare ma anche su tablet ti consiglio il progetto Apache Cordova, ma qui cominciamo ad andare un po sul complicato e non penso che in un post posso aiutarti più di tanto.
Nel caso se metti il progetto su un repository git, magari su github potrei aiutarti di più, sempre tempo permettendo 😉
P.S.
Ho notato che a volte nei commenti vengono rimossi i pezzettini di codice che scrivo, se anche in questo dovessero mancare, se mi giri la tua mail, ti invio nuovamente la risposta per e-mail.
Saluti,
Beniamino
grazie bcostant quante dritte che mi hai dato!! ed anche molta roba su cui studiare e lavorare. Anche il database sqlite che mi avevi accennato prima e interessante anche se non so da dove cominciare. Bhe come ho detto prima devo studiare. Hai ragione anche sul fatto che che qui più di tanto non si può, Cercherò di mettere in esecuzione tutto quello che mi hai consigliato e ti mando la mia email [email protected]. anche se scrivendo qui, secondo me, potrebbe essere di aiuto anche per gli altri che ci leggono. L’idea del repository su git non è male mi attrezzo anche per quello. Ho bisogna per ora di completare tutto il lavoro di questa notte. Sai come risolvere le mie richieste del precedente post? Intanto vado a curiosare sul progetto Apache Cordova.
Un cordiale saluto a tutti Voi.
Complimenti per l’articolo molto chiaro e stimolante. Utilissimi, poi, i vari commenti proprio nell’ottica di condividere problemi e risultati.