Quante volte sentiamo il bisogno di “essere avvisati” di qualcosa? Quante volte vorremmo essere aggiornati all’istante su un evento o un processo? Dall’esigenza di essere costantemente in contatto con la nostra schedina nasce RpiNotify (qui il sito ufficiale), un sistema che permette di inviare notifiche in tempo reale al proprio smartphone. RpiNotify può notificare qualunque cosa: da un evento informatico (es. disco pieno) al valore rilevato da un sensore esterno (es. movimento rilevato) a un evento internet (es. il sito x è down)… Insomma ogni cosa si abbia la necessità di “tenere sotto controllo”. L’idea è nata dalle mie personali esigenze, per poi essere ampliata e sviluppata in modo da diventare “patrimonio comune”. Prima di iniziare vi anticipo che RpiNotify è stato sviluppato in modo da essere usato con il Raspberry ma anche con altri sistemi IoT come Arduino o IntelEdison ecc.



A chi è rivolto.
RpiNotify è rivolto a tutti coloro che vogliono sfruttare al massimo la propria schedina, RaspberryPi o Arduino che sia. Sicuramente non è fatto per chi spera con un click di avere un progetto finito, senza un minimo di impegno. Nel complesso è rivolto a tutti gli sviluppatori, maker o hobbisti che hanno bisogno di essere avvisati.



Idea di base e funzionamento.
La mia esigenzea era principalmente quella di avere la possibilità di avere un sistema di notifica che fosse:
- Semplice da implementare
- Collocabile in più punti nello script del progetto principale
Ho sviluppato RpiNotify tenendo al centro queste due considerazioni. Dopo tanto pensare sono arrivato alla conclusione che sfruttare Telegram era la via migliore. Telegram, per chi non lo sapesse, è un app di messaggistica istantanea (chat), la rivale numero 1 di WhatsApp. A detta di tanti (me compreso), il confronto con la più nota app di messaggistica non è nemmeno da fare, visto che Telegram prevede i BOT: dei programmi che girano sulla chat stessa e che permettono di aggiungere molteplici funzioni ad una “semplice” app di chat. Infatti, ho deciso di fare in modo che RpiNotify utilizzasse Telegram. Questa scelta permette infatti di ricevere le notifiche sia su smartphone che su desktop o smartwatch (quindi di utilizzare un solo account su più dispositivi contemporaneamente – cosa che WhatsApp non permette). In poche parole quindi, dal Raspberry Pi mandiamo una richiesta di notifica al server di RpiNotify che, contattato il server di Telegram, manda un messaggio ai dispositivi appartenenti a quell’account Telegram.



Riassumendo la procedura di base per l’invio delle notifiche è:
- Dal raspberry si manda una richiesta al server di RpiNotify
- Il server di RpiNotify, tramite Telegram, manda la notifica ai dispositivi dell’utente.
E voi vi starete chiedendo: “Ma coma fa a sapere che dispositivi mi appartengono?” Beh, Telegram, al momento della registrazione, assegna al vostro account un codice univoco, che permette di identificare l’account e di conseguenza tutti i dispositivi collegati ad esso. Per questo motivo l’unico parametro che deve essere passato dal raspberry al server di RpiNotify, oltre al testo della notifica, è la token: chiave alfanumerica creata in fase di registrazione che, tra le altre, contiene il codice dell’account Telegram.



Registrazione.
Abbiamo quindi detto che è necessario registrarsi per ottenere la token, necessaria per ogni richiesta. La procedura è semplicissima, prevede che siate già utilizzatori di Telegram (se non lo avete sullo smartphone, scaricatelo qui). Una volta scaricata l’app, apriamola, inseriamo il numero di telefono e aspettiamo che il sistema lo verifichi in modo automatico (Stile installazione WhatsApp). Una volta installato, clicchiamo la lente d’ingrandimento per cercare tra le chat, e digitiamo rpinotify_bot . Una volta cliccata l’unica voce la schermata è la seguente:



Tocchiamo “Avvia” in basso, faremo partire il bot di RpiNotify, che ci manderà i messaggi di introduzione.



Toccando il comando /register presente nell’ultimo messaggio procediamo alla registrazione. Inseriamo un Username e premiamo per inviare il messaggio. Il bot restituirà alcune info, tra cui la famigerata token:



Utilizzo base, esempio.
Il Raspberry comunica col server di RpiNotify tramite una chiamata http di tipo GET. Per richiedere una notifica quindi dobbiamo inviare una chiamata GET all’indirizzo api.rpinotify.it strutturata in questo modo:
GET http://api.rpinotify.it/notification/TOKEN/text/TESTONOTIFICA
Dove ovviamente:
- TOKEN – Chiave token ottenuta durante la registrazione dal bot.
- TESTONOTIFICA – Testo della notifica da inviare. (sostituire gli spazi con %20 es. Ciao%20amico)



Esempio bash.
Creiamo lo script con:
nano noti.sh
incolliamo all’interno queste righe:
#!/bin/bash
token="TOKEN"
testonoti="Prova"
curl --request GET "http://api.rpinotify.it/notification/$token/text/$(echo ${testonoti// /%20})"
    
Ora sostituiamo TOKEN con la nostra token personale e chiudiamo l’editor con crtl x, y, ed invio. Diamo poi i permessi di esecuzione allo script appena creato con:
sudo chmod +x noti.sh
Eseguiamo lo script e vedremo comparire la notifica su ogni dispositivo con cui siamo loggati a Telegram.



Altri esempi.
Per gli esempi con altri linguaggi, come Python o Php vi invito a visitare il sito del progetto.



Possibili impieghi.
In questo esempio ho cercato di far capire il funzionamento base di RpiNotify. Con un po’ di immaginazione possiamo immaginare quante possibilità d’impiego ci siano… Ad esempio, immaginando di avere un progetto già creato che controlli l’irrigazione del giardino, definendo la variabile TOKEN all’inizio dello script potremmo inserire la riga della chiamata HTTP in ogni “except” per notificarci ogni errore di esecuzione andando a specificare in ogni riga il testo della notifica. Sul sito di RpiNotify, ho creato una sezione con alcuni progetti base per avvicinarsi alle potenzialità di RpiNotify. Ad esempio qui la notifica ad ogni avvio del Raspberry. Qui la notifica ogni volta che un sito va down. Qui la notifica ogni volta che l’ip pubblico del Raspberry cambia. Qui tutti gli altri.



Conclusioni.
Il progetto è stato creato senza nessun scopro di lucro quindi una condivisione sarebbe bene accetta. Per qualsiasi problema, suggerimento o idea il nostro forum è fatto apposta.

Fonte: https://www.raspberryitaly.com

 


 

Odroid_XU4.jpg