Controllare il Raspberry con Telegram

raspberrytelegram Nei precedenti post sul Raspberry, abbiamo visto che per accedere ad esso usiamo sempre ssh, ovviamente questo non è l'unico modo per interagire con il piccolo computer, oggi ne vedremo uno nuovo e originale.


INTRODUZIONE
Tempo fa, abbiamo scritto un post su come installare Telegram sul Raspberry. Oggi sfrutteremo questo programma di messaggistica open source, che tra l'altro è un'ottima alternativa all'applicazione del signor Zuckerberg (Whatsapp per chi non lo sapesse), per comunicare con il nostro Raspberry.

Il principio di funzionamento è molto semplice, una volta installato Telegram sul Raspberry, e avviandolo con uno script in linguaggio lua, saremo in grado di interagire con esso mandandogli dei semplici messaggi, come se fosse un'utente normale. Ovviamente per fare questo, dobbiamo utilizzare due numeri di telefono, uno per il nostro telefono e uno per il Lampone.

Come avete letto qualche riga fa, il tutto è possibile utilizzando degli script scritti in linguaggio lua. Non vi preoccupate non è difficile per quello che dobbiamo fare noi, se comunque volete approfondire a questo link trovate il suo sito ufficiale.

INSTALLAZIONE E CONFIGURAZIONE
Detto questo bando alle ciance e iniziamo con l'installare Telegram sul Raspberry. La guida d'installazione la potete trovare in questo nostro post.

Una volta installato non ci resta che creare il file .lua per poter far interagire il Raspberry con noi attraverso Telegram.

Quindi posizioniamoci all'interno della directory d'installazione di Telegram (in poche parole dentro la cartella tg). Qui creiamo il nostro file action.lua, quindi apriamolo con “nano” dando il seguente comando:

 

nano action.lua

 

All'interno del file scriviamoci le seguenti righe di codice:

 

function on_msg_receive (msg)
  if msg.out then
    return
  end
  if (msg.text=='Ciao') then
    send_msg (msg.from.print_name, 'Ciao ' .. msg.from.print_name .. ':)', ok_cb, false)
  end
end

function on_our_id (id)
end

function on_secret_chat_created (peer)
end

function on_user_update (user)
end

function on_chat_update (user)
end

function on_get_difference_end ()
end

function on_binlog_replay_end ()
end

 

Una volta scritto tutto, clicchiamo “ctrl + x” e digitiamo “s” per salvare.

Intuitivamente, con questo script, nella prima funzione on_msg_receive, gli diciamo semplicemente che non appena arriva un messaggio con scritto “Ciao”, quel tenerone del nostro Raspberry ci risponde “Ciao NOME :)”.

Non ci resta altro che far partire Telegram assieme allo script per testare il tutto. Quindi diamo il seguente comando:

 

bin/telegram-cli -k tg-server.pub -W -s action.lua

 

Bene, ora dal telefono proviamo a scrivergli “Ciao”, e come per magia:

IMMAGINE CIAO

Che emozione!

Ma continuiamo a pacioccare un po', (tanto per non usare sempre il termine nerdare!).
Nel linguaggio lua c'è una funzione molto interessante ossia os.execute, che, in poche parole, ci permette di eseguire un programma o uno script nel nostro Raspberry. Per testare questa funzione, ci faremo inviare con Telegram, un file con la lista dei file all'interno della directory /etc.
Normalmente se vogliamo salvare la lista dei file presenti dentro a quella directory, da terminale basta digitare:

 

ls /etc > /home/pi/lista_file

 

e dentro la directory /home/pi verrà creata una lista dei file che ci sono in /etc. Per fare ciò con Telegram, nel nostro script, dentro alla funzione on_msg_receive, scriviamo:

 

 if (msg.text=='ls /etc') then
  send_msg (msg.from.print_name, 'Aspe un attimo, ora ti invio il file', ok_cb, false)
  os.execute('ls /etc > /home/pi/lista_file')
  send_file (msg.from.print_name, '/home/pi/lista_file', ok_cb, false)
end

 

e come di consueto, una volta salvato il file action.lua, facciamo partire Telegram, dando sempre il seguente comando:

 

bin/telegram-cli -k tg-server.pub -W -s action.lua

 

ed ecco il risultato:

immagine ls etc

immagine file etc


Da come potete notare, è uno strumento potente il controllo del Raspberry con Telegram, anche se ha qualche problema di sicurezza, perché se per esempio qualcuno ha il numero della sim del nostro Raspberry, allora può controllare anche lui il nostro computer con un semplice programma di messaggistica! Di certo non è quello che vogliamo! Infatti vi conviene fare dei controlli in più nello script, per esempio inserire una condizione all'inizio della funzione, specificando che se il numero non è quello del nostro telefono allora termini subito come nel esempio successivo:

 

if (msg.from.print_name~='My_number') then
  return
end

 

Ovviamente non dobbiamo dare nemmeno il numero alla prima persona che incontriamo.

Legandoci al post precedente, quello sull'intelligenza artificiale, potremmo fare anche un piccolo chatterbot personale, in stile Cleverbot, anche se il suo sviluppo è piuttosto complesso.

Infine vi ricordo che se non avete ancora un Raspberry, potete acquistare qui un Raspberry Pi 2 B.

CONCLUSIONI
Concludendo, oggi abbiamo visto un altro modo per utilizzare il nostro piccolo computer, e se siete a corto di idee per un nuovo progetto con il Raspberry allora continuate a seguirci!

 

FONTI:
- Immagini Joel Garia;

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

8 risposte

  1. Grazie mille per i suoi consigli..
    Adesso che controllo il mio rpi 3 come posso inviare un commando seriale bluetooth del tipo "AF 01 03 DF" ad un relè anche esso bluetooth?

    • Daniele Scanu - Blogger

      Figurati e dammi pure del tu:) comunque una cosa del genere non l'ho mai provata, ma dovrebbe esserci qualche modulo che permette di fare questo, ad esempio in Python, dovresti dare un'occhiata in rete.

  2. FrancescoFdd5

    C'é un modo per tenere sempre attivo il servizio di telegram

    • Daniele Scanu - Blogger

      Certamente, quando fai partire il servizio, aggiungi aggiungi il seguente carattere "&" così: bin/telegram-cli -k tg-server.pub -W -s action.lua &
      In questo modo il servizio parte in background, e rimane attivo fino al riavvio del raspberry.

      • FrancescoFdd5

        Posso fare in modo di inviare foto, video o file al mio raspberry e lui automaticamente le mette in una cartella?

        • Daniele Scanu - Blogger

          Sicuramente si, dovresti controllare le varie API e il codice da poter utilizzare nello script. Fossi in te controllerei a questo link https://github.com/vysheng/tg se ci sono possibili soluzioni, ad esempio funzioni da utilizzare proprio per questo scopo. Facci sapere;)

  3. Giorgio Rizzo

    Ho installato Telegram su Raspberry come da tuo sito. Complimenti; tutto funziona perfettamente con i comandi da smartphone. Ora vengo al punto: se faccio una copia (clonazione) della micro sd e la inserisco in un'altra raspberry, che succederebbe se le due schede funzionassero allo stesso momento? I comandi da smartphone sarebbero ricevuti da tutte e due oppure si creerebbe qualche problema di compatibilità? Ancora complimenti e grazie di tutto.

    • Daniele Scanu - Blogger

      Wow hai fatto una domanda davvero interessante ahaha. Secondo me funzionerebbe ancora, senza nessun problema, poiché dovrebbe fregarsene di altre istanze di telegram. Un problema che potrebbe sorgere è che magari una determinata funzione verrebbe eseguita due volte. Non ti resta che testare, e facci sapere perché ci ha veramente incuriosito il quesito:)

Lascia un commento