Gestionar una Raspberry con Telegram

rasp-teleg

Mí último proyecto ha sido precisamente este, el poder interactuar con mi Raspberry  desde mi teléfono móvil,  gracias a la aplicación Telegram, una herramienta que os permitirá enviar ordenes a vuestra RPI y recibir información de ella, aunque esta esté dentro de una red doméstica, y aun encontrándose por detrás de un Firewall.

Para lograrlo lo primero que tenemos que hacer es actualizar el software, descargar e instalar la API de Telegram ejecutando las siguientes ordenes:

sudo apt-get install python-setuptools
sudo apt-get install python-pip
sudo pip install telepot
git clone https://github.com/eternnoir/pyTelegramBotAPI.git
cd pyTelegramBotAPI

python setup.py install

 

Una vez concluidos los pasos anteriores, lo siguiente es configurar lo que Telegram llama Bot, que no es otra cosa que dar de alta nuestro dispositivo (RPI) de manera que sea identificable dentro de la red Telegram.

Para hacerlo necesitamos entrar en Telegram y crear una conversación con @botfather.

bothfather

Al hacerlo nos aparecerá un mensaje de bienvenida, y otro de presentación en el que se nos resumirán los comandos que @botfather permite para gestionar nuestros Bots.

Nuestro siguiente paso en la creación del Bot, continuando la conversación, ha de ser:

/newbot      telebot

Tras lo que se nos solicitará el nombre que queremos darle a nuestro Bot, que para que os hagáis una idea será el que aparecerá en nuestras conversaciones futuras con él:

Podemos llamarte RPI

Seguidamente se nos pedirá un nombre de usuario (telegram) para nuestro Bot, que para que lo entendáis y no preste a confusión no es otra cosa que el nombre público de vuestro Bot en la base de datos de Telegram. Es importante que el nombre elegido acabe con las letras bot 

Es posible que el nombre elegido ya exista, ante lo que se os volverá a solicitar, os recomiendo buscar un nombre singular y a la vez fácil de recordar por vosotros ya que será el que Telegram (@botfather) os pida en el futuro para su gestión.

En este ejemplo raspberrypi2alteabot

Si el nombre asignado no existe, se nos confirmará el alta en el momento y se nos indicará una referencia que ellos llaman Token compuesta de letras y números, que necesitaremos utilizar en cualquier programa que desarrollemos en el futuro para identificar a nuestra Raspberry previamente al envío de cualquier mensaje.

Continuando con la configuración, desde la conversación con @botfather podemos asignar una imagen a nuestro Bot con la orden

/setuserpic

O cambiar su nombre (el que aparece en la conversación) por otro con:

/setname

Una vez acabada la configuración llega la parte más divertida, la empezar de interactuar con nuestro Raspi-bot, para ello crearemos una conversación (siguiendo el ejemplo) con @raspberrypi2alteabot 

tele-mov

Para haceros el trabajo más sencillo a continuación os adjunto un sencillo script que he hecho en python consistente en darnos la fecha y la hora de ese preciso instante con tan solo enviar la orden  /time

 

Os sorprenderá ver la rapidez de la respuesta.

__________________________

 

import time
import datetime
import telepot
import commands

def handle(msg):
  print msg
chat_id = msg[‘from’][‘id’]
command = msg[‘text’]
  if command == ‘/time’:
bot.sendMessage(chat_id, str(datetime.datetime.now()))
bot = telepot.Bot(‘AQUI INFORMAMOS NUESTRO TOKEN’)
bot.message_loop(handle)

while 1:

time.sleep(3)

__________________________

Si ejecutáis el programa, hacéis una prueba enviando el comando /time , y revisáis lo que aparece en la pantalla de vuestra Raspberry, veréis una secuencia de datos entre los que  aparecerá una cadena numérica antecedida de u’id’:

Esa cadena, normalmente de 8 dígitos, es el identificativo (usuario en Telegram) de la persona que ha enviado la orden, un dato muy útil si por ejemplo queremos restringir el envío de respuestas a un usuario/s concreto/s, con tan solo sustituir chat_id por ese dato (entre comillas) en el comando de envío del mensaje.

Así, para por ejemplo enviar la respuesta tan solo al usuario 12345678 lo haríamos de la siguiente manera:

bot.sendMessage(‘12345678’, str(datetime.datetime.now()))

 

 

Esta entrada fue publicada en Raspberry Pi y etiquetada , , , , , , , , , . Guarda el enlace permanente.

4 respuestas a Gestionar una Raspberry con Telegram

  1. Álvaro dijo:

    Hola, he hecho todo tal cual comentas y no me funciona (no obtengo respuesta, y en el terminal se queda en espera constantemente). ¿Puedes ayudarme? Grcias!!

    Me gusta

    • elalbir28 dijo:

      Hola Alvaro, ¿puedes explicar con más detalle qué te ocurre exactamente? ¿No recibes el mensaje en el móvil o en la Raspberry Pi? ¿Has comprobado que el token se haya informado correctamente? Ya me cuentas.

      Me gusta

  2. edgar dijo:

    hola bro, una consulta, porque me sale este esrror al momento de hacer correr tu script

    File “edgar.py”, line 10
    if command == ‘/time’:
    ^

    este es el código completo, me parece que la libreria commands no encuentra……. o nose que pueda ser, ayudaaaaaaaaaaaaaa jefe

    import time
    import datetime
    import telepot
    import commands

    def handle(msg):
    print msg
    chat_id = msg[‘from’][‘id’]
    command = msg[‘text’]
    if command == ‘/time’:
    bot.sendMessage(‘12345678’, str(datetime.datetime.now()))
    bot = telepot.Bot(‘602726791:AAHDgyZ_axSnhWv3mFq1nLNU71eBjRtp7-4’)
    bot.message_loop(handle)

    while 1:

    time.sleep(3)

    Me gusta

    • elalbir28 dijo:

      Hola Edgar, buenas tardes,

      Revisando tu mensaje se me ocurren dos errores posibles:

      -las tabulaciones: en python son fundamentales ya que es su forma de establecer orden y jerarquías en las definiciones y condiciones.

      -las comillas simples: si has copiado el código haciendo copiar/pegar muy probablemente se hayan pegado tildes/acentos en lugar de comillas simples, visualmente son casi iguales pero son distintos caracteres, por lo que el cambio de uno por otro te dará errores de ese tipo. Prueba a sustituir las comillas una por una y prueba.

      Ya me dices como ha ido.

      Saludos

      Santi

      Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s