Inviare alert via Telegram o Skype da Shelly

by maurizio
9 minuti
Inviare alert via Telegram o Skype da Shelly

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.

Cos'è EZAlert.me

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.

Usare EZAlert.me

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=".

Inviare alert da Shelly

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.

Riceviamo gli alert

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 Shelly può inviare degli alert

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!

 

Pierfrancesco
EZAlert.me
Written by Pierfrancesco on Ottobre 29, 2021

Complimenti per lo sviluppo, ho implementato la funzione nel mio cloud Shelly. Volevo chiederle se é possibile creare più di 1 canale di invio, in maniera da poter "collegare" più shelly.

Grazie

Pierancesco

maurizio Admin
Written by maurizio on Agosto 24, 2022

In realtà anche con un solo canale EZAlert.me si possono gestire più Shelly, basta magari aggiungere nel messaggio il nome dello shelly.

maurizio Admin
Written by maurizio on Ottobre 29, 2021

Ciao e grazie. Per collegare più shelly non c'è bisogno di avere più canali, basta modificare la stringa che inviano, ad esempio sul primo: http://ezalert.me/v1/sendAlert?apikey=XXX-XXXXXXXXXX&text=Shelly1+Garage+aperto e sul secondo http://ezalert.me/v1/sendAlert?apikey=XXX-XXXXXXXXXX&text=Shelly2+Garage+aperto

Più canali eventualmente servono se si devono inviare messaggi a persone diverse. Ad esempio se vogliamo che uno shelly (o altro dispositivo) mandi messaggi a un gruppo di persone e un altro shelly ad un diverso gruppo di persone. In questo caso ti servono più canali.

EZAlert.me supporta la creazione di canali multipli, ma è una funzionalità che non ho ancora aperto a tutti. Per adesso l'unico sistema è registrare un secondo account.

FabioR
WOW
Written by FabioR on Ottobre 30, 2021

Ciao e complimenti per l'idea. Ho provato a configurare il tutto, mi arriva il messaggio di prova da Houston ma poi non mi arriva la notifica dallo shelly, eppure ho seguito tutti i passi.

maurizio Admin
Written by maurizio on Ottobre 30, 2021

Con gli shelly ho notato che a volte è meglio usare la URL in http invece che in https, che a volte fanno un po' fatica a gestire la crittografia, quindi magari verifica di usare http://ezalert.me/... come indirizzo.

Per una verifica ulteriore puoi copiare/incollare la URL di notifica sul browser e verificare che il messaggio parte. Se non parte usando il browser allora c'è qualcosa che non va nella URL.

Pierfrancesco
EZAlert.me
Written by Pierfrancesco on Ottobre 30, 2021

Confermo con Shelly ho dovuto modificare in htpp togliendo la s

Pierfrancesco
EZAlert.me
Written by Pierfrancesco on Ottobre 30, 2021

Confermo utilizzare htpp

Claudio
Domanda...strana , di incapace
Written by Claudio on Agosto 11, 2022

Se invio es https://api.telegram.org/bot5xxxxxxxxxxEjxmU/sendMessage?chat_id=7xxxxxx&text=AVVISO da browser, su Telegram ricevo il messaggio AVVISO. Ora se copio in Shelly Azioni I/O la URL qui sopra riportata in es. "Ouput su URL" che sente lo stato on-off del relè di Shelly ( e lui scatta su conando), perché non funziona usando anche solo http e riavviando lo Shelly? Bisogna per forza usare IFTTT o la tua EZAlert.me? Grazie delle informazioni e cordiali saluti. Claudio G.

Claudio
Provato EZAlert.me con Shelly
Written by Claudio on Agosto 12, 2022

Funziona perfettamente usando HTTP, con protocollo SSL sembra non funzionare. Grazie della ottima applicazione ! Cordiali saluti C.G.

maurizio Admin
Written by maurizio on Agosto 24, 2022

Si a volte gli Shelly durano fatica a collegarsi in https... non so perché. Spesso li uso anche io in HTTP anche se per la sicurezza non è proprio il top!

FRANCO
shelly anti black-out
Written by FRANCO on Ottobre 6, 2022

Ciao, complimenti per il sito. Anche se sono un principiante, ho installato 2 Shelly per aprire e chiudere il cancello e il portone garage di casa. Ora, dopo la brutta esperienza di questa estate che al ritorno dalle ferie ho trovato i frigoriferi sbrinati causa lo scatto del contatore ENEL per un forte temporale, chiedo se ci fosse un modo, utilizzando uno Shelly, di avvertirmi sullo smartphone dell'avvenuta mancanza di energia elettrica (fosse ENEL o differenziale magnetotermico). Ho già il router sotto UPS se questo potesse facilitare le operazioni. Ringrazio anticipatamente

maurizio Admin
Written by maurizio on Ottobre 6, 2022

Complimenti a te per i progetti che hai portato in fondo e mi spiace per il frigorifero, qualche anno fa è successo anche a me e il rientro a casa è stato un disastro :-(

Secondo me ci sono diversi modi con cui puoi rilevare l'assenza di tensione in casa. Il più semplice è verificare se vedi o no gli Shelly sulla loro App. Se non li vedi potrebbero essere andati fuori linea o si possono essere inceppati (a volte capita!) oppure casa tua è senza corrente.

Un metodo un po' più smaliziato, è mettere uno Shelly EM a misurare la corrente che arriva al frigo (o a tutto l'impianto) e nel caso in cui questa vada a 0 farti inviare una notifica. Ovviamente lo shelly em dovrebbe stare sotto gruppo. Uno shelly em con una pinza amperometrica costa circa 70 euro, può valerne la pena.

Jose
Ezalert non invia messaggio di conferma
Written by Jose on Febbraio 13, 2023

Buonasera, mi sono registrato su Ezalert, creato l canale ma dal momento in cui invio start code, il bot non mi restituisce conferma. Non restituisce nulla se non che “non ho canali attivi”, anche se li ho. Ho provato anche a fare una nuova registrazione ma nulla, ho provato da Mac e nulla, anche da web.telegram ma nulla. Come posso risolvere?

maurizio Admin
Written by maurizio on Febbraio 14, 2023

Da quello che scrivi mi sembra che lo start code per qualche motivo non sia stato riconosciuto. Prova a reinviare il comando start considerando che: Il comando start non ha / davanti, è semplicemente "start" L'id del canale che trovi nella tua area riservata di EZAlert.me è composto da due parti separate da trattino (il meno) e non deve contenere spazi. Esempio: start 111-ae2456 Prova e fammi sapere.

Jose
Ezalert non invia conferma
Written by Jose on Febbraio 15, 2023

Salve, è esattamente ciò che invio. Ho provato in tutte queste forme: start XX-XXXXXXXX Start XX-XXXXXXXX START XX-XXXXXXXX ma nulla. Nessuna riposta, se non : “You have no active channels. Please check out https://ezalert.me for more info.” Già provato a stoppare il bot, riavviarlo, cancellarlo e riprovare e nulla. Provato a cancellare la cache di TG e riprovato, niente. Diciamo che ho provato tutte le possibili soluzioni ma non mi ha mai funzionato