El clima y monitor de red en la pantalla de la Raspberry.

Hacía ya buen un tiempo que el script en python que había bajado para tener el clima en la Raspberry había dejado de andar. El código estaba comentado en ruso, el proveedor de la api con la información se hizo pago y la verdad que tampoco me gustaba mucho como funcionaba por la gran cantidad de recursos que consumía.

Tome la determinación de armar algo que sea funcional e incorporar información de como esta funcionando la red / Internet en casa.

Opte por resolver todo con un script en bash. Que lo llame cli-status.

Introducción:

Para proveer la información del clima utilizo los servicios de https://openweathermap.org/ que tiene una opción gratuita que es más que suficiente para el ciclo de actualización que voy a necesitar.

Para el chequeo de Internet, reviso dos cosas:

  • Los DNS en mi caso tengo 3 PiHoles andando en casa, y verifico que me estén dando servicio, se pueden configurar n en el archivo de configuración.
  • Ping al 8.8.8.8, sobre esto tomo dos valores de referencia, la taza de perdida de paquetes PL (Packet Lost) y PA (Ping avegare). Si tengo una pérdida de más del 5% lo considero un warning y más del 30% error (inusable), para el promedio del tiempo de respuesta del ping tomo como warning 15 ms y más de 200 como error. Seguramente vaya ajustando esto en función del tiempo.

El clima y monitor de red en la pantalla -> Procedimiento :

El primer paso a realizar es instalas las dependencias.

sudo apt update
sudo apt upgrade
sudo apt install figlet wget jq
  • «figlet» es una solución para crear banners ASCII, (con lo que genero la información para la pantalla).
  • «jq» Utilidad para procesar jsons en consola.
  • «wget» Es una utilidad de software libre para descargar archivos utilizando protocolos http/https ftp/ftps.

La tipografía que utilizó para el texto principal no esta dentro de las que vienen con el paquete de figlet, así que la descargo en forma manual.

sudo wget https://raw.githubusercontent.com/xero/figlet-fonts/master/ANSI%20Shadow.flf -O /usr/share/figlet/ANSI-Shadow.flf

Finalizada la instalación de requisitos procedemos a clonar el repositorio de github donde está el código. El script yo lo instalé en el /opt

sudo cd /opt
sudo git clone https://github.com/fsismo/cli-status.git status

Cree un archivo de instalación para que corra como servicio. Es el install.bash.

cd /opt/status
sudo ./install.bash

Para para el iniciar / parar o ver el estado debemos ejecutar:

sudo systemctl (start/stop/status) CliStatus

En el config.bash tenemos todos los archivos de configuración del script. De mínima deberían configurar la api del clima y la ciudad donde están ubicados.

CONSOLE="/dev/tty1"
UPATH="/opt/status"
DNSS=("10.0.0.10" "10.0.0.31" "10.0.0.62")
PING_TEST='8.8.8.8'
PING_COUNT='30'
BAD='\033[0;31m'
WAR='\033[1;33m'
OK='\033[1;32m'
CONSOLEWITH='60'

#WEATHER EXTENSION
#I'm gonna use the openweathermap.org api to get the weather data.

OWM_AK='' #https://home.openweathermap.org/api_keys
OWM_CITYID='3435910' #https://openweathermap.org/city/3435910
OWM_UNITS='metric'        # metric | imperial   
OWM_COLOR='\033[0;37m'    # weather and hour color

Para visualizar el clima y el resultado del monitor de red en la raspberry tenemos que ejecutar el comando :

sudo systemctl start CliStatus

Va a demorar unos segundos en obtener los datos. La pantalla se actualiza cada 20 segundos, pero los datos se obtienen 1 vez por minuto (en un proceso desasociado a la impresión en pantalla).

Algunas capturas del clima y monitor de red en la pantalla de mi raspberry:

Observaciones:

La pantalla que uso y la carcasa la compre en aliexpress en este link, pero parece que a la hora de escribir este post la carcasa ya no la tienen en stock. De todas formas se debería adaptar fácilmente a cualquier pantalla.

Consume muy pocos recursos, la estóy corriendo en una Raspberry PI 3, que tiene el pihole, el servidor ntpd y la pantalla y el Load esta en 0.1x.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.