Go to file
Julian Vollmer 30180e5923 Persist AP override across reboots
/tmp/babycam-ap-override → /var/lib/babycam/ap-override
setup.sh legt /var/lib/babycam mit chown pi:pi an

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 15:58:14 +02:00
.claude/worktrees babycam initial 2026-05-18 15:47:02 +02:00
app Persist AP override across reboots 2026-05-18 15:58:14 +02:00
config Add complete babycam setup: install script, Flask app, state machine, configs 2026-05-18 14:38:26 +02:00
scripts Persist AP override across reboots 2026-05-18 15:58:14 +02:00
systemd Add complete babycam setup: install script, Flask app, state machine, configs 2026-05-18 14:38:26 +02:00
README.md Add complete babycam setup: install script, Flask app, state machine, configs 2026-05-18 14:38:26 +02:00
setup.sh Persist AP override across reboots 2026-05-18 15:58:14 +02:00

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:


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:
  • 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:

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