# Raspberry Pi Babycam **Hardware:** Raspberry Pi 3 + Camera Module 3 NoIR Wide + USB WLAN Stick **OS:** Raspberry Pi OS Trixie Lite (arm64) --- ## Schnellstart ```bash git clone 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: 1. Prüfen ob bekanntes WLAN verfügbar ist 2. Wenn ja → Verbindung über wlan0 3. 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