Mit der ESP32-CAM ist eine günstige internetfähige Webcam auf dem Markt positioniert. Sie basiert auf dem ESP32 und lässt sich daher einfach mit ESPhome in Homeassistant integrieren. Die kosten für die kleine Kamera belaufen sich bei Aliexpress lediglich auf 5-6€.

Das Vorgehen ist einfach erklärt. Mit dem ESPHome Add-On wird eine Firmware für den ESP32 generiert und diese mittels eines USB-TTL-Adapters auf den Microcontroller geflasht. Das Flashen funktioniert seit kurzem reibungslos direkt über einen Webkit-basierten Browser, also Chrome oder Safari und kann daher auch von unbedarften Users einfach vorgenommen werden. Genaueres dazu kann hier nachgelesen werden.

Esphome: Firmware generieren

Über das ESPHome Add-On muss eine neue Firmware generiert werden. Das Add-On bietet dazu einen Wizard, der den Microcontrollertypen, Ausführungen, Gerätenamen und WLan-Credentials abfragt.

Der Platzhalter YOUR_GENERATED_ID muss durch eine selbstgenerierte ID ersetzt werden. Diese kann direkt auf der ESP Home Webseite generiert und kopiert werden.

Die Config sollte anschließend wie folgt aussehen. Neben der Camera wird noch die eingebaute LED als eigene Entity in Homeassistant bereitgestellt:

esphome:
  name: gockelcam
  platform: ESP32
  board: esp32cam

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_passwd

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Gockelcam Fallback Hotspot"
    password: !secret ap_passwd

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "YOUR_GENERATED_ID"

ota:
  password: !secret ota_passwd

esp32_camera:
  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
  horizontal_mirror: false
  vertical_flip: false
  name: gockelcam

output:
  - platform: gpio
    pin: GPIO4
    id: gpio_4
light:
  - platform: binary
    output: gpio_4
    name: gockelcam light

Zur Verwendung einer secrets.yaml-Datei mit ESPHome kann dieser Post erläuternd zu Rate gezogen werden: ESPhome Bluetooth Low Energy Hub

Das initiale Flashen der Firmware muss einmalig über eine Kabelverbindung erfolgen. Anschließend kann die Konfiguration einfach und unkompliziert Over the air angepasst werden.

Wurden alle Schritte erfolgreich durchlaufen erkennt Homeassistant automatisch die neue ESPHome-Node und bietet an diese einzubinden. Anschließend stehen zwei neue Entities zur Verfügung:

USB-Stromversorgung

Da das ESP32-CAM-Modul keinen eigenen Micro-USB-Anschluss auf der Platine enthält, empfiehlt es sich einen altes USB-Ladegerät am Steckerende abzutrennen, die einzelnen Kabel freizulegen und direkt mit der Platinenanschlüssen zu verlöten oder auf ein USB-Breakout-Board zurückzugreifen, wie bspw. in diesem Post beschrieben.

Gehäuse drucken

Da eine nackte Platine nicht sonderlich ansehnlich erscheint, kann der heimische 3D-Drucker angeworfen werden und bei Thingiverse ein passendes Gehäuse gewählt werden. Die vorhandene Auswahl ist groß.

ESP32-CAM in der Lovelace-UI einbinden

Ich habe meine ESP32-CAM mit einer Picture Glance Card in die UI eingebunden. Diese erlaubt neben dem direkten betrachten des Videostream auch das einfach Ein- und Ausschalten der LED auf der Platine des ESP32. Der Code dafür:

camera_view: auto
type: picture-glance
title: Gockelcam
entities:
  - entity: light.gockelcam_light
camera_image: camera.gockelcam

In der Lovelace UI sieht dies dann folgendermaßen aus. Die LED kann mit einem Klick auf das Lampen-Icon einfach geschaltet werden: