Mikrocontroller sind stark im Auslesen von Fühlern, Python im Caching, in der Authentifizierung und im Bereitstellen stabiler HTTPS-Endpunkte. Das Projekt fast-api-relay sitzt zwischen dem Arduino-JSON und der Astro-Website, vereinheitlicht die Antworten und entlastet empfindliche Embedded-Stacks.
Warum eine Relay-Schicht hilft
Direkte Browser-Abrufe an eine IP-Adresse im lokalen Netz scheitern, sobald sich das DNS ändert, Zertifikate ablaufen oder der Internetanschluss zu Hause ausfällt. Ein Relay auf einem VPS oder Cloud-Worker bietet eine gleichbleibende URL, ergänzt Redis-Caching, damit Dashboards den Fühler nicht ständig abfragen, und kann mehrere Standorte bündeln, wenn du über ein einzelnes Objekt hinauswächst.
Aufgaben von FastAPI
- Nach Zeitplan Daten vom Arduino oder vom Agenten im lokalen Netz entgegennehmen.
- Die neueste Payload mit kurzer TTL in Redis speichern.
GET /...-Antworten für die Website sofort aus dem Cache ausliefern.- Veraltete Daten protokollieren, wenn die Quelle nicht mehr aktualisiert: nützlich für Warnungen.
Beispiel für einen Abruf
Die Abrufschicht der Astro-Website fragt deine konfigurierte HTTPS-URL ab, liest das Objekt temp aus (oder erkennt automatisch SenML- / Home-Assistant-REST-JSON, wenn diese Wurzel fehlt) und ordnet die Schlüssel den Fühlern im Dashboard zu. Dieselbe URL kann Node-Skripte, Grafana-JSON-Plugins oder REST-Sensoren in Home Assistant versorgen.
# 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) Betriebsskripte
Neben der API prüfen kleine Python-Werkzeuge das JSON-Schema, füllen CSV-Archive nach oder vergleichen Fühler-Mittelwerte mit OpenWeather-Vorhersagen. Weil die Fühler einfaches JSON liefern, kannst du Auswertungen erst in einem Notebook ausprobieren und die Logik dann in produktive Dienste übernehmen.
Repository
Implementierungsdetails, Redis-Konfiguration und Hinweise zum Deployment des Relays findest du in fast-api-relay. Trage die öffentliche Relay-URL nach der Anmeldung in deinen Einstellungen für Temperatur-Feeds ein.
Uno Ethernet: HTTP→HTTPS für Push-Ingest
Ein W5100-Shield kann keinen POST an https://probeharbor.dev senden. Das Relay sketches/relay/push_https_forward.py (nur Standardbibliothek) nimmt HTTP vom Arduino entgegen und leitet denselben Pfad und Body per HTTPS weiter. Kombiniere es mit ethernet_dht22_ingest (DHT22 an A4/A5, klassisches temp-JSON).
python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \
--upstream https://probeharbor.dev