Shelly e IFTTT - Si può? Scopri come fare con questa guida!
Guide
Scritto da Luigi Duchi
Qualche tempo fa abbiamo realizzato un articolo (e relativo video) molto discusso da tutti gli appassionati di domotica che ci seguono. Il titolo di quell'articolo è: SHELLY 1 VS SONOFF MINI... Civil War! ... o SMART Home War?
Quell'articolo è stato talmente discusso che abbiamo discusso anche io e Vincenzo! :D :D :D
"... un punto per Shelly, un punto per Sonoff, due punti per Son... o per Shelly, tre punti per... non sono daccordo!"
Si sa, i punti di vista e le esigenze di ognuno non sono sempre sovrapponibili.
Comunque sia, uno dei punti decisamente a favore di Sonoff era stato assegnato per la compatibilità con il famosissimo servizio web IFTTT (https://ifttt.com/).
In effetti Shelly non è compatibile con IFTTT.
Vi anticipo che per questa guida useremo lo Shelly 1 che vi ricordo essere reperibile su Amazon al seguente link:
COS'È IFTTT
IFTTT è l'acronimo di If This Then That ovvero "se accade questo allora fai accadere quello".
Il servizio è gratuito e permette la creazione di semplici catene di condizioni, chiamate applet, permettendo il dialogo tra mondi che di solito tra di loro non dialogano, o almeno non nativamente. (es. Tuya Smart con eWeLink o altro)
Non molto tempo fa Vincenzo vi aveva parlato di come utilizzare i webhooks di IFTTT con Tasker.
Tasker e Tuya Smart o Smart Life tramite IFTTT
Oggi, avvalendoci di una procedura similare, andremo a vedere come utilizzare i webhook di IFTTT con le ACTIONS dei dispositivi SHELLY.
Cosa sono le ACTIONS di Shelly?
Con un recente aggiornamento software, Shelly ha incluso la possibilità di lanciare dei comandi HTTP a seguito del verificarsi di particolari condizioni sul dispositivo.
Di seguito ad esempio un elenco delle condizioni alle quali è possibile assegnare un comando HTTP con lo Shelly 1:
- All'accensione del pulsante fisico collegato su SW
- Allo spegnimento del pulsante fisico
- Alla pressione prolungata del pulsante fisico
- Alla pressione breve del pulsante fisico
- Uscita sul morsetto O attivata
- Uscita sul morsetto O disattivata
Negli altri dispositivi della famiglia Shelly naturalmente le condizioni saranno diverse.
Per esempio sullo Shelly Door/Window le condizioni saranno legate alle porta aperta o chiusa, sullo Shelly EM al carico rilevato sulla linea ecc...
Il principio in ogni caso rimane lo stesso, se accade un evento tra quelli disponibili, lo Shelly di turno è in gradi di visitare un URL a nostro piacere.
E qui ci ricolleghiamo alle webhook di IFTTT che altro non sono che delle stringhe HTTP che possono fungere da Trigger per IFTTT. Praticamente il "se accade questo".
VEDIAMO COME FARE
Nell'esempio che segue proveremo a far attivare un dispositivo della famiglia Tuya Smart (o Smart Life) a seguito dell'attivazione di uno Shelly 1.
Scaricate l’applicazione IFTTT o loggatevi al servizio online (https://ifttt.com) da PC previa registrazione.Una volta loggati dovrete ricercare due servizi nel finder (Search) di IFTTT: il primo è ovviamente Smart Life, connettete il servizio inserendo i vostri dati di login che avete creato in precedenza sull'app per consentire a IFTTT di accedere appunto al servizio.
Non appena avrete collegato il servizio ad IFTTT vi verrà chiesto di scegliere tra i servizi di Tuya Smart, Smart Life, Jinvoo Smart e Kinetic switch. Anche se tutti questi servizi si riferiscono al medesimo Cloud, dovrete scegliere quello che usate sul vostro smartphone, nel mio caso Smart Life.
Il secondo servizio da trovare, sempre su IFTTT, è il servizio webhooks che servirà in seguito nella guida. Cercatelo e naturalmente connettetelo al vostro IFTTT.
Creare Applets su IFTTT
A questo punto saremo pronti per creare delle applets su IFTTT che reagiscano alle ACTIONS di Shelly.
Vediamo come fare: cliccando su My Applets e poi su new applet vi ritroverete di fronte alla consueta domanda if this then that del servizio IFTTT
premete su +this e nella barra di ricerca di IFTTT, cercate il servizio webhooks e cliccateci sopra.Cliccate adesso sull’unico riquadro che vi si apre chiamato Receive a web request.Sotto Event Name scrivete una parola che rappresenta il comando che effettuerà quest'azione (es. accendi). Se decidete di scrivere un nome composto da due parole ogni parola dovrà essere separata dal carattere _ quindi premete il pulsante create trigger.
Adesso premete su +that, andate a cercare il servizio Smart Life e cliccateci sopra. Vi appariranno diverse azioni da poter selezionare.
selezionate questa per accendere il dispositivo:
successivamente vi verrà chiesto quale dispositivo tra quelli registrati in Smart life vorrete accendere.
nel mio caso Lampade TV
Premete su create action, successivamente levate la spunta alla notifica ad esecuzione del servizio e salvate. Avrete creato il vostro applet.
Naturalmente dovrete creare tanti applet quante sono le azioni che poi vorrete eseguire dentro SHELLY ACTIONS. Nel mio esempio di prima ho creato un webhooks chiamato accendi, quindi probabilmente mi servirà creare almeno un altro applet e chiamarlo spegni, ovviamente sempre selezionando il medesimo dispositivo una volta richiesto (lampade tv nel mio caso).
Testiamo il funzionamento del nostro applet:
Il servizio webhooks di IFTTT non fa altro che creare una stringa http personalizzabile che, una volta richiamata tramite un browser web (o tramite le ACTIONS SHELLY), permette di eseguire l'azione ad essa collegata. La stringa conterrà una parte fissa e una parte variabile (la personalizzazione).
Come reperiamo questa stringa?
La parte fissa della stringa la reperite nei settings del servizio webhooks su IFTTT alla voce URL come potete osservare nella seguente immagine
Esattamente la parte che vi serve è quella finale (quella che nell'esempio è cancellata con il segno rosso)
La parte iniziale e variabile della stringa invece è composta così:
https://maker.ifttt.com/trigger/accendi/with/key/
Da notare che ad un certo punto c'è esattamente con la parola che abbiamo inserito quando abbiamo creato l'applet (nel mio caso accendi).
La stringa definitiva sarà la somma delle due ed esattamente nel mio esempio come segue:
https://maker.ifttt.com/trigger/accendi/with/key/xxxxxxxxxxxxx
Dove le xxxxx andranno sostituite con il codice preso dalle impostazioni di webhooks (ricordate quello che io ho cancellato di rosso)
Nel mio caso incollando questa stringa all'interno della barra degli indirizzi di Google Chrome ottengo l'accensione del dispositivo lampade tv e il seguente messaggio: Congratulations! You've fired the accendi event
Naturalmente potrete utilizzare stringhe diverse per diverse azioni variando solo la parola chiave dell'applet (spegnimento, ecc), la stringa sarà identica tranne che per quel dettaglio.
Per utilizzare tutto con Shelly non vi resterà altro da fare se non copiare l'URL generato su uno dei comandi Actions di Shelly come nell'esempio:
Nel mio esempio ho inserito l'url dell'accensione all'attivazione dell' uscita OUTPUT (0 sullo Shelly) e, creando un altro Applet su IFTTT, ho inserito un URL di spegnimento sulla disattivazione dell'OUTPUT.
Ovviamente potrete inserire l'url in una delle altre voci presenti nelle ACTIONS.
Ho notato che i comandi HTTP messi sulle Actions di Shelly soffrono di una latenza un pò più alta rispetto ad una chiamata diretta da browser web, probabilmente per limiti hardware dello Shelly stesso.
Quindi la risposta alla domanda del titolo di quest'articolo e SI o NO?
In realtà è NI, come visto possiamo fare reagire IFTTT ad alcuni eventi innescati dagli Shelly e di conseguenza attivare tutti i dispositivi e servizi ad IFTTT collegati. Però non possiamo fare il contrario, perchè IFTTT non può in nessun modo allertare Shelly del verificarsi di una condizione.
Qundi diciamo che questa guida ci da una mezza compatibilità con IFTTT, decidete voi se la risposta e NI o SO! :D
Nel video che segue potrete osservare dal vivo l'esempio descritto in quest'articolo. Buona visione!
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.