Finalmente un interessante articolo sull'accoppiata vincente ESPertino e IFTTT. Realizziamo assieme, con molta facilità, un sistema di controllo della PlayStation di nostro figlio. Con esso è possibile ricevere delle notifiche sul telefonino, su Facebook e sulla email, quando la console viene accesa oppure spenta. In questo modo sarà possibile controllare, a distanza, i tempi di permanenza dei nostri bambini davanti la TV. Il tutto è realizzato grazie all'ausilio del servizio IFTTT.
IFTTT: il Web completamente automatizzato
Per chi ancora non lo sapesse, IFTTT è un geniale servizio online e gratuito che meccanizza e, soprattutto, mette in collegamento tantissime piattaforme presenti sulla Rete (vedi figura 1). La sua filosofia si basa sul concetto:
"se si verifica questo evento, allora esegui questa azione"
proprio in coerenza e in linea con qualsiasi linguaggio di programmazione. L'acronimo di IFTTT è, infatti, "IF THIS THEN THAT". L'articolo non vuole costituire, ovviamente, un tutorial sull'IFTTT, per il quale rimandiamo, invece, i lettori alla immensa mole di documentazione presente sulla Rete. In ogni caso, basti pensare che il servizio permette la realizzazione d'infiniti scenari diversi, di qualsiasi genere e per ogni esigenza. Seguono alcuni esempi utili affinché ci si possa rendere conto delle enormi potenzialità offerte:
- se domani è prevista la neve, allora ricevi una email;
- se si viene taggati in una foto su Facebook, allora ricevi una notifica;
- se ci si allontana dalla propria abitazione, allora spegni una particolare lampada di casa;
- se un particolare sito di news pubblica una notizia, allora visualizza un messaggio sul diario di Facebook;
- se la temperatura scende al di sotto di un certo valore, allora pubblica una foto su Instagram;
- se l'ora corrente è quella programmata, allora si attiva lo scaldabagno;
- e così via.
Tale elenco è estremamente riduttivo e non mette in luce le effettive potenzialità del servizio. Gli esempi potrebbero continuare letteralmente all'infinito e ogni giorno IFTTT aggiunge nuovi servizi, anche a grande richiesta degli utenti.
Per la realizzazione del progetto proposto in articolo occorre, ovviamente, disporre di un accesso al servizio. Ci si deve, dunque, registrare in modo che l'accesso possa permettere la creazione dei primi automatismi.
In cosa consiste il progetto
Il sistema che stiamo andando a realizzare è, fondamentalmente, una semplice unità di controllo, costituita da ESPertino, che ci permette di sapere e di conoscere, su diversi canali informativi d'Internet, l'ora di accensione e di spegnimento della PlayStation di nostro figlio. Con questa possibilità, noi genitori potremmo, poi, essere in grado di:
- coonoscere il tempo di permanenza di nostro figlio davanti la TV per prendere, eventualmente, rimedi o riduzioni delle attività ludiche;
- calcolare le spese dell'energia elettrica consumata. In questo caso è sufficiente calcolare i periodi di accensione della console, in base al suo effettivo consumo elettrico. Tutti questi calcoli possono essere meccanizzati.
Ovviamente il progetto è ampiamente modificabile e adattabile a qualsiasi altro tipo di console o di dispositivo. Quello che più ci preme è, al momento, la didattica e l'erogazione della conoscenza sul funzionamento delle cose.
Ecco, in parole povere, il compito espletato dal nostro sistema:
- la scheda ESPertino rileva lo stato logico della PlayStation;
- se la PlayStation viene accesa:
- una email di notifica (una sola) è inviata attraverso IFTTT;
- se la PlayStation viene spenta:
- una email di notifica (una sola) è inviata attraverso IFTTT.
Ovviamente è necessario predisporre la scheda di sviluppo alla connessione a Internet tramite WiFi, come vedremo più avanti nel paragrafo riservato alla creazione e alla scrittura dello sketch.
Come sapere se la PlayStation è accesa o spenta
Per conoscere lo "stato logico" della console, a una prima analisi le soluzioni potrebbero essere molteplici. Si potrebbe realizzare, ad esempio, un sistema di rilevazione di assorbimento di corrente che stabilisca la "finestra" d'intervento del dispositivo. Oppure, un sensore di luce che rilevi l'illuminazione della televisione a cui risulti collegata la PS. Tutti metodi validi ma leggermente complessi. Ma, come al solito, le soluzioni semplici esistono sempre e sono, spesso, dietro l'angolo. Per sapere se la console è accesa o meno, non occorre realizzare alcun tipo di sensoristica. E' sufficiente collegare, al dispositivo, un semplice cavetto USB e rilevare la tensione presente ai due fili adibiti all'alimentazione dello stesso, come visibile in figura 2. Questa soluzione permette la generalizzazione del progetto, che può essere utilizzato anche per altre finalità su dispositivi diversificati. Per raggiungere tale scopo è sufficiente procurare un cavo USB, tagliarlo e rintracciare "i soli due fili" preposti al passaggio della tensione di 5V.
Schema elettrico
Bene, il connettore USB si comporta, dunque, da "sensore" per poter determinare lo stato elettrico della console. Possiamo, pertanto, approntare il semplice schema elettrico, utilizzante la scheda ESPertino. Il segnale del dispositivo esterno è rilevato da una porta logica d'ingresso dello stesso sistema di sviluppo. Occorre fare attenzione che tali porte funzionano con una logica positiva a 3.3V e pertanto si rende necessario abbassare il livello di tensione del sensore USB da 5V a 3.3V, attraverso un semplice traslatore costituito da un partitore resistivo, come mostrato in figura 3. Esistono diverse configurazioni di valori per raggiungere lo scopo ma non si deve "troppo" caricare la porta USB della PlayStation con una entità resistiva troppo bassa. Il valore dei resistori è determinato, come sempre, dalla legge di Ohm.
In questo modo, si vengono a verificare due diverse situazioni:
- se la USB della PS riporta la tensione di 5V (accesa), il partitore l'adegua a 3.3V;
- se la USB della PS riporta la tensione di 0V (spenta), il partitore la conferma a 0V.
Con tale soluzione l'assorbimento di corrente sulla PlayStation è molto basso e dalla sua USB il partitore "ruba" solo circa 1.8 milliampere, valore quasi insignificante.
Lo schema elettrico è proposto in figura 4. L'ingresso digitale è affidato alla porta GPIO34. E' indispensabile che le masse della scheda ESPertino e della PlayStation siano collegate tra loro, ossia in comune. In caso contrario l'entità del segnale logico in entrata potrebbe essere imprevisto. Nel preparare il cavo USB è necessario eliminare i due fili preposti al transito dei dati e lasciare intatti quelli per l'alimentazione. Ciò può essere eseguito con l'ausilio di un tester cercando, tra tutte le connessioni, quali presentino un D.D.P pari a 5V. La parte hardware è tutta qui.
[...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2794 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.
IFTTT è un sistema di automatizzazione dei servizi davvero interessante. Ogni giorno si aggiungono sempre più servizi alla piattaforma. L’utilizzo di IFTTT con ESPertino da’ un valore aggiunto alle proprie applicazioni e toglie lavoro ai programmatori.
HO CARICATO SUL MIO ESPERTINO IL VOSTRO SKETCH E FUNZIONE ALLA GRANDE.
MI CHIEDO SE SI PUO FARE L’OPERAZIONE INVERSA OVVERO INVIARE UNA RICHIESTA DA IFTTT TRAMITE IL SERVIZIO WEBHOOKS ED AVERE UNA RISPOSTA SU EPERTINO ESEMPIO ACCENDERE E SPEGNERE UN LED.
IMMAGINO COSI DI COLLEGARE GOOGLE HOME AD ESPERTINO. COSA CHE HO GIA FATTO CON IL SERVIZIO ADAFRUIT(CHE E GRATIS ) . MA SE SI POTESSE FARE CON WEBHOOKS SAREBBE MEGLIO.
IN CASO AFFERMATIVO MI CHIEDO CHE TIPO DI RICHIESTA DOVREI MANDARE AD ESPERTINO, A QUALE INDIRIZZO E SU COSA DEVE METTERSI IN ASCOLTO ESPERTINO.
SAREBBE BELLO COMANDARE DA GOOGLE ASSISTANT IL NOSTRO ESPERTINO ELEVANDOLO COSI A LIVELLI PROFESSIONALI DI TUTTO RISPETTO.
UN SALUTO A TUTTI VOI SIETE FANTASTICI||
Salve.
Tra pochissimi giorni usciranno altri articoli proprio su quanto da Lei desiderato, ovvero una comunicazione inversa. Gli articoli sono gia’ pronti, saranno pubblicati a breve.
Grazie dei complimenti e a presto.
Grazie a Voi per la disponibilità , professionalità e semplicità con cui trattate gli argomenti. Attendo con ansia le prossime uscite.
Salve
A ogni modo ecco qualche anticipazione:
Per il prototipo che vedrà nei prossimi articoli occorrono:
– 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.
In pratica si deve creare uno script sul Server in 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 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.cicciociccio.it/public/prova.php?stato=1
lo script in PHP provvederà a memorizzare in un file di testo”pippo.txt”, contenuto nella stessa cartella remota, una determinata stringa.
Adesso la palla passa agli Applet di IFTTT che invocheranno tale URL al verificarsi di qualsiasi evento.
Da parte sua, ESPertino provvederà a controllare il file di testo in questione, in polling ogni “tot” secondi, eseguendo le direttive del caso. Leggendo poi l’articolo avrà senz’altro tutto più chiaro.
Saluti
Giovanni Di Maria
grazie Giovanni sono troppo impaziente, io già ci proverei.. Hai detto Aruba ? ok vada per quello. Nella Applet IFTTT la Url la invoco con il servizio webhooks che abbiamo gia usato? Grazie a presto.
Ciao carboema66.
Si esattamente.
In pratica uno script PHP, eseguito da una URL da IFTTT (e per questo puo’ essere scelto “qualsiasi” trigger, puo’ avere la seguente struttura (scusa l’indentazione, ma probabilmente qui non viene rispettata):
A seconda dell’evento che succede, puoi richiamare lo script (sia direttamente da un browser o dal servizio Webhooks con:
http://www.cicciociccio.it/public/pippo.php?stato=0
oppure …?stato=1
Quindi, ESPertino, tramite un controllo Web HTTP di tipo GET in polling, puo’ controllare il contenuto del file pippo.txt, eseguendo qualsiasi operazione sulla scheda (Led, Lampade, ecc ecc ecc).
Assicurati che sul Webserver lo script PHP abbia i “permessi” per scrivere un file (questo dipende dalla cartella in cui viene creato.
I codici per interfacciare ESPertino a Internet li trovi su uno delle decine di articoli di ESPertino che ho scritto su EOS.
Buon lavoro 😉
GIovanni
Salve, ho iniziato ad usare Espertino per un progetto di raffreddamento di un piccolo armadio contenente diversi apparati. Il progetto è semplice ( per questo sono riuscito a farlo) ed in pratica
leggo la temperatura all’interno dell’armadio con il sensore DHT11 ed al supermento di una temperatura impostata attivo i rele per far partire le ventole. Adesso vorrei implementare il progetto rendendolo più funzionale collegando espertino alla mia rete Wifi. Cercando di utilizzare la parte di connessione descritta in questo articolo ricevo sempre come IP 0.0.0.0. Sapreste dirmi se è un problema di librerie, del mio Wifi o altro ? Grazie
Vedi se ti può essere utile questo https://it.emcelettronica.com/un-sistema-di-antifurto-con-espertino
Grazie, ma è il primo articolo che ho letto e mi sembra dal punto di vista Arduino Ide la configurazione sia corretta.
Risolto grazie per la consulenza. Ho reinstallato il tutto e adesso funziona, molto probabilmente nella installazione precedente qualcosa mi era sfuggito.
Questo errore si verifica quando ESPertino non riesce a instaurare una connessione logica con l’Host. Potrebbe essere probabilmente un problema di password o del nome del WiFi specificato nello sketch. Verifichi tali dati inserendo perfettamente (casesensitive) il nome del router WiFi andando, magari, nella sua pagina di configurazione 192.168.0.1 o simili.
Grazie per la risposta, ma sia il SSID che la password sono corretti faccio copia e incolla dalle info del router. L’unico avvertimento quando carico il software sula scheda è: “ATTENZIONE: la libreria SPI dichiara di funzionare sulle architetture (esp32) e potrebbe non essere compatibile con la tua scheda che utilizza l’architettura (ESPertino). Per il resto funziona tutto tranne la connessione al Wifi.
Puo’ provare a cancellare TUTTO l’Arduino IDE e reinstallare l’ultima versione, assieme alle ultime librerie ESP32 da HitHub.
Se vuole puo’ postare qui parte del codice relativo al WiFi, compresa la parte del setup().
Saluti
Risolto grazie per la consulenza. Ho reinstallato il tutto e adesso funziona, molto probabilmente nella installazione precedente qualcosa mi era sfuggito.
Salve, volevo sapere se i display compatibili arduino sono anche totalmente compatibili con
Espertino , altrimenti sapreste consigliarmi un display da collegare ad Espertino ?
Grazie per l’attenzione
saluti,
Salve.
DIsplay Oled, LCD o a 7 segmenti?
Ad ogni modo, Arduino funziona con logica digitale positiva di 0V-5V, mentre ESPertino (ESP32) a logica digitale positiva di 0V-3.3V. Pertanto, nelle caratteristiche del display occorre controllare proprio tale valore.
Personalmente ho provato con successo alcuni display LCD a 5V con ESPertino e alcuni modelli funzionano bene, altri no. Si puo’ usare, al limite, un translatore di livelli.
Se poi il display adotta qualche protocollo a 2 fili, allora non ci sono problemi.
Grazie per le info, il display lo devo ancora acquistare , fino ad ora non ne ho avuto bisogno, pertanto andrebbe bene anche un oled o lcd con protocollo a due fili , ne ho visto uno piccolino con solo GND VCC SCL SDA che può supportare sia o 3.3v che i 5v proverò con questo a meno che non ho capito male il funzionamento del protocollo a due fili.
Grazie ancora per la disponibilità.