Hilfe bei ESP32-CAM-MB Einbindung in Home Assistant

Hallo zusammen,

ich habe mir vor einigen Monaten ein paar ESP32-CAM-MB Development Boards bei AliExpress gekauft.

Nun versuche ich, diese zu installieren bzw. in Home Assistant einzubinden.

Wenn ich auf https://web.esphome.io/ gehe und mich dort mit dem Board verbinde, bekomme ich die Option, entweder eine .bin-Datei zu installieren oder das Gerät für die Ersteinrichtung vorzubereiten. Ich habe jedoch keine .bin-Datei, und die Ersteinrichtung läuft zwar in etwa zwei Minuten durch. Nachdem man die Erfolgsmeldung wegklickt, erscheint jedoch eine Fehlermeldung, und anschließend lande ich wieder auf derselben Seite. Dort habe ich wieder nur die Wahl, eine .bin-Datei zu installieren oder die Ersteinrichtung erneut zu starten.

Ich habe bereits eine .yml-Datei erstellt, in der u. a. die Pins und WLAN-Zugangsdaten hinterlegt sind, weiß aber nicht, wie ich diese nun verwenden soll.

Ein Tutorial, das ich gefunden habe, geht darauf leider auch nicht ein: Building an ESP32 camera with ESPHome :: TheOrangeOne . Dort steht lediglich, dass man die .yml-Datei auf web.esphome.io hochladen könne. Ich wüsste allerdings nicht, wie das funktionieren soll. Von Ersteinrichtung oder .bin-Dateien ist in dem Tutorial leider gar keine Rede.

Kann mir hier eventuell jemand weiterhelfen? Das ist mein erstes eigenes ESP-Projekt.

Vielen Dank!

EDIT1:

Ich habe herausgefunden, dass man im Home Assistant ESP Builder zunächst das Gerät anlegen muss. Dort erhält man dann den Encryption Key und am Ende eine .bin-Datei zum Herunterladen. Wenn ich diese anschließend über web.esphome.io installiere, verbindet sich der ESP mit meinem WLAN.
Danach kann ich das Gerät editieren. Dort wird die YAML-Struktur angezeigt. In dieser habe ich meine esp32_camera- und switch-Werte eingetragen und die bearbeitete YAML-Datei dann per WLAN installiert.
Nach einem Reboot wird das Gerät automatisch in Home Assistant entdeckt. Sobald ich es hinzugefügt habe, wird das Bild in Home Assistant angezeigt.
Nun frage ich mich nur noch: Ist meine Hardware defekt, ist das Bild so, weil ich eventuell falsche Pins angegeben habe, oder sitzt vielleicht das Flexkabel nicht richtig? Immerhin funktioniert der Flash-Button zum Einschalten des LED-Lichts auch schon.

Poste mal deinen YAML Code … bitte benutze </> um den Code zu posten.
Kann ich ja mal vergleichen, wobei ich habe mehrere CAM Module und wer nun glaubt die würden identisch konfiguriert (in verschiedenen Jahren von verschiedenen Anbietern gekauft) der glaubt auch an den Weihnachtsmann.

Aber guck selbst ob du da das Board entdeckst das du wirklich vor dir liegen hast

Hab eben mal meine zweite Cam eingerichtet – dort ist das Bild in Ordnung. Scheint also wirklich ein Hardware-Defekt der anderen Cam zu sein :confused:

Das ist das YAML, das ich verwendet habe:

esphome:
  name: <REDACTED>
  friendly_name: <REDACTED>

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "<REDACTED>"

ota:
  - platform: esphome
    password: "<REDACTED>"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "<REDACTED> Fallback Hotspot"
    password: "<REDACTED>"

captive_portal:
    
esp32_camera:
  name: "<REDACTED>"
  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
  max_framerate: 15 fps
  idle_framerate: 0.05 fps
  resolution: 1024x768
  jpeg_quality: 35

switch:
  - platform: gpio
    name: "<REDACTED> flash"
    pin: 4

Aber ja, das ist ja genau das Problem: Wie hätte ich das Pin-Layout und Co. zuverlässig herausfinden können bzw. wie kann ich herausfinden, welches Board es exakt ist, wenn diese Konfiguration nicht funktioniert hätte?
Bisher habe ich nur gelesen: Wenn man es nicht weiß → “Try and Error”. Da muss es doch einen besseren Weg geben, oder?

Ja das ist beim Ali immer so eine Sache. Da kann man Dinge kaufen die irgendwie beschrieben sind nur nicht präzise genug, und dann muss man halt probieren.

du hast aber noch ein paar Dinge vergessen in deinem Code :slight_smile:

webserver:
  port: 80

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

den ersten um dir z.B. mittels

sensor:
  - platform: wifi_signal
    update_interval: 60s
    name: device/rssi
    unit_of_measurement: 'dBm'
    accuracy_decimals: 0
    filters:
      - sliding_window_moving_average:
          window_size: 16
          send_every: 8

mal die Verbindungsqualität anzeigen zu lassen oder auch die MAC und IP

text_sensor:
  - platform: wifi_info
    ip_address:
      name: device/ip
    mac_address:
      name: device/mac

braucht man nicht aber schaden auch nicht, und n Bild odern Stream im Webbrowser ist auch nicht blöd.

1 „Gefällt mir“

Hey, danke für den zusätzlichen Code! Ich habe ihn bei mir eingebaut – bis auf den Abschnitt esp_camera_web_server, den will er nicht kompilieren, weil er das nicht kennt. Außerdem muss webserver web_server heißen, dann hat das auch funktioniert ^^
Sensor und Text_Sensor scheinen ebenfalls zu funktionieren. :slight_smile:

EDIT1: Hmm, ich hatte die Cam eben für eine Stunde vom PC getrennt. Jetzt wollte ich mit dem neuen Code updaten, aber das Ding baut keine Verbindung mehr auf. Ich hatte sie doch schon in Home Assistant drin? o.o

EDIT2: nvm nach einem USB Re-plug ging es dann ^^”

EDIT3: Okay dann fehlt jetzt eigentlich nur noch dieses hier:

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

was ich nicht installiert bekomme wegen Kompilierfehler weil er das wohl so geschrieben zumindest nicht kennt, und ich weiß besonders bei dem eigentlich auch nicht was es es macht bzw wofür das ist ^^” Den Rest verstehe ich aber und finde es auch sinnvoll vor allem da es auch nicht schadet wie @justone schon sagte :slight_smile:

EDIT4: Ah ich hab die Lösung zu den Webserver gefunden, richtig wäre es wohl so, bemerke die 32 die vorher fehlte:

esp32_camera_web_server:
  - port: 8080
    mode: STREAM
  - port: 8081
    mode: SNAPSHOT

Quelle: ESP32Cam Stream auf Webserver v3 anzeigen

Aber das scheint noch nicht alles gewesen zu sein, denn das Compiliert zwar, aber wirft beim Boot des Geräts im Log Fehler, danach startet das Gerät aber trotzdem was man am erstem Bild Paket sieht.

[19:21:57][C][esp32_camera_web_server:088]: ESP32 Camera Web Server:
[19:21:57][C][esp32_camera_web_server:088]:   Port: 8080
[19:21:57][C][esp32_camera_web_server:093]:   Mode: stream
[19:21:57][C][esp32_camera_web_server:088]: ESP32 Camera Web Server:
[19:21:57][C][esp32_camera_web_server:088]:   Port: 8081
[19:21:57][C][esp32_camera_web_server:095]:   Mode: snapshot
[19:21:57][E][esp32_camera_web_server:099]:   Setup Failed
[19:21:57][E][component:145]:   esp32_camera_web_server is marked FAILED: unspecified
[19:22:09][D][esp32_camera:207]: Got Image: len=16493

EDIT5: Allerdings scheint der 8080 Port dennoch zu Funktionieren, dort bekomme ich dann im Browser das Bild, was auch meine vorherige Frage erklärt, was dieser Code macht :slight_smile:

Allerdings funktioniert der Port 8081 nicht im Browser, und vermutlich kommt daher auch das vorher erwähnte Fehler Log?

ah ja wenn man nicht copy&pasted sondern es flugs eintippt.
Stimmt es muss web_server heissen .. verbuch es als Lernerfolg auch wenn es unabsichtlich passiert ist. :slight_smile:

warum bei dir der 8081 nicht geht … sonderbar.
Vielleicht ist der Port bei dir im Netz blockiert?
Also mein Chrome zeigt dann das letzte Standbild bis ich im Browser wieder auf Refresh drücke.

Und ja die 32 hatte ich auch unterschlagen … das nächste Mal antworte ich lieber ‘vormittags’ wenn ich noch klar denken kann :slight_smile: