|
|
||
|---|---|---|
| .claude/worktrees | ||
| app | ||
| config | ||
| scripts | ||
| systemd | ||
| README.md | ||
| setup.sh | ||
README.md
Raspberry Pi Babycam
Hardware: Raspberry Pi 3 + Camera Module 3 NoIR Wide + USB WLAN Stick
OS: Raspberry Pi OS Trixie Lite (arm64)
Schnellstart
git clone <repo-url> babycam
cd babycam
sudo bash setup.sh
Nach dem Neustart:
- Webinterface: http://babycam.local
- SSH:
ssh pi@babycam.local - AP-SSID:
BabyCam/ Passwort:babycam123 - AP-Webinterface: http://192.168.50.1
Projektstruktur
babycam/
├── setup.sh # Komplettes Install- und Konfigurationsscript
├── app/
│ ├── main.py # Flask Webinterface (Stream, WLAN, Status)
│ └── templates/
│ └── index.html # Web-UI
├── scripts/
│ └── network_state.py # State Machine (Modus A/B/C)
├── config/
│ ├── hostapd.conf # Access Point Konfiguration
│ └── dnsmasq.conf # DHCP Server Konfiguration
└── systemd/
├── babycam-web.service # Flask als Systemdienst
└── babycam-network.service # State Machine als Systemdienst
Gesamtplan (Pi 3 + Camera Module 3 NoIR)
1. Zielarchitektur
Der Raspberry Pi arbeitet in drei Betriebsmodi.
Modus A – Heimnetz (Normalbetrieb)
Handy und Raspberry Pi befinden sich im gleichen WLAN:
- Raspberry Pi verbindet sich über wlan0 mit dem Heimrouter
- Zugriff über:
- http://babycam.local
- oder IP-Adresse im Heimnetz
- Kein Access Point aktiv
- Internet für alle Geräte verfügbar
Modus B – Kein WLAN verfügbar (Fallback Access Point)
Der Raspberry Pi erstellt ein eigenes WLAN:
- SSID: BabyCam
- IP: 192.168.50.1
- Gerät fungiert als Access Point über wlan1
Funktion:
- Handy verbindet sich direkt mit dem Pi
- Webinterface ist lokal erreichbar
- Kamera-Stream läuft unabhängig vom Internet
Modus C – Fremdes WLAN konfigurieren (Setup-Modus)
Über den Access Point:
- Verbindung zum WLAN „BabyCam“
- Zugriff auf Webinterface unter 192.168.50.1
- Anzeige verfügbarer WLANs (Scan)
- Eingabe von Passwort
- Verbindung wird gespeichert und aufgebaut
2. Hardware
- Raspberry Pi 3
- Raspberry Pi Camera Module 3 NoIR Wide
- USB WLAN Stick mit AP-Unterstützung
- optional IR-LEDs für Nachtbetrieb
3. Betriebssystem
Raspberry Pi OS Lite
https://www.raspberrypi.com/software/operating-systems/
Begründung:
- minimaler Ressourcenverbrauch
- stabil für Dauerbetrieb
- ideal für Headless-Systeme
4. Netzwerk-Stack
Verwendete Komponenten:
- NetworkManager → WLAN Verwaltung
- hostapd → Access Point (BabyCam)
- dnsmasq → DHCP Server
- iptables → optional NAT
5. Interface-Rollen
- wlan0 = Client (Heim- oder Fremd-WLAN)
- wlan1 = Access Point (BabyCam)
6. Betriebslogik (State Machine)
Beim Start:
- Prüfen ob bekanntes WLAN verfügbar ist
- Wenn ja → Verbindung über wlan0
- Wenn nein → Start Access Point über wlan1
Optional:
- Access Point kann dauerhaft aktiv bleiben
7. Access Point Konfiguration
- SSID: BabyCam
- Netzwerk: 192.168.50.0/24
- Gateway: 192.168.50.1
8. DHCP (dnsmasq)
-
IP-Bereich: 192.168.50.20 – 192.168.50.200
-
DNS optional:
- 1.1.1.1
- 8.8.8.8
9. Internet Sharing (optional)
Wenn der Pi im Heimnetz ist:
- wlan0 = Internet
- wlan1 = Hotspot
Erfordert:
- IP-Forwarding aktiv
- NAT via iptables
Ergebnis:
- Geräte im Hotspot erhalten Internet über den Pi
10. Kamera-Stream
Empfohlene Konfiguration:
rpicam-vid (ehemals libcamera-vid):
- Auflösung: 1280x720
- Framerate: 20 fps
- Codec: MJPEG
- Ausgabe: stdout → Flask MJPEG-Stream
11. Webinterface
Zugriff:
- http://192.168.50.1 (AP Mode)
- http://babycam.local (Heimnetz)
Funktionen:
Kamera
- Live-Stream
WLAN Management
- WLAN Scan
- Netzwerke anzeigen
- Passwort eingeben
- Verbindung über nmcli herstellen
Status
- Aktives WLAN
- IP-Adresse
- AP Status
12. Systemdienste
babycam-web.service→ Flask Webserver (Port 80, autostart)babycam-network.service→ State Machine (prüft alle 30s den WLAN-Status)
13. Gesamtkonzept
Das System ist eine IoT-ähnliche Architektur:
- Dual-Mode Netzwerk (STA + AP)
- automatische Zustandslogik
- Webbasierte Konfiguration
- permanenter Zugriff auf Kamera und Setup