e1400e81e85a53aed46e3a8339c747ac6adbe1b9
Smart Mirror · Arduino USB Monitor v3
Projektstruktur
usb_monitor_v3/
├── 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):
- Account SID + Auth Token aus der Twilio Console
from_number:"whatsapp:+14155238886"(Sandbox) oder eigene Nummerto_numbers: Array mit"whatsapp:+49..."- Einmalige Sandbox-Aktivierung: https://www.twilio.com/console/sms/whatsapp/sandbox
CallMeBot (whatsapp.callmebot) — kostenlos, kein Account:
- API-Key einmalig aktivieren: https://www.callmebot.com/blog/free-api-whatsapp-messages/
to_numbers: Array mit Rufnummern im Format"+49151..."
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.localoder systemd (siehe README v2)
Description
Eine Sammlung an Python und Arduino-Skripten zur Umsetzung eines "SmartMirrors", der im Rahmen eines Berufsschulprojektes am TGBBZ Dillingen/Saar entstanden ist
Readme
212 KiB
Releases
3
SmartMirror Setup Rel. 3
Latest
Languages
Python
36.2%
CSS
27.1%
JavaScript
20.3%
HTML
12.6%
C++
3.8%