lunedì 18 maggio 2015

Controllare il Raspberry con Telegram

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:


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:



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;

Nessun commento:

Posta un commento