English version · Projektübersicht · VPS-Demo-Parität · VPS-Betrieb · Test-Labor Mac + VPS
Wie Sensor-, App- und Gesundheitsdaten in DeinHaus 4.0 fließen — vom Raspberry Pi im Haushalt über die THD-Server bis zu Forschungs-Tools.
Referenz-Stack: dh40-software-and-hardware-architecture-master/wohnung/docker/ (Edge) und …/thd/ (zentral).
Es gibt vier parallele Datenpfade (zwei am Haushalt-Edge, ein Cloud-Gesundheitsimport, ein Jetson-Forschungspfad):
| Pfad | Speicher | Zweck | Nutzer |
|---|---|---|---|
| Lokale Zeitreihen | InfluxDB 1.8 (sensors) |
Live-Charts, kurze Historie auf dem Tablet | dh40-app Wohndaten, optional Chronograf |
| Zentrale Studienpipeline | HiveMQ → MariaDB | Langzeitspeicherung, Exporte, ML | THD-Forschung, dh40-spark, Streamlit, … |
| Withings-Gesundheit | Withings-Cloud → MariaDB (dh40_withings / database_science) |
Gewicht, Schlaf, Aktivität von Studiengeräten | THD-Forschung, Streamlit — keine lokalen Influx-Charts |
| Kamera / Notfall-ML | Lokale Logs auf Jetson (nur Forschung) | Sturz-/Präsenz-/Audio-Notfall-Prototypen | Notebooks, MA — nicht Produktions-Pi-Stack |
Tablet und Labor-UI lesen lokale Sensordaten (MQTT + Influx). Z-Wave- und Button-Daten werden über VPN + MQTT-Bridge zum THD repliziert. Withings umgeht die Pi-Datenebene — siehe §3. Kameras sind ein separates Forschungsspoor auf Jetson — siehe §4.
zwavejs2mqtt (Tür, Bewegung, Klima, Steckdose, Rauch, …)Muster zwavejs2mqtt/<gateway>/<node>/…. Beispiele:
| Topic-Muster | Messgröße | Nutzung |
|---|---|---|
…/Air_temperature |
Raumtemperatur | Wohndaten, Labor |
…/Humidity |
Luftfeuchtigkeit | Wohndaten, Labor |
…/+/Door_state |
Tür/Fenster | Wohndaten, Labor |
…/+/Motion_sensor_status |
Bewegung | Heatmap, Labor |
…/Power |
Leistung Steckdose | Wohndaten |
…/level, …/isLow |
Batterie | Wohndaten |
Vollständige Bridge-Liste: wohnung/docker/mosquitto2mosquitto/config/mosquitto.conf.
{
"time": 1719000000000,
"value": "22.5",
"nodeName": "Raumklimasensor",
"nodeLocation": "Wohnzimmer"
}
Tags über topic_parsing: sensor_id, measured, measured_detail.
MQTT (1883) → Telegraf → Measurement mqtt_consumer
sensors, Retention autogensensors/autogenDerselbe MQTT-Strom wird per Bridge zu THD HiveMQ gesendet (TLS, Zertifikate, Präfix data/<home_id>/). Konnektoren schreiben in dh40 (roh).
| Anfrage | Produktion | Inhalt |
|---|---|---|
…/homeid.txt |
Port 8080 | Wohnungs-ID oder DEMODEMO |
…/config.json |
Port 8080 | Withings-OAuth-Tokens (Legacy — siehe §3) |
| Topic | Inhalt |
|---|---|
app/button_press |
Einzelner Tipp |
app/full_button_log |
Periodischer Bulk-Export |
Produktion: mqtts://<pi>:8883. Topics werden zur Bridge nach THD gespiegelt.
Abfrage per Influx Flux (nicht MQTT): Temperatur, Feuchte, Leistung, VOC, CO₂, Bewegung, Türen, Akkus — 24h / 7d / 30d.
Withings-Geräte verbinden sich nicht mit dem Raspberry Pi und nutzen kein lokales MQTT oder Influx. Sie koppeln mit dem Smartphone des Teilnehmers und der Withings-Cloud (Health Mate). Die Studie importiert Gesundheitsmetriken per zentralem Batch-Job am THD — parallel, aber getrennt von der Z-Wave-Edge-Pipeline.
Repos: dh40-withings-mariadb-main, dh40-withings-auth-server-main, dh40_config_provider_poc-main, dh40-app-withings-poc-master (nur POC).
| Komponente | Rolle |
|---|---|
| Withings-Hardware | Waage, Uhr, Schlafanalyse, … |
| Health Mate App | Kopplung und Alltagsnutzung |
| dh40-app „Gesundheitsdaten“ | Verlinkt Health Mate — keine Withings-Charts in dh40-app |
| Wohndaten-Charts | Nur Influx (Z-Wave-Umweltsensoren) |
dh40-withings-auth-server (Flask) oder gleichwertigen OAuth-Flow.refresh_token und access_token.Withings-Tokens/<home_id>/credentials.json.Der Pi-config-provider kann config.json mit OAuth-Feldern ausliefern — für dh40-app-withings-poc. In der Haupt-dh40-app ist fetchWithingsConfig deaktiviert; der Produktionsimport hängt nicht vom Tablet ab.
dh40-withings-mariadb) Läuft auf THD Docker, nicht auf dem Pi:
| Zeitplan | Skript | Aktion |
|---|---|---|
| Täglich 17:00 | withings_to_db.py |
Pro Withings-Tokens/<home_id>/ Withings-API aufrufen und Zeilen anfügen |
| Täglich 00:00 | sensor_data_transfer.py |
Nicht Withings — Z-Wave-Warehouse-Tabellen |
| API-Aufruf | MariaDB-Tabelle | Inhalt |
|---|---|---|
measure_get_meas |
withings_measures |
Gewicht, Puls, Körperzusammensetzung, … |
sleep_get_summary |
withings_sleepsum |
Nächtliche Schlaf-Aggregate |
sleep_get |
withings_sleep |
Zeitreihen: Schlafzustand, HR, RR, Schnarchen |
Schreibziele: dh40_withings (roh) und dh40_warehouse / database_science.
| Z-Wave | Withings | |
|---|---|---|
| Gerät → Hub | Z-Wave-USB → Pi | Handy → Withings-Cloud |
| Edge-Protokoll | MQTT am Pi | Keins am Pi |
| Lokaler Speicher | InfluxDB | Keiner |
| Tablet-Charts | Wohndaten (Flux) | Nur Health Mate |
| Zentral | MQTT-Bridge → dh40 |
API-Pull → withings_* |
| Timing | Nahezu live | Täglicher Cron |
Die Pi-Bridge hat eine eingehende Regel data/<home_id>/withings/# (HiveMQ → lokaler Mosquitto). Das ist nicht der Hauptimport; Produktionsdaten kommen über withings_to_db.py am THD.
Withings-Tabellen in database_science für dh40-streamlit, sensor-data-science, dh40-spark — über THD-VPN-Exporte (https://dh40-vpn.th-deg.de:8443).
Video- und Audio-Notfallerkennung in DH40 sind Forschungs-Nebenprojekte — sie sind nicht im Standard-Pi-Stack (wohnung/docker/), nicht auf der öffentlichen VPS-Demo und im Archiv nicht an dh40-app-Charts oder die HiveMQ-Studien-Bridge angebunden.
Repos: dh40-camera-module-master, dh40-emergency-detection-main, dh40-smart-mirror-2-main (Messe-Emotionsdemo).
| Projekt | Hardware | Eingabe | Ausgabe (heute) | Status |
|---|---|---|---|---|
dh40-camera-module |
Jetson + Webcam | Live-Video | print('Fall detected'); MQTT auskommentiert in main.py |
Forschungsprototyp |
dh40-camera-module / jetson |
Jetson + jetson-inference | Videostream | detections.csv |
SSD-Demo |
dh40-emergency-detection |
Jetson + Mikro + Webcam | Audio + Video | Notebooks, lokale CSV | Laufende Forschung / MA |
dh40-smart-mirror-2 |
Jetson + Webcam | Gesicht | Emotions-Overlay am Spiegel | Messe-Demonstrator |
dh40-camera-module (Video-Sturzerkennung) Typisches Labor-Setup laut Repo-README:
mediapipe/start.sh startet Pose-Schätzung (pose_estimation.py / main.py).FallDetector wertet Bewegung, Winkel und Bounding-Box über ein kurzes Frame-Fenster aus.Fall detected). MQTT-Code ist vorbereitet, aber auskommentiert.Edge-ML auf dem Jetson — kein Video-Streaming zum Tablet oder THD.
dh40-emergency-detection (Audio + Video) | Spur | Ansatz |
|---|---|
| Audio | Mel-Spektrogramm + CNN (ESC-50 + Sturzgeräusche) |
| Video | MediaPipe-Sturzerkennung zum Vergleich |
| Ausblick MA | ESP32-Mikrofon-Netzwerk statt einzelnem Jetson |
Keine Anbindung an Mosquitto, InfluxDB oder MariaDB im Archiv.
| Pi-Produktion | Kamera-Forschung | Ring & Co. | |
|---|---|---|---|
| Gerät | Raspberry Pi | Jetson Nano | Kamera + Cloud |
| Daten | MQTT-Events | Lokale Video-ML | Video-Streams |
| Tablet | dh40-app | Kein Viewer | Vendor-App |
| Studien-DB | MQTT-Bridge | Nicht angebunden | Vendor-Cloud |
| Zweck | Ambient-Sensing-Studie | Sturz-/Notfall-ML-Forschung | Sicherheitsüberwachung |
Prinzipiell könnte ein Custom-Publisher (z. B. fall_detected) an Mosquitto senden — main.py skizziert paho.mqtt. Im Archiv ist das nicht umgesetzt. Video wird nicht in Influx oder MariaDB gespeichert.
Ergebnisse in lokalen Logs, CSV und Notebooks — kein automatischer Pfad zu Spark/Streamlit, außer man exportiert manuell.
Abonniert MQTT (WebSocket) für Live-Kacheln auf dem Grundriss — ohne Influx.
| Mechanismus | Rolle |
|---|---|
| dh40-ca | OpenVPN-Clientzertifikat pro Wohnungs-ID |
| OpenVPN | Pi im THD-Netz (z. B. 10.8.0.1) |
| MQTT-Bridge-Zertifikate | TLS zu HiveMQ |
| dh40_web.crt | Lokales HTTPS auf dem Pi |
Ohne VPN und vertrauenswürdige Zertifikate läuft die Bridge nicht.
| Datenbank | Inhalt |
|---|---|
dh40 |
Rohe MQTT-/Sensordaten |
database_science |
Aufbereitete Features, App-Logs, Withings |
Exporte: https://dh40-vpn.th-deg.de:8443 (THD-VPN). Siehe dh40-spark-main/data/README.md.
| Projekt | Eingabe | Rolle |
|---|---|---|
| dh40-spark | DB-Exporte | PySpark / Jupyter |
| sensor-data-science | CSV | Tages-Features + Schlaf |
| dh40-streamlit | CSV / Withings | Exploration |
Getrennt vom Live-Edge-Stack — arbeitet auf Exporten, nicht auf Live-MQTT.
_demo/) Simuliert den Haushalt-Edge für Demos — keine Verbindung zu HiveMQ/MariaDB.
| Produktion | Demo |
|---|---|
| zwavejs2mqtt | mqtt-simulator |
| config-provider :8080 | Caddy /config/ |
| influxdb-proxy :8087 | Caddy /influx/ |
| mqtts :8883 | wss://<domain>/mqtt |
| 30d Influx-Historie | influx-seed (einmalig) |
| OpenVPN + Bridge | nicht deployed |
Details: demo-production-parity.md, vps-operations_de.md.
| Client | Protokoll | Ziel | Daten |
|---|---|---|---|
| dh40-app | HTTPS | config-provider | Home-ID, Withings-Config (Legacy) |
| dh40-app | Flux/HTTPS | Influx-Proxy | Wohndaten |
| dh40-app | WSS/MQTT | Mosquitto | Button-Log |
| dh40-app | Deep-Link | Health Mate | Withings-UI öffnen |
| laborvis | WSS/MQTT | Mosquitto | Live-Sensoren |
| Telegraf | TCP/MQTT | Mosquitto | Alle Sensor-Topics |
| Mosquitto-Bridge | TLS/MQTT | HiveMQ | Z-Wave + Button-Replikation |
| dh40-withings-mariadb | HTTPS REST | Withings API | Messungen + Schlaf → MariaDB |
| Forscher | HTTPS (VPN) | dh40-vpn.th-deg.de | DB-Exporte (inkl. withings_*) |