Temperaturas externas en la Raspi Zero 2W
Después de un tiempo de baja de la VPN porque el ISP ha cambiado nuevamente mi ip pública (era de esperar, suele pasar) y que ha dejado este sitio fuera de combate durante un mes, hemos de volver a seguir explorando sin más dilaciones.
El tema que nos trae hoy es mi bienamada Raspi Zero 2wh, que a veces le pongo una pantalla y juego, como la publicación que antecede y ahora que oficia 24x7 de máquina del clima.
Para ello me hice con un sensor de temperatura/humedad un poco más preciso que el DHT11 que tengo ahora, un nuevo y espectacular, preciso y nunca bien ponderado DHT22, que dicen las malas lenguas necesita una resistencia entre los pines 1 y 2, a lo cual no sé si es cierto o no, pero se las soldé igual, a lo salvaje y quedó como el orto, pero anda.
Acto seguido hubimos de probar el funcionamiento de este maravilloso aparatejo, con un script sencillo que nos proveyó nuestro buen amigo chatgpt, que antes de dominar el mundo y colapsarlo, nos sugiere estas líneas:
import adafruit_dht
import board
import time
dht = adafruit_dht.DHT22(board.D4)
while True:
try:
temp = dht.temperature
hum = dht.humidity
if temp is not None and hum is not None:
print(f"Temp: {temp:.1f} °C")
print(f"Humedad: {hum:.1f} %")
except RuntimeError:
# errores normales del DHT22 → los ignoramos
pass
time.sleep(3) # ⏱️ acá: 3 segundos (podés subir a 5 si querés más paz)
Como se puede observar, también me deja mensajes de amor y paz. También has de notar que tenés que instalar el adafruit_dth.
Yo lo que hago siempre es "envolver" toda la mierdecilla que voy instalando con:
Lo cual te crea un directorio que activamos:
source envPruebas/bin/activate
Y ahí damos rienda suelta a todos los pips install que necesitemos.
El tema se presentaba de la siguiente manera. Cómo le paso esto a la Raspberry Pi 4 que está a 11 cuadras de la raspi zero, expectante, tras una VPN que ella misma ejerce como jefa absoluta. Bueno, sencillo, o más o menos, mi lógica ligera devino en estos pasos:
1) Grabamos la temperatura y humedad en un archivo de texto en la Zero
import adafruit_dht
import board
import time
from datetime import datetime
ARCHIVO = "/home/un-tecnico-ligero/clima_externo_rpizero.txt"
dht = adafruit_dht.DHT22(board.D4)
try:
temp = dht.temperature
hum = dht.humidity
if temp is not None and hum is not None:
ahora = datetime.now().strftime("%d-%m-%Y %H:%M:%S")
linea = f"Rpi_Zero: {ahora} | TEMP: {temp:.1f} ºC | Hum: {hum:.1f} %\n"
print (linea)
with open(ARCHIVO, "w", encoding="UTF-8") as f:
f.write(linea)
except RuntimeError:
pass
finally:
dht.exit()
Bien, ya tenemos un archivo de texto para manipular, lo cual es maravilloso y nos da múltiples posibilidades. Este archivo se puede escribir por ejemplo a cada hora con crontab. Y para ello lanzamos un script que lee primero (no muy fiable siempre la primera lectura si tenemos que encender de nuevo por algún motivo, espera 5 segundos, lee de nuevo y manda el archivo de texto con scp a la Raspi4.
```
#!/bin/bash
cd /home/un-tecnico-ligero/Documents/
source envPruebas/bin/activate
python temp_continuo.py
sleep 5
python temp_continuo.py
deactivate
cd /home/un-tecnico-ligero
scp clima_externo_rpizero.txt un-tenico-ligero@rasPberry-pi4:clima-simple