Sarebbe comodo se i nostri dispositivi Shelly potessero inviarci dei messaggi via Instant Messaging al verificarsi di determinati eventi. Ad esempio per me sarebbe utile, per completare l'automazione dell'apertura del mio garage, poter ricevere un messaggio ogni volta che il sezionale viene aperto o chiuso.
Grazie al comodo servizio di EZAlert.me questo non solo è possibile ma anche facilissimo.
Prima di continuare devo fare una dichiarazione: EZAlert.me è un servizio che ho sviluppato io, pertanto potrei non essere molto obiettivo nel giudizio delle varie opzioni che offre; pertanto cercherò di evitare giudizi di merito e mi limiterò ad "esporre i fatti".
EZAlert.me è un servizio che ho sviluppato per risolvere un problema molto semplice: volevo un metodo ultra-facile per ricevere notifiche al verificarsi di eventi di vario genere sui server che gestisco al lavoro, che potesse essere flessibile in modo da poter essere utilizzato con qualsiasi linguaggio di programmazione, o anche semplicemente con la shell del sistema operativo in mancanza di alternative (ad esempio via curl, wget o fetch), e che nello stesso tempo potesse scalare facilmente permettendomi di gestire più canali di notifica, con più iscritti per ogni canale, anche su piattaforme di messaging diverse.
In pratica iscrivendosi ad EZAlert.me (che attualmente è un servizio totalmente gratuito) si ha la possibilità di creare un canale di distribuzione al quale possiamo iscriverci da Telegram, Skype o Facebook Messenger o Slack, seguendo le semplici istruzioni fornite. Ogni canale può avere un numero illimitato di iscritti, quindi posso iscrivermi per ricevere le notifiche dal telefono con Telegram e magari sul PC via Skype. Posso anche fornire le istruzioni per iscriversi al canale ad uno o più colleghi e fare in modo che anche loro ricevano le notifiche.
Inviare una notifica è semplicissimo, basta richiamare un'API rest utilizzando l'API key del canale. Per gli sviluppatori c'è un repository GitHub linkato dal sito EZAlert.me che fornisce esempi in diversi linguaggi di programmazione come Python, Javascript, PHP, Java, ecc.
Utilizzare EZAlert.me è facilissimo. La prima cosa da fare è registrarsi al servizio da questa pagina: https://ezalert.me/register e seguire le istruzioni per confermare il proprio indirizzo email. Poi basta tornare sul sito ed eseguire il login per trovare il proprio canale pronto all'utilizzo.
A questo punto è necessario iscriversi al canale in modo da riceverne gli alert: per farlo occorre seguire le istruzioni visibili cliccando sul bottone "How to subscribe" e poi scegliendo se si vuole iscriversi via Telegram o Skype o Messenger. E' possibile anche collegare un account Slack cliccando sul pulsante "Add Slack connection".
Una volta che ci si è iscritti al canale, consiglio di inviare un alert di test in modo da verificare che tutto stia funzionando correttamente, utilizzando la funzione "Send test alert". Se avete seguito correttamente tutti i passi dovreste ricevere sul vostro instant messenger il messaggio di prova.
Adesso occorre capire come è possibile inviare al canale EZAlert.me i nostri messaggi. Cliccando su "Show API keys" e poi su "API call sample" il sistema ci mostrerà un esempio precompilato di URL di chiamata. Basterà copiare questa URL e incollarla nella barra di navigazione del browser per inviare un alert.
La URL di esempio sarà simile alla seguente:
https://ezalert.me/v1/sendAlert?apikey=XXX-XXXXXXXXXX&text=Houston%2C+we+have+a+problem
dove XXX-XXXXXXXXXX è la chiave segreta del vostro canale, quella che autorizza a postare messaggi, pertanto evitate di divulgarla altrimenti rischiate che chiunque vi possa inviare dei messaggi attraverso EZAlert.me.
Notiamo inoltre che la parte finale della URL, quella dopo "&text=", è il testo dell'alert che viene inviato, dove però gli spazi sono sostituiti dal carattere "+" e tutti i caratteri non alfanumerici sono sostituiti da un codice di 2 lettere e numeri preceduto dal simbolo "%". Questo tipo di codifica si chiama "urlencoding" ed è tipico dei parametri passati attraverso gli indirizzi web.
Se non siete sviluppatori di software vi consiglio di ignorare la codifica urlencoding, ma per poterlo fare dovete accettare la limitazione di inviare solo alert che contengono i caratteri alfabetici "normali" (senza accentate), numeri. Gli spazi devono essere rimpiazzati con il carattere "+", a esempio "ciao mondo" diventa "ciao+mondo". In teoria con i caratteri accentati italiani (tipo "è" o "ò") non dovreste avere problemi, ma se riuscite ad evitarli potete dormire sonni più tranquilli.
Se proprio non potete fare a meno di inserire nel vostro alert dei caratteri particolari, potete usare il convertitore online che trovate a https://www.urlencoder.org. Ricordate sempre che il testo del vostro messaggio va inserito subito dopo "&test=".
Una volta configurato il nostro canale EZAlert.me non ci resta che programmare il dispositivo Shelly per usarlo.
Per farlo possiamo usare la sezione "Actions" del menu del device dove andremo ad aggiungere le URL che il dispositivo richiama al verificarsi di una certa condizione.
Ad esempio nello Shelly 1 che sto utilizzando per pilotare l'apertura del mio garage, utilizzo l'ingresso SW per capire se il sezionale è aperto o chiuso. Volendo ricevere un alert ogni volta che lo stato di apertura/chiusura cambia, ho impostato i campi "Button switched on URL" e "Button switched off URL" per richiamare EZAlert.me, come si vede nell'immagine qui sotto (dove ho mascherato la mia API key).
Purtroppo i dispositivi Shelly sembrano avere delle difficoltà a dialogare con URL https, per cui ho dovuto modificare le URL di EZAlert.me rimpiazzando il protocollo https:// con http://.
Ad esempio nel caso dell'apertura (Button Switched off URL) la chiamata a EZAlert.me che ho inserito è:
http://ezalert.me/v1/sendAlert?apikey=XXX-XXXXXXXXXX&text=Garage+aperto
Dove ovviamente XXX-XXXXXXXXXX rappresenta la Api Key del mio canale EZalert.me.
Richiamare la URL usando http, significa rinunciare alla privacy garantita dalla crittografia del protocollo SSL, ma in questo caso le informazioni che transitano non destano particolari preoccupazioni dal punto di vista della sicurezza. Ovviamente vi invito a valutare con attenzione il vostro caso d'uso per capire se sia prudente o meno utilizzare una canale non crittografato.
Dopo aver inserito le URL di notifica è necessario eseguire un reboot del dispositivo Shelly per fare in modo che la nuova configurazione venga attivata. Per farlo occorre usare la voce reboot del menu Settings.
A configurazione completata abbiamo ottenuto che ogni qual volta si verifica la condizione che scatena l'attivazione della action, il dispositivo Shelly effettuerà una chiamata alla URL data e grazie a EZAlert.me riceveremo un messaggio via Telegram, Skype, ecc.
Ad esempio nel mio caso, visto che ho collegato un sensore reed all'ingresso SW di uno Shelly 1, ricevo una notifica ogni volta che il mio garage si apre o si chiude, sia che l'evento venga pilotato dallo Shelly 1, sia che invece sia stato provocato tramite il pulsante sulla centralina di controllo del sezionale o da uno dei suoi telecomandi.
Il risultato finale è quello che vediamo nell'immagine qui sotto.
Questo è ovviamente solo un esempio tra i tanti che è possibile realizzare, ma devo dire che in diverse occasione mi è stato utile ricevere la notifica di apertura e chiusura del garage. Anzi, per essere sincero, a volte mi è stato più utile notare che la notifica di chiusura non mi era arrivata, in modo da accorgermi che mi ero scordato di chiudere!
Ogni dispositivo Shelly ha una serie di action configurabili che si possono utilizzare per scatenare delle notifiche grazie ad EZAlert.me.
Ad esempio lo Shelly H&T ha la possibilità di inviare una action quando la temperatura o l'umidità si alzano o si abbassano oltre una soglia data. Invece lo Shelly EM può avvisarci quando i livelli energetici misurati siano più alti o più bassi di un livello impostato. E ovviamente ogni interruttore o dimmer Shelly ha delle action configurabili, quindi abbiamo infinite possibilità di farci inviare un alert quando si verificano eventi che vogliamo tenere sotto controllo.
Non facciamoci prendere di sorpresa: configuriamo gli alert in modo da rimanere sempre aggiornati sullo stato dei nostri giocattoli domotici!