Controlliamo il nostro ponte ripetitore con Telegram

Per coloro che non sanno cosa è Telegram si tratta di un app di messaggistica, molto simile a WhatsApp. Diversamente da quest’ultimo, Telegram è un servizio di messaggistica basato sul cloud con sincronizzazione istantanea. Il risultato ti permette di accedere ai tuoi messaggi da diversi dispositivi contemporaneamente, inclusi tablet e computer Nel 2015 è stato pubblicata API Bot, una interfaccia HTTP che permette di sviluppare applicazioni e quindi far dialogare uomini e macchine. I “bot “sono applicazioni di terze parti che vengono eseguite all’interno di Telegram. Gli utenti possono interagire con i bot inviando loro messaggi, i comandi e le richieste in linea. A controllare i bot si utilizzano richieste HTTPS dirette al nostro API bot. Nel sistema i  bot sono account speciali che non richiedono un numero di telefono aggiuntivo da configurare. Gli utenti possono interagire con i bot in due modi: inviare messaggi e comandi al bot con l’apertura di una chat con loro o aggiungendoli ai gruppi oppure inviare le richieste direttamente dal campo di inserimento digitando @nomeutente del bot e una query. I messaggi, i comandi e le richieste inviate dagli utenti vengono passati al software in esecuzione sui server. Il server di Telegram intermediario gestisce tutte la crittografia e la comunicazione con l’API Telegram. Si può ben capire quanti possibili applicazioni possono così essere sviluppate, da sistemi di controllo remoto ad applicazioni specifiche per interagire con il sistema operativo della macchina ospite, ad esempio. Da qui mi è nata l’idea di provare a far qualcosa per il nostro mondo radioamatoriale, che sia di spunto per tante altre applicazioni. E’ richiesta una conoscenza base del sistema operativo linux (faccio riferimento a hotspot e ponti ripetitori basati su Raspberry Pi) e quanto riportato è ovviamente migliorabile e adattabile per le proprie esigenze. Ricordo che Telegram è utilizzabile anche da browser via web o dal proprio PC o Mac (chiaramente è presente su Android e IOs). E’ possibile scaricare il programma di installazione di Telegram Desktop Client da questo indirizzo http://tdesktop.com/win/currentper la versione Windows e http://tdesktop.com/osx per la versione OSx Procediamo, scaricatevi l’applicazione e createvi un account, si entra nel mondo del dialogo uomo-macchina.

Il primo passo, creiamo il nostro bot

Apriamo Telegram sul telefono e cerchiamo un utente chiamato “BotFather”. Come suggerisce il nome, è il padre di tutti i bot. E’ in realtà una macchina, non è un utente umano, ed accetta comandi speciali specifici. Digitiamo /newbot. (è necessaria la barra ‘/’ di fronte) e ci verranno richieste alcune informazioni. Diamo un nome al nostro bot e poi un username che necessariamente deve terminare con “bot”. Alla fine del processo vi verrà dato un codice, qualcosa come 123456789: ABCDEFGHIJKLMNOPQRSTUVWXYZ. Questo token rappresenta l’account bot e dovrà essere conservato. Conviene ora utilizzare la piattaforma web sul PC per copiare più facilmente il token perchè andrà inserito all’interno di codice nel Raspberry.

Riporto a seguire i comandi che BotFather accetta. Servono esclusivamente alla gestione del bot che viene creato:

/newbot – create a new bot
/token – generate authorization token
/revoke – revoke bot access token
/setname – change a bot’s name
/setdescription – change bot description
/setabouttext – change bot about info
/setuserpic – change bot profile photo
/setinline – change inline settings
/setinlinegeo – toggle inline location requests
/setinlinefeedback – change inline feedback settings
/setcommands – change bot commands list
/setjoingroups – can your bot be added to groups?
/setprivacy – what messages does your bot see in groups?
/deletebot – delete a bot
/cancel – cancel the current operation

Installare telepot su Raspberry Pi

Per installare  telepot, una applicazione scritta in Python che abilita la comunicazione tra il Raspberry Pi e il Telegram Bot API, occorre digitare da shell questi comandi:

sudo apt-get install python-pip
sudo pip install telepot

Creiamo la nostra applicazione per la gestione dei comandi

Occorre creare un file con il comando sudo nano tg.py (potete dare qualsiasi nome, l’estensione “py” identifica un file che contiene codice del linguaggio di programmazione Python) ed inserire il seguente codice:
import commands
import sys
import telepot
import time

def handle(msg):
    chat_id = msg[‘chat’][‘id’]
    command = msg[‘text’]

   print ‘mi e\’ arrivato il comando: %s’ % command

  if command == ‘/info’:
      info = commands.getoutput(“uname -a”)
      bot.sendMessage(chat_id, info)

  elif command == ‘/xrf077a’:
      out = commands.getoutput(“remotecontrold ir5ay__c link never xrf077_a”)
      bot.sendMessage(chat_id, “inviata connessione XRF077 A”)

  elif command == ‘/reboot’:
      bot.sendMessage(chat_id, “attendi, riavvio in corso…”)
      out = commands.getoutput(“sudo shutdown -r now”)

  elif command[0:5] == ‘/temp’:
      temp = commands.getoutput(“cat /sys/class/thermal/thermal_zone0/temp”)
      temperatura = int(temp) / 1000
      temp = str(temperatura)
      bot.sendMessage(chat_id, temp)
      out = commands.getoutput(“texttransmit ir5ay__c -text ‘%s gradi’” % temp)

  elif command[0:5] == ‘/link’:
      link = commands.getoutput(“cat /var/log/Links.log”)
      bot.sendMessage(chat_id, link)

  elif command[0:4] == ‘/who’:
      who = commands.getoutput(“tail -n 1 /var/log/Headers.log”)
      bot.sendMessage(chat_id, who)

bot = telepot.Bot(‘INSERIRE QUI IL TOKEN DEL VOSTRO BOT’)
bot.message_loop(handle)
print ‘sono in ascolto….’

while 1:
time.sleep(10)

Importante l’identazione delle linee dei comandi, in Python fa parte della sintassi, diversamente verranno generati degli errori. Inoltre il file deve avere i permessi di esecuzione. Il codice riporta, come esempio, la creazione di alcuni comandi di facile interpretazione: “/reboot” che effettua un riavvio del sistema, oppure “/temp” che invia in radio (RF), attraverso il programma di Jonathan texttransmit, il valore della temperatura della CPU. Potete creare nuovi comandi che agiscono sul sistema operativo e/o sul software radioamatoriale, utilizzate le stesse modalità di quelli presenti facendo le opportune modifiche. Inoltre occorre inserire ove indicato il TOKEN che è stato rilasciato durante la creazione del bot, diverso per ogni bot,  e il nominativo del vostro sistema. Questo processo deve rimanere in ascolto se vogliamo che i comandi dati dal nostro smartphone siano recepiti sul Raspberry Pi, quindi digitiamo sudo python /home/pi/tg.py per eseguirlo.

I comandi dallo smartphone o da un PC

I comandi creati possono essere eseguiti da uno qualsiasi dei nostri dispositivi connessi alla piattaforma Telegram. La prima volta occorre cercare il nostro bot, sulla barra di ricerca, indicando il nome dato (@…..) e per avviarlo, dopo averlo selezionato,  eseguire il comando /start. Come da esempio sotto riportato, eseguendo il comando /info il sistema (Raspberry) mi risponde con la versione del sistema operativo. Questa informazione la leggo direttamente sullo smartphone e su tutti i dispositivi collegati. In pratica il comando dal mio spartphone è passato sui server di Telegram, da questi al Raspberry che ha processato l’istruzione, e in restituzione il valore richiesto. Un’altra prova che ho fatto è stata quella di ricevere una foto. Collegando una telecamerina al sistema e creando apposito comando mi è stata spedita dal Raspberry l’immagine catturata. Le implementazioni sono molteplici, pensiamo a sensori collegati al Raspberry che ci danno le temperature della postazione radio, centraline meteo, etc. Raccomando uno studio del linguaggio Python e ovviamente una conoscenza dei comandi del sistema operativo Linux