Los microcontroladores son excelentes leyendo sondas; Python destaca en caché, autenticación y en servir endpoints HTTPS estables. El proyecto fast-api-relay se sitúa entre el JSON del Arduino y el sitio Astro, normaliza las respuestas y reduce la carga sobre pilas embebidas frágiles.
Por qué ayuda una capa de relay
Las peticiones directas del navegador a una IP de la red local fallan cuando cambia el DNS, caducan los certificados o se cae la conexión de casa. Un relay en un VPS o en un worker en la nube ofrece una única URL estable, añade caché con Redis para que los dashboards no saturen la sonda y puede agrupar varios sitios si te amplías más allá de una sola propiedad.
Responsabilidades de FastAPI
- Recibir de forma programada los datos del Arduino o del agente de la red local.
- Guardar la carga más reciente en Redis con un TTL corto.
- Servir al instante desde la caché las respuestas
GET /...para el sitio web. - Registrar los datos obsoletos cuando el origen deja de actualizarse: útil para las alertas.
Ejemplo de consulta de un consumidor
La capa de consultas del sitio Astro solicita la URL HTTPS que hayas configurado, analiza el objeto temp (o detecta automáticamente JSON de SenML / Home Assistant REST si falta esa raíz) y asigna las claves a las sondas del dashboard. La misma URL puede alimentar scripts de Node, plugins JSON de Grafana o sensores REST de Home Assistant.
# Periodic upstream pull (cron or asyncio task)
import httpx
UPSTREAM = "http://192.168.1.50/temp.json"
response = httpx.get(UPSTREAM, timeout=5.0)
response.raise_for_status()
cache.set("garage:latest", response.text) Scripts operativos
Más allá de la API, pequeñas utilidades en Python validan el esquema JSON, rellenan archivos CSV históricos o comparan los promedios de las sondas con las previsiones de OpenWeather. Como las sondas exponen JSON plano, puedes prototipar análisis en un notebook antes de llevar la lógica a servicios en producción.
Referencia del repositorio
Los detalles de implementación, la configuración de Redis y las notas de despliegue del relay se mantienen en fast-api-relay. Configura la URL pública del relay en los ajustes del feed de temperatura después de iniciar sesión.
Uno Ethernet: HTTP→HTTPS para la ingesta push
Un shield W5100 no puede hacer POST a https://probeharbor.dev. El relay con la biblioteca estándar sketches/relay/push_https_forward.py escucha HTTP desde el Arduino y reenvía la misma ruta y el mismo cuerpo por HTTPS. Combínalo con ethernet_dht22_ingest (DHT22 en A4/A5, JSON temp clásico).
python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \
--upstream https://probeharbor.dev