miércoles, 22 de octubre de 2014

RaspRobot (Python + Twitter + Raspberry Pi)



La entrada de esta semana puede considerarse como una mezcla de las dedicadas a  Juankeando con la Pitón y las añejas centradas en la Raspberry Pi.


¿Qué es RaspRobot?

Una aplicación escrita en Python 3 que permite, a la pequeña Raspberri, realizar determinadas acciones cuando recibe un mensaje directo por Twitter.

Por ejemplo, si le enviamos un mensaje como:


Ella responderá informándonos del estado del servidor ssh:




¿Qué funcionalidades tiene?

De momento permite habilitar, deshabilitar y conocer el estado del servicio ssh. También permite conocer la IP pública del Raspberri y el clima en la ciudad previamente configurada.



¿Cómo funciona esta sensual aplicación?

Basta con enviarle por mensaje directo a la Raspberri el comando para que haga la tarea, según lo implementado:
  • Para activar el servicio ssh: 
    ssh start
  • Para desactivar el servicio ssh:
    ssh stop
  • Para conocer el estado del servicio ssh:
    ssh status
  • Para conocer la IP pública de la Raspberry pi:
    public ip

  • Para conocer el clima:
    weather



 Cada 60 segundos RaspRobot comprueba si hay mensajes directos nuevos. Si es así, procesa la acción pertinente y nos envía una confirmación/respuesta por el mismo canal.



Sus tripas

Como he dicho arriba, está escrito en Python 3 e implementa, mediante yapsy un sistema de plugins. Dentro del directorio de la aplicación existe una carpeta llamada plugins con otras dos, una llamada enabled y la otra disabled. Los plugins que se deseen cargar irán en la primera, mientras que la segunda esta destinada a los que no se quieren procesar. Esto permite una fácil extensión de la aplicación.

Para las llamadas a la api de Twitter he utilizado la implementación de la API Rest que ofrece el módulo twitter de sixohsix. Sobre este he creado mi propia clase llamada RaspTwitter abstrayendo más si cabe su librería e implementado solo las funciones que iba a necesitar con algunos cambios.

Por último, para el clima he utilizado python-weather-api con el tiempo que ofrece weather.com.

Todo esto viene coordinado por el fichero config que contiene las pertinentes configuraciones como son las relacionadas con la app de Twitter que hay que crear para la ocasión. Basta con ir a la web de apps de Twitter y crear nuestra propia aplicación. Como dato importante, es necesario darle permiso para leer, escribir y acceder a mensajes directos:




¿En qué estado se encuentra la aplicación?

Yo diría que esta en un estado alpha. La aplicación funciona, pero faltan cosas como el sistema de logs y comprobar las limitaciones que ofrece (si es que las ofrece) la propia API de Twitter.
Por supuesto, también falta añadir más módulos.



¿Dónde descargo esta cosa?

El el repositorio GitHub de 0verl0ad, concretamente de:
 https://github.com/0verl0ad/raspRobot



Consideraciones

Para conocer el identificador de tu ciudad, en la carpeta tools:





 Fuentes y material interesante:


  Cualquier comentario, duda y/o insulto en los comentarios (los comentarios serán pertinentemente moderados ¬¬), nos leemos en breve ;)


5 0verl0ad Labs: RaspRobot (Python + Twitter + Raspberry Pi) La entrada de esta semana puede considerarse como una mezcla de las dedicadas a  Juankeando con la Pitón y las añejas centradas en la Ra...

2 comentarios:

Jose Moruno Cadima dijo...

Eres un maldito enfermo!!! xD me encanta esos detalles de la raspby con Twitter y Python excelente entrada!! usarlo como herramienta de hacking externa no estaria demas ;).

Regards,
Snifer

Aetsu Alpha dijo...

Tengo pensados nuevos módulos(plugins), ya iré publicando conforme vaya subiéndolos.

Dadme tiempo xD

< >