ESP32 S3 WROOM CAM über ESP Home funktioniert nicht

Hallo,
ich versuche einen Freenove ESP32-S3-WROOM mit Kamera im ESP Home zum Laufen zu bekommen. Ich wurde durch dieses Video inspiriert: https://youtu.be/OUPwE4_dpwQ?si=LQ-nQaanQ_GdPhVc

Doch leider funktioniert das nicht alles so ganz wie gewollt, sonst würde ich hier auch nicht schreiben :wink:.
Das Board lässt sich im ESP Home einbinden, nur leider gibt es kein Bild.

Das Video ist schon was älter und verwendet keinen Freenove S3-WROOM, daher musste ich die GPIO entsprechend ändern. Vielleicht liegt auch daran mein Fehler. Der Code sieht im Original so aus:

esp32_camera:
  name: esp32_cam
  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

output:
  - platform: gpio
    pin: GPIO4
    id: gpio_4

Als Grundlage habe ich das PinOut vom Hersteller genommen:

ESP Home erkennt mein Board als “esp32-s3-devkitc-1”. Das scheint auch ok zu sein, den in der Arduino IDE ist es die gleiche Einstellung. Dementsprechend habe ich folgenden Code:

esphome:
  name: esp32-cam
  friendly_name: ESP32-Cam

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

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

ota:
  - platform: esphome
    password: "nochvielgeheimer"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Cam Fallback Hotspot"
    password: "sowasvongeheim"

# Enable Web server.
web_server:
  port: 80

captive_portal:

esp32_camera:
  name: esp32_cam
  external_clock:
    pin: GPIO0
    frequency: 20MHz
  i2c_pins:
    sda: GPIO40
    scl: GPIO39
  data_pins: [GPIO11, GPIO9, GPIO8, GPIO10, GPIO12, GPIO18, GPIO17, GPIO16]
  vsync_pin: GPIO6
  href_pin: GPIO7
  pixel_clock_pin: GPIO13
  #power_down_pin: GPIO32

output:
  - platform: gpio
    pin: GPIO4
    id: gpio_4

binary_sensor:
  - platform: status
    name: "ESP32Cam status"
    
sensor:
  - platform: wifi_signal
    name: "ESP32Cam WiFi Signal"
    update_interval: 60s
   

Den “power_down_pin” konnte ich in der Dokumentation vom Board nicht finden. In der Doku vom ESP Home steht, das dieser nur optional ist und daher habe ich ihn ausgeblendet.

Leider wird weder das Livebild noch das Standbild angezeigt:
image

Da aber die Informationen wie Status und WiFi Signal angezeigt werden. Kann es nicht ganz sooo falsch sein. Ich denke das wahrscheinlich die GPIO von mir falsch gewählt sind.
Vielleicht kann da mal jemand drauf schauen und mir einen Tipp geben?

Gucke mal hier:

Vielen Dank, das hat mir erstmal ein “Stückchen” weitergeholfen. Ich hatte mich bei den external_clock und den i2c pins vertan. Man muss das PinOut auch richtig lesen können :face_with_monocle:

Doch leider habe ich immer noch kein Bild. Es erscheint nur eine weiße Fläche und irgendwann:
image

Was ich jetzt noch festgestellt habe ist, dass das Board irgendwann die Verbindung verliert:
image

Mir ist gerade noch nicht klar warum das passiert. Nach einem Reboot wird die Verbindung hergestellt. Erst nach ein paar Minuten wird diese verloren.

Nachtrag:
Ich habe jetzt mal aus GIThub das “ESP32CamTimeLapse” aufgespielt und das hat im gesamten Testzeitraum (> 5h) einwandfrei funktioniert. Keine Abbrüche.

Am Board kann es also nicht liegen. Jetzt muss ich das “nur” noch im HA ans Laufen bekommen.

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Nachtrag Nov. 2025:
Ich bekomme es immer noch nicht hin. Mein YAML-Code sieht wie folgt aus:

esphome:
  name: esp32s3-cam
  friendly_name: ESP32-CAM
  min_version: 2024.12.0
  # arduino.memory.type was key to getting PSRAM working for this board
  platformio_options:
    board_build.arduino.memory_type: qio_opi

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

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

ota:
  - platform: esphome
    password: "nochgeheimer"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32S3-Cam Fallback Hotspot"
    password: "amgeheimsten"

captive_portal:

# Enable Web server.
web_server:
  port: 80

# Uptime
time:
  - platform: homeassistant
    id: homeassistant_time

# ESPHome version
text_sensor:
  - platform: version
    name: ESPHome Version

# WiFi
sensor:
  - platform: wifi_signal
    name: "ESP32Cam WiFi Signal"
    update_interval: 60s

# Status
binary_sensor:
  - platform: status
    name: "ESP32Cam status"

esp32_camera:
  name: esp32_cam
  external_clock:
    pin: GPIO15
    frequency: 20MHz
  i2c_pins:
    sda: GPIO4
    scl: GPIO5
  data_pins: [GPIO11, GPIO9, GPIO8, GPIO10, GPIO12, GPIO18, GPIO17, GPIO16]
  vsync_pin: GPIO6
  href_pin: GPIO7
  pixel_clock_pin: GPIO13
  #power_down_pin: GPIO32

Der Fehler wird mir direkt am Anfang des eigentlichen Codes angezeigt:

Leider bringt mich der angezeigte Link auch nicht viel weiter. Hat jemand noch eine Idee für mich?

Nicht in Verbindung mit ESPHome, :slightly_smiling_face: aber meine Freenove-WROVER-Cam hat mit ESPHome auch immer irgendwie “herumgezickt” und ich habe damals sowohl Arduino, ESPHome und Tasmota auf dem Teil getestet und mit Tasmota lief sie dann ziemlich problemlos.

Aber das ist natürlich schon wieder sehr lange her und wie das jetzt mit einer aktuellen ESPHome Version aussieht kann ich nicht beurteilen. Da mir inzwischen aber eh die teils mehrfach pro Monat kommenden ESPHome Updates immer mehr auf den Keks gehen, würde ich bei der Cam auch eh nur noch im Notfall ESPHome nutzen. :laughing:

D.h. wenn Du wieder, oder ggf. immer noch, Probleme mit ESPHome haben solltest, wäre Arduino oder Tasmota ggf. eine mögliche Alternative.

VG Jim

Steht ja eigentlich da, Du musst die ESPHome Componente PSRAM noch einfügen:

[...]
psram:
  mode: octal

esp32_camera:
  name: esp32_cam
[...]

Ich spiele auch gerade mit dem Teil rum, nachdem es leider nicht mit AI on the edge kompatibel ist.

@Jim_OS
Ja, sowas hatte ich mir schon gedacht. Ich dachte es würde an mir liegen. :roll_eyes:
Dann mache ich es über Arduino. Danke für deine Infos.

Du kannst ja erst mal auch das noch probieren was @Jorge gerade gepostet hat. Wie gesagt weiß ich nicht wie das Teil mit einer aktuellen ESPHome Version funktioniert, aber damals hatte ich damit halt Probleme.

VG Jim

@Jim_OS @Jorge
Ja, das hatte ich schon probiert (und jetzt gerade auch nochmal), aber er bricht dann immer beim Aufspielen (egal ob Wireless oder am Computer) ab. Ich denke es ist wirklich so wie Jim_OS schon meinte, das es damit unter HA nur Probleme gibt.

Also mit folgendem Code habe ich es eben hinbekommen:

esphome:
  name: esp-cam-test
  friendly_name: ESP-Cam Test

esp32:
  variant: esp32s3
  framework:
    type: arduino

# Enable logging
logger:

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

ota:
  - platform: esphome
    password: "SuperSecureOtaPassword"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-Cam-Test Fallback Hotspot"
    password: "SuperSecurePassword"

captive_portal:

psram:
  mode: octal

i2c:
  - id: camera_i2c
    sda: GPIO4
    scl: GPIO5

esp32_camera:
  id: cam
  external_clock:
    pin: GPIO15
    frequency: 20MHz
  i2c_id: camera_i2c
  data_pins: [GPIO11, GPIO9, GPIO8, GPIO10, GPIO12, GPIO18, GPIO17, GPIO16]
  vsync_pin: GPIO06
  href_pin: GPIO07
  pixel_clock_pin: GPIO13
  frame_buffer_location: PSRAM


esp32_camera_web_server:
  - port: 8080
    mode: stream
  - port: 8081
    mode: snapshot

Unter der http://IP-ADDRESS:8080 kann ich den Livestream abrufen.

Vielleicht noch als Anmerkung weil ich das oben nicht erwähnt hatte. Bei mir damals war weniger das Problem das der *.yaml-Code für ESPHome ggf. nicht funktioniert hat, sondern das der Live-Stream eher “grottig” war und es dabei immer zu Aussetzern kam. Das war damals mit der Tasmota Firmware dann nicht mehr der Fall.

VG Jim