Crontab: Tareas programadas en Raspberry Pi

Además del Autorun que permite lanzar una tarea en el arranque de la Raspberry PI, también podemos programar tareas con Crontab, que es la lista o fichero de tareas que debe ejecutar el  cron (daemon o demonio de tareas programadas) en Raspbian (Linux Debian) y que hemos necesitado para la configuración de Weather34 – Weewx sobre Raspberry Pi.

Además de invocarlo con el comando “crontab  -e” también se puede invocar al entorno gráfico o GUI con el comando  “gnome-schedule” si previamente lo hemos instalado con “sudo apt-get install gnome-schedule“.

El formato de las órdenes de crontab es sencillo:

  • minutos (0-59)
  • hora(0-23)
  • día del mes(1-31)
  • mes (1-12)
  • dÍa de la semana (0-7 domingo )
  • comando

Crontab admite varios valores separadas por comas “,” y rangos separados por guion “-“ así como el asterisco “*” para incluir todos los valores, y  etiquetas como  “@reboot “ (cada reinicio) , @annually (cada año), @monthly (cada mes),  @weekly (cada semana), @daily (Cada día), @hourly (Cada hora) y # para los comentarios.

Por ejemplo:

# Ejecuta la tarea de Weather34 cada media hora
0,30 * * * * /var/www/html/weather34/cronfiles/stationcron.php

En el ejemplo se ejecuta en los minutos 0 y 30 de cada hora de cada día “stationcron.php”

@reboot python /home/pi/myscript.py &

En este segundo ejemplo en el arranque se ejecuta el programa “myscript.py”, ¡atención! poner & para se ejecute en segundo plano y no pare el inicio de la Raspberry pi

Con “crontab -l” se pueden listar las ordenes programadas en crobtab.

En el directorio /etc/cron.d están los archivos crontab comunes a la instalación (listelos por curiosidad)

 

 

IVCB – Isabel de Villena Club de Basket

Durante las temporadas  2015-2016 y 2016-2017 Sonotrigger patrocinó al  club de baloncesto mixto del IES Isabel de Villena de Valencia. Lo acompañamos la primera temporada en su nacimiento y en los primeros partidos amistosos, y en siguiente en sus primeras competiciones en la liga municipal en las categorías infantiles y cadetes.  Nos alegra que en esta temporada 2017-2018 ya cuente con una nutrida plantilla que compite en las categorias infantil, cadete y juvenil.

Equipos infantil-mixto, cadetes-mixto y juveniles-masculino del Isabel de Villena Club de Baloncesto (Malva-rosa, Valencia, España) temporada 2017-2018 junto a los entrenadores Manuela y Carlos, y la directora del centro (Foto Sonotrigger Software).

 

Weather34 con Weewx en Raspberry Pi

Después de arrancar Weewx en una Raspberry Pi 3 model B con Raspbian, pensamos en publicar los resultados en web mediante Weather34, cuyo diseño nos encanta.

PWS with weeWX and weather34

Personal Weather Station with WU connection working at weeWX & weather34

Puede haber otras muchas soluciones, pero a continuación describimos la que hemos implementado y comprobado su funcionamiento:

  • Instalar PHP en Apache: sudo apt-get install php libapache2-mod-php -y
  • Descargar en la Raspberry Pi la versión de Weather34 para Meteobridge, y descomprimir.
  • Copiar los archivos y directorios descomprimidos en el directorio (Que hemos creado previamente) /var/www/html/weather34 (En /var/www/html/weewx tenemos weewx ).
  • En el directorio /etc/apache2/conf.d/ crear el archivo weather34.conf (p.e. tocuh weather34.conf y después invocar el Text Editor que se encuentra en los accesorios de Raspbian ) con el siguiente contenido (Permite que Apache2 localizar los fuentes php de weather34 para servirlos a las peticiones de un navegador, hicimos algo similar en la instalación de weewx):
Alias /weather34 /home/weather34/public_html
<Directory /home/weather34/public_html>
 Options FollowSymlinks
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>
  • Editar el fichero /etc/weewx/skins/Standar/skin.conf e incluir la entrada:
[[[MBrealtime]]]
 template = MBrealtime.tmpl
  • Editar  /etc/weewx/weewx.conf e incluir al final de la entrada [StdReport] 
[[[MBrealtime]]]
 skin = MBrealtime
  • Para probar el correcto funcionamiento de los informes podemos lanzar el proceso que los genera.
pi@raspberrypi:~ $ wee_reports /etc/weewx/weewx.conf
Using configuration file /etc/weewx/weewx.conf
Generating for all time

Con estas definiciones, cuando se ejecuta periodicamente la generación de informes, StdReport de Weewx, se invoca al skin MBrealtime que usa el template del mismo nombre que encuentra en MBrealtime.tmpl.  Cheetah, incluido en weewx a partir de la definición encontrada en MBrealtime.tmpl (En puede descargar una versión beta de http://software.sonotrigger.com/weather34/MBrealtime.tmpl ) generará un fichero con los datos en formato Meteobridge que servirán de entrada de Weather34, cuando se copien al directorio de weather34.

Para la copia del fichero de entrada y la actualización de weather34 hay que incluir dosentradas en el crontab (Se merece otra entrada):

  • /var/www/html/weather34/cronfiles/weewx.sh (Cada 5′, hay que crearlos).
  • /var/www/html/weather34/cronfiles/stationcron.php (Cada 30′, en mbdbfiles).

El scrip de copiar ficheros puede ser algo así (mbridge/MBrealtimeupload.txt  son los valores por defecto de Weather34 Meteobridge):

#!bin/bash
# /var/www/html/weather34/weewx.sh
sudo touch /var/www/html/weather34/mbridge/MBrealtimeupload.txt
sudo cp -afv /var/www/html/weewx/MBrealtime 
/var/www/html/weather34/mbridge/MBrealtimeupload.txt

Ahora solamente falta parar y arrancar Apache y a continuación weeex y poner en el navegador de la raspberry http//localhost/weather34 o en un dispositivo conectado a la red local sustituyendo localhost por la IP asignada a la Raspberry y debería funcionar.

weeex con weather34

Apache en Rapberry PI

Apache es un software que permite crear un servidor HTTP (Permite publicar páginas en formato HTML sobre protocolo http o https visualizables con un navegador o browser como Crome o Firefox; en red local o Internet). Las versiones de Apache 2.x se denominan Apache2

Además de poderlo instalar de forma aislada, existen paquetes como XAMPP que de una forma muy sencilla permite instalarlo sobre los  Sistemas Operativos más populares (Windows, xOS y LINUX)  junto con otro software que lo completan como es una Base de Datos (Maria DB de los desarrolladores de MySQL) y lenguajes de programación ( Perl y PHP).

Apache está disponible en Raspberry Pi al venir incluida en la distribución del Sistema Operativo LINUX Raspbian lo que le permite disponer de un servidor web en su dispositivo, lo que es aprovechado entre otros por software de control de estaciones meteorológicas Weewx, pero puede instalar por ejemplo WordPress

Algunos comandos de terminal de Raspbian útiles cuando se trabaja con Apache (No son necesarios para que funciones weewx):

  • Instalar Apache2 (no necesario con la versión actual de Raspbian): sudo apt-get install apache2 -y
  • Instalar lenguaje PHP en los servidores web, muy usado:
    • sudo apt-get install php libapache2-mod-php -y
  • Arrancar, parar y rearrancar  Apache:
    • sudo /etc/init.d/apache2 start 
    • sudo /etc/init.d/apache2 stop
    • sudo /etc/init.d/apache2 restart
  • Comprobar el estado de Apache (Arrancado, parado, en error, etc.):
    • sudo /etc/init.d/apache2 status
  • Comprobar versión de Apache: aptitude show apache2
  • Comprobar que está arrancado apache como servicio: systemctl status apache2.service
  • Ver mensajes del log de journal de Apache (errores): /etc/init.d $ journalctl -xe
  • Autorizar en el directorio de Apache para publicar nuevas páginas web: sudo chown -R pi /var/www/html

Para probar el funcionamiento de Apache basta con poner en un navegador de un dispositivo que esté en la misma red local la dirección IP de la Raspberry Pi (En el terminal hostname -I o en el dispositivo con Angry IP Scanner u otro scan de direcciones IP) o si está en la propia Raspberry poner localhost o 127.0.0.1 para ver:

Esta página de inicio que se proporciona por defecto con la instalación de Apache2  puede sustituirse por una nuestra y está localizada en /var/www/html/index.html

Si en su Raspberry Pi tiene problemas de memoria puede usar otros servidores web más ligeros que Apache2 como lighttpd o nginx.