Registrador
valores meteorológicos
Parte II
Parte Informática
Parte II
Parte Informática
En la primera parte del proyecto http://seta43.duckdns.org/2026/misensor/senmio.html nos quedamos en el receptor RF , que recibe los datos de temperatura, humedad y presión.
Estos datos son enviados a la Raspberry Pi por el puerto serie a través del USB.
Ahora nos toca tratar los datos para representarlos en la página WEB y mostrarlos en una gráfica.
Partimos de que ya tenemos un servidor WEB instalado en nuestra raspberry , en nuestro caso he instalado Debian 9 con el servidor nginx.
Para más información podéis visitar http://seta43.duckdns.org/2026/servpi.html .
La versión de Raspberry que utilizo es una de las primeras con solo 512 Mb, por lo cual arranco en el modo consola, de esta forma irá más fluido.
Existe dos programas que se deben ejecutar, el programa SerialSensorWEB.py que se encarga de leer los datos que proceden del puerto serie, y un segundo programa jPlot.py que se ejecuta cada 10 minutos.
Todos los programa y la páginas web creadas se encuentran en el directorio /var/www/html/ztempera .
Empezamos con que el que arranque Linux con un usuario (seta) determinado en modo consola.
| --------------EDITAMOS------------------------------------ nano /etc/systemd/system/getty@tty1.ser Añadir: [Service] ExecStart= ExecStart=-/sbin/agetty --autologin seta --noclear %I $TERM |
Una vez arrancado en modo consola el usuario seta debemos ejecutar el programa tarea4.sh , este es un script que lanza SerialSensorWEB.py .
| -----------Añadir a
.bashrc .................... cd /var/www/html/ztempera/ ./tarea4.sh |
Vemos cuando se reinicia o arranca la raspberry se inicia una consola ejecutando SerialSensorWEB.py .
Automáticamente escanea los puertos serie y si encuentra la placa llamada SENSORTOTAL6 , empieza a procesar los datos recibidos.
Todos los datos recibidos los archiva cada minuto en un fichero con el nombre Temp2026_10_02.csv , donde 2026 sería el año, 10 el mes, y 2 es el día. Además cada 2 minutos se crea y actualiza la página WEB. La página creada se llama index.html con los datos actualizados de temperatura, humedad y presión.
Ahora nos toca crear los gráficos de temperatura, humedad y presión.
Anteriormente ya lo había realizado en http://seta43.duckdns.org/webgra.html utilizando la librería matplotlib en python.
Esta librería crea un fichero de dibujo png con la gráfica de datos proporcionados.
El problema de está librería es que en la raspberry tarda hasta 3 minutos, en un ordenador normal lo hace en 1 segundo.
Creo que es debido al uso o no uso de la FPU, pero eso es especulación mía. El uso de esta librería no es viable en esta rasberry.
La otra forma es utilizar JavaScript y utilizar la librería http://www.jqplot.com/ . De esta forma la realización y los cálculos los hace en el navegador del usuario. Anteriormente ya lo había realizado en http://seta43.duckdns.org/jsplot.html .
Para crear la página WEB de gráficos se debe ejecutar el programa xgratem.sh , este script lanza el programa jPlot.py cada 10 minutos.
Para ejecutar un programa cada 10 minutos debemos desde un terminal del usuario seta ejecutar:
| crontab -e . Editaremos de la siguiente forma: 10 * * * * /var/www/html/ztempera/xgratem.sh |
El programa crea con los datos almacenados en el fichero Temp2026_10_02.csv , la página WEB llamada index3.html , que hace uso de JavaScript para generar los gráficos.
Programas y ficheros
Este proyecto me obligó a repasar muchos proyectos anteriores, y a recordar la programación en python y JavaScript que lo tenía algo olvidado.
Es satisfactorio ver en directo la temperatura exterior y las gráficas, como un extra de mi página WEB.
Para ver la temperatura en Palencia (España) - http://seta43.duckdns.org/ztempera/index.html
Saludos.
Juan Galaz
Bibliografía:
http://seta43.duckdns.org/ard433.html
http://seta43.duckdns.org/termot.html
http://seta43.duckdns.org/temt3.html