Buenas! Quería quería compartir un pequeño proyecto en el cual estuve trabajando estos días. Con esto podés visualizar los Top Post de T! sin entrar al sitio Web para ver si hay algo interesante. Me sirvió para aprender Python y mezclarlo con algo de domótica.
Primero les muestro algunas imágenes del resultado final:
En el post no pretendo hacer un paso a paso, sino mas bien orientar un poco quienes estén interesados en utilizar estas herramientas, pero no tienen mucha práctica en el tema (Como es mi caso)
#1 Instalar WiringPi
WiringPi es una librería hecha en C, pero está disponible tanto para usuarios de Ruby como de Python. El objetivo es tener una única plataforma común y set de funciones para acceder a los GPIO's de la Rasberry Pi en distintos lenguajes.
Para instalarlo nada más simple que escribir lo siguiente en consola:
Es importante que recuerden que WiringPi enumera de forma distinta los pines GPIO de la Raspberry Pi, acá dejo una imagen:
Esta librería me pareció interesante porque vamos a poder controlar los LCD Display HD44780 y los registros de desplazamiento 74HC595N usando unas funciones bastante simples (Lo vemos más adelante).
#2 Entender los tags del lenguaje HTML (Un poco, no es necesario saber 100% HTML)
Como dijimos, vamos a sacar información (web scraping) del sitio web Taringa!, pero para eso primero necesitamos entender cómo están almacenadas las variables que queremos obtener (Título del post, autor y puntos obtenidos).
Como se aprecia en la imagen podemos sacar algunas conclusiones rápidamente:
1.<u1 style class=PERIODO> nos indicará qué período se está mostrando en la página. Más arriba pueden ver los distintos períodos en el modo display:none
2.<div class=”count>PUNTOS</div> nos indica los puntos del post.
3.<h3>TITULO</h3> nos indica el título del post.
4.Por último <p class= “icon-usuarios”>::before AUTOR </p> nos indica el autor del post.
Sabiendo los tags que contienen cada variable que queremos obtener, podemos empezar a programar un poquito con Python. ¿Pero cómo extraemos esos valores?
#3 BeautifulSoup
Beautiful Soup es una biblioteca de Python para analizar documentos HTML (incluyendo los que tienen un marcado incorrecto). Esta biblioteca crea un árbol con todos los elementos del documento y puede ser utilizado para extraer información.
Los pasos de instalación + ejemplos los pueden ver acá:
(Hacé las pruebas!)
#4 Entender los registros de desplazamiento 74HC595N
Son Circuitos Integrados que sirven para almacenar un número binario de tantos bits como biestables contenga el Circuito (En nuestro caso: 8). Se construyen a partir de biestables de tipo D.
A nosotros nos interesan los registros del tipo serie-paralelo (Entrada Serie -> Salida Paralelo), con esto podremos ahorrar la cantidad de pines que utilizamos en nuestro Raspberry Pi para conectar los LCD Display HD44780.
Pines relevantes del 74HC595N:
Importante: de los 8 pines destinados a la salida en paralelo que tiene el 74HC595N, solamente utilizaremos 6 (QA, QB, QC, QD, QE, QF) que corresponden respectivamente a los pines de CUALQUIER (16x2, 20x4) LCD Display HD44780 (RS, E, DB4, DB5, DB6, DB7)
Aprender a usar este integrado me pareció interesante porque en vez de tener que conectar 12 pines a nuestra RPI solamente utilizaremos 6.
#5 Hacer las conexiones de cableado
Esta parte es todo un tema, porque son muchos cables y si no tenés mucha idea de dónde va conectada cada cosa podés llegar a estar bastante tiempo hasta que te des cuenta lo que está mal. Por eso dejo una imagen de cómo quedaría todo conectado:
Utilizando siempre la notación de los pines de WiringPi para la RPI, usamos los pines enumerados 0, 1 y 2 para el primer 74HC595N (el de la izquierda en la imagen) y los pines 3, 4 y 5 para el segundo 74HC595N.
Como ven en la imagen, si quieren puede usar un potenciómetro (10K) para cada LCD pero no es algo que se necesite si o si.
#6 Escribir el código completo en Python
Les dejo una "foto-receta oficial (?" con los pasos que seguí, igual dejo a mano los archivos fuentes escritos en python:
Dejo el código fuente acá
El código no es de lo mejorcito que hay, teniendo en cuenta que no sabía nada de Python, puede mejorarse muchiiisimo. (Pero funciona 100%)
#7 Programar tareas con Cron
Hay excelentes guías en internet sobre cómo usar Cron para programar tareas en Linux. En esencia es indicarle a tu Raspberry PI en qué momento del día/s querés que tu script en Python se ejecute. Este enlace me sirvió a mí.
link: https://www.youtube.com/watch?v=sTJOeWLRtWo&feature=youtu.be
Edit: en el video algunos top no se muestran en el orden correcto (despues del décimo), cuando termine de corregirlo subo un nuevo video.
Fin del post