babycam/README.md

231 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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