
Das ESP32Cam Modul hat noch ein paar freie Pins, wenn man die integrierte SD-Karte nicht verwendet. Mit zwei einfachen kleinen Servos und einer kleinen Platine wird daraus schnell eine Quadhac, eine Quick And Dirty Home Assistant Camera. Nicht schön, aber funktionabel. Mit ihr kann man über ESPHome die Kamera aus allen Teilen der Welt zu Hause steuern, um das Heim immer schön im Focus zu behalten. Alle Druckdateien und Gerber-Files gibt es hier.
Druckdateien:
Für die Steuerung kann in Home Assistant über ESPHome eine Steuerung erstellt werden. Den Code dafür gibt es unten. Dieser wird in einer *.yaml Datei gespeichert und kann z.B. über das ESPHome Programm in der Kommandozeile erstellt werden. Dazu sind folgende Befehle hilfreich, wenn man sich im Ordner der *.yaml Datei befindet:
Zum Kompilieren der Datei –> esphome compile dateiname.yaml
Zum Hochladen der Datei –> esphome upload dateiname.yaml
Wenn alles geklappt hat, kann man es über die ESPHome Einstellung in Home Assistant einbinden. Dann kann es z.B. so aussehen:

Hier der Code für die ESPHome Umgebung:
esphome: # Name der Kamera an diversen Stellen von cam04 anpassen.
name: cam04
esp32:
board: esp32cam
framework:
type: arduino
api:
password: "*****" # Ein beliebiges PW für die Anmeldung in Home Assistent
ota:
- platform: esphome
password: "*****" # PW für den Zugang zu "Over The Air"
wifi:
ssid: "*****" # Eigener Netzwerkname
password: "*****" # Eigenes PW
fast_connect: false
ap:
ssid: "cam04 Fallback Hotspot"
password: "*****" # PW vom Notfallhotspot, falls die Anmeldung nicht klappt
# manual_ip: # Das Auskommentierte ist nur notwendig, wenn man keine feste IP vom Router bekommt
# static_ip: 192.168.0.222
# gateway: 192.168.1.1
# subnet: 255.255.255.0
reboot_timeout: 60s # statt 15s oder 20s
captive_portal:
esp32_camera:
name: cam04
external_clock:
pin: GPIO0
frequency: 20MHz
i2c_pins:
sda: GPIO26
scl: GPIO27
data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
vsync_pin: GPIO25
href_pin: GPIO23
pixel_clock_pin: GPIO22
power_down_pin: GPIO32
resolution: 640x480
# vertical_flip: False
# horizontal_mirror: True
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot
output: # Hier werden die Pins für die Servos belegt.
- platform: ledc
id: servo_h
pin: GPIO14
frequency: 50 Hz
- platform: ledc
id: servo_v
pin: GPIO13
frequency: 50 Hz
- platform: gpio
pin: GPIO4
id: led_flash
servo:
- id: horizontal_servo
output: servo_h
min_level: 2.5%
max_level: 12.5%
- id: vertical_servo
output: servo_v
min_level: 2.5%
max_level: 12.5%
# Option 1: Kontrolle über Home Assistant
number:
- platform: template
name: "Servo Horizontal cam04"
min_value: 0
max_value: 180
step: 1
set_action:
then:
- servo.write:
id: horizontal_servo
level: !lambda return (x - 90) / 90;
- platform: template
name: "Servo Vertikal cam04"
min_value: 0
max_value: 180
step: 1
set_action:
then:
- servo.write:
id: vertical_servo
level: !lambda return (x - 90) / 90;
light:
- platform: binary
name: "Kamera-LED cam04"
output: led_flash
logger:
level: DEBUG