giovedì 18 Aprile 2024
Home / Domotica / RpiNotify – Notifiche push allo smartphone

RpiNotify – Notifiche push allo smartphone

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 inizare 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 è:

  1. Dal raspberry si manda una richiesta al server di RpiNotify
  2. 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

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

Ora sostituiamo TOKEN con la nostra token personale e chiudiamo l’editor con crtl x, y, 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 inviato 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.

A proposito di Gab Tos

Vedi Anche

MagPi139 doppiapagina

MagPi in Italiano! Soluzione dei Problemi: La Guida

Estratto, tradotto in italiano, di The MagPi N°139 la rivista ufficiale della Fondazione Raspberry Pi.

Powered by themekiller.com