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.