miércoles, 7 de octubre de 2026

Registrador valores meteorológicos . Parte II . Parte Informática

Página principal
Registrador valores meteorológicos
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

martes, 6 de octubre de 2026

Registrador valores meteorológicos. Parte I. Parte Electrónica

  Página principal

Registrador valores meteorológicos
Parte I
Parte Electrónica

Hace unos 6 años había realizado un proyecto sobre un registrador de datos meteorológicos.
Aprovechado un sensor exterior comercial, leía los datos de humedad y temperatura. Estos datos se almacenaban en un servidor, y luego realizaba gráficas con estos datos  http://seta43.duckdns.org/camtem.html.
Mas tarde añadí un sensor de presión, con lo cual podía predecir el tiempo http://seta43.duckdns.org/webgra.html.
Una bajada de la presión atmosférica y un aumento de la humedad, es un seguro indicio de lluvia.
Después de un par de años funcionando, el sensor exterior dejo de funcionar. Como no tenía mas sensores de humedad/temperatura, utilicé los datos de otro sensor que solo proporcionaba temperaturas http://seta43.duckdns.org/ard433.html.
Así estuve años, registrando valores de presión y temperatura.
Estos últimos meses he estado haciendo varios proyectos sobre sensores:
25/09/2026 - Sensor de temperatura - TFA - DHT11 - SENSOR_DHT11
21/04/2026 - Sensor de temperatura - TFA - 18B20 - SENSOR_TFA_18B20
18/04/2026 - ESP32-C3 - Sensor de temperatura - Protocolo  TFA . SENSOR_TFA_C3
07/04/2026 - Arduino - Sensor de temperatura - Protocolo  TFA . SENSOR_TFA
En todos ellos incluía sensores de temperatura, humedad y presión. Pero al utilizar el protocolo TFA de solo sensor de temperatura, me puse a pensar para hacer algún cambio.
No se podía depender de sensores comerciales,  se rompe el sensor (cosa habitual) , y te encuentras en la misma situación.
Pues bien, cree mi propio sensor con medidas de
temperatura, humedad y presión.
Además cree mi propio protocolo derivado del TFA, al que añadí un Byte con el valor de la humedad.
Sensor emisor de temperatura DHT11
Protocolo SETA43   
CRC=111101 61   223-Device  80-Humedad  270-Grados  3-Canal 2-Bateria
4bits-CRC   8bits-Device    8bits-Humedad   12bits-Grados   2bits-Canal   2bits-bateria
1101 11011111 01010000 000100001110 11 10




Existen dos sensores externos:

Realizado con arduino   ->http://seta43.duckdns.org/2026/tfa/tfa.html


Realizado con ESP32-C3 ->
http://seta43.duckdns.org/2026/tfa/tfac3.html


Ahora los datos se mandan desde el sensor externo mediante Radiofrecuencia 433MHz , y los recibe el módulo receptor que tiene además un sensor de presión del tipo BMP180/280.
Todos estos datos se envían al servidor web que los trata y los muestra en una página WEB.



Receptor de RF 433MHz

SENSORTOTAL6
SENSORTOTAL6
SENSORTOTAL6
Scanning...
0-I2C device found at address 0x38 AHTxx
1-I2C device found at address 0x77 BMP280/180
done

Int433_Mode40170_BMP280


INICIO
Canal= 1
Humedad= 51
Grados= 232
BMP1= 262
BMP2= 9265
CHECKSUM= 1
FINAL


Salida por el terminal serie.

Programas

Aquí terminamos la parte de electrónica del proyecto.
Como se puede ver, del sensor externo se obtienen  los datos de temperatura y humedad, y del receptor interno se obtiene los datos de la presión.
En la siguiente parte del proyecto mostraremos como se realiza la representación en la página WEB de los datos, y la gráficas de los diferentes valores.

Saludos.
Juan Galaz



Bibliografía:

http://seta43.duckdns.org/ard433.html
http://seta43.duckdns.org/termot.html
http://seta43.duckdns.org/temt3.html