Files
2026-05-02 21:04:20 +02:00
..
2026-05-02 21:04:20 +02:00
2026-05-02 21:04:20 +02:00
2026-05-02 20:57:18 +02:00
2026-05-02 20:54:53 +02:00
2026-05-02 20:54:53 +02:00
2026-04-27 12:25:02 +02:00
2026-05-02 20:54:53 +02:00
2026-05-02 20:57:18 +02:00
2026-05-02 20:54:53 +02:00
2026-05-02 20:57:18 +02:00

Smart Mirror · Arduino USB Monitor v3

Projektstruktur

raspi/
├── settings.json              ← zentrale Konfiguration
├── USBRead.py                 ← serielle Leseschicht + Parser
├── Notification.py            ← SMTP- + WhatsApp-Alerting
├── Dashboard.py               ← Flask App Factory
├── gunicorn.conf.py           ← Gunicorn-Konfiguration
├── requirements.txt
├── templates/
│   ├── base.html              ← Jinja2 Basis-Layout
│   └── dashboard.html         ← Smart-Mirror-Dashboard
└── static/
    ├── css/
    │   └── mirror.css         ← Smart-Mirror-Stylesheet
    └── js/
        └── dashboard.js       ← Polling, Chart, Uhr, Sensor-Tiles

Installation

pip install -r requirements.txt

# Nur bei whatsapp.provider = "twilio":
pip install twilio

Starten

# Gunicorn (Produktion, Port 80 → sudo nötig)
sudo gunicorn -c gunicorn.conf.py "Dashboard:create_app()"

# Ohne Root (Port in settings.json auf z.B. 8080 setzen)
gunicorn -c gunicorn.conf.py "Dashboard:create_app()"

# Flask direkt (Entwicklung)
python Dashboard.py

settings.json — Referenz

usb

Schlüssel Beschreibung
port Gerätepfad, z.B. /dev/ttyACM0
baud_rate Baudrate
reconnect_delay_s Sekunden bis Reconnect-Versuch
buffer_size Maximale Einträge im Ring-Buffer

dashboard

Schlüssel Beschreibung
host Bind-Adresse (0.0.0.0 = alle Interfaces)
port HTTP-Port
poll_interval_ms Browser-Polling-Intervall in ms
title Titel im Header und Browser-Tab

smtp

Schlüssel Beschreibung
enabled true / false — Kanal an/aus
host SMTP-Hostname
port SMTP-Port (587 STARTTLS, 465 SSL)
use_tls true → STARTTLS, false → direktes SSL
username Login
password Passwort
from_address Absender
to_addresses Empfänger-Array
cooldown_s Mindestabstand zwischen Alerts (pro Sensor)

whatsapp

Schlüssel Beschreibung
enabled true / false
provider "twilio" oder "callmebot"
cooldown_s Mindestabstand WhatsApp-Alerts (pro Sensor)

Twilio (whatsapp.twilio):

CallMeBot (whatsapp.callmebot) — kostenlos, kein Account:

sensors

Jeder Eintrag im Array beschreibt einen Messkanal:

Schlüssel Beschreibung
name Anzeigename
field_index Index im values-Array (0-basiert)
unit Einheit (Anzeige), z.B. "°C"
threshold_high Oberer Grenzwert (null = kein)
threshold_low Unterer Grenzwert (null = kein)
notify_on_high E-Mail + WA senden bei Überschreitung
notify_on_low E-Mail + WA senden bei Unterschreitung

Arduino-Ausgabeformate (automatisch erkannt)

Format Beispiel
Numerisch 23.5 67.1 4.92
Key=Value temp=23.5,hum=67.1,volt=4.92
JSON {"temp":23.5,"hum":67.1}

Smart Mirror Betrieb

Für den Einsatz als Smart Mirror empfiehlt sich:

  • Chromium im Kiosk-Modus: chromium-browser --kiosk http://localhost
  • Bildschirm-Timeout deaktivieren: xset s off && xset -dpms
  • Autostart via /etc/rc.local oder systemd (siehe README v2)