ESP Home Wifi Probleme, vermutlich Fritz Box

Hallo zusammen,
ich habe mir als erstes ESPHome Projekt einen Bodenfeuchtigkeitssensor + einen BMP280 als Temperaturfühler an einen ESP32 gebastelt und diesen über USB über den HA geflasht.
Der Code funktioniert auch solange der ESP32 über USB mit dem HA verbunden ist.
Wenn ich diese Verbindung trenne ist der ESP zwar im Netzwerk, ich kann ihn über cmd anpingen und bekomme eine perfekte Verbindung und ESPHome zeigt ihn selbst meist als Online an, jedoch werden keine Werte geliefert.
grafik

Wenn ich die Software neu über Wlan aufspiele / update scheint alles zu funktionieren bis auf den Punkt an welchem er den Logoutput über die API Startet:

Compiling .pioenvs/esphome-moist1/FrameworkArduino/wiring_pulse.c.o
Compiling .pioenvs/esphome-moist1/FrameworkArduino/wiring_shift.c.o
Archiving .pioenvs/esphome-moist1/libFrameworkArduino.a
Linking .pioenvs/esphome-moist1/firmware.elf
RAM:   [=         ]  12.5% (used 40992 bytes from 327680 bytes)
Flash: [=====     ]  51.5% (used 944921 bytes from 1835008 bytes)
Building .pioenvs/esphome-moist1/firmware.bin
Creating esp32 image...
Successfully created esp32 image.
esp32_create_combined_bin([".pioenvs/esphome-moist1/firmware.bin"], [".pioenvs/esphome-moist1/firmware.elf"])
Wrote 0xf81a0 bytes to file /data/build/esphome-moist1/.pioenvs/esphome-moist1/firmware-factory.bin, ready to flash to offset 0x0
======================== [SUCCESS] Took 150.57 seconds ========================
INFO Successfully compiled program.
INFO Resolving IP address of esphome-moist1.local
INFO  -> 192.168.188.43
INFO Uploading /data/build/esphome-moist1/.pioenvs/esphome-moist1/firmware.bin (950688 bytes)
Uploading: [============================================================] 100% Done...


INFO Waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from esphome-moist1.local using esphome API
WARNING Can't connect to ESPHome API for esphome-moist1.local: Error connecting to ('192.168.188.43', 6053): [Errno 113] Connect call failed ('192.168.188.43', 6053) (SocketAPIError)
INFO Trying to connect to esphome-moist1.local in the background

In der Fritz Box ist er online, mit Internetzugang (auch wenn der ja eigl nicht notwendig sein sollte): selbst. Portfreigabe erlaubt
2,4 GHz, 57 / 68 Mbit/s

Bin leider weder in Hardware noch Netzwerkdingen ein Experte daher diese vermutliche Anfängerfrage… Ich konnte leider online nichts finden und probiere schon seit drei Tagen rum. Ich hoffe mal es sind alle Infos zum Setup dabei die notwendig. Freue mich auf euer Feedback!
Anbei noch der Code, nur für den Fall:

esphome:
  name: esphome-moist1
  friendly_name: ESPHome-Moist1

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "XXXX="

ota:
  password: "XXX"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Moist1 Fallback Hotspot"
    password: "3nbgokqqN8LX"

captive_portal:

i2c:
  - id: "bmp280_i2c"
    sda: GPIO12
    scl: GPIO14
    scan: true
 
 
sensor:
  - platform: bmp280
    i2c_id: bmp280_i2c
    temperature:
      name: "BME280 Temperature"
      oversampling: 16x
    pressure:
      name: "BME280 Pressure"
    address: 0x76
    update_interval: 8s

  - platform: adc
    pin: GPIO36
    name: "Soil Moisture1"
    update_interval: 5s
    force_update: true
    unit_of_measurement: "%"
    attenuation: 11db
    filters:
    - median:
        window_size: 7
        send_every: 4
        send_first_at: 1
    - calibrate_linear:
        - 0.89 -> 100.00
        - 2.2 -> 0.00
    - lambda: if (x < 1) return 0; else return (x);
    accuracy_decimals: 0

  - platform: adc
    pin: GPIO39
    name: "Soil Moisture2"
    update_interval: 5s
    force_update: true
    unit_of_measurement: "%"
    attenuation: 11db
    filters:
    - median:
        window_size: 7
        send_every: 4
        send_first_at: 1
    - calibrate_linear:
        - 0.94 -> 100.00
        - 2.24 -> 0.00
    - lambda: if (x < 1) return 0; else return (x);
    accuracy_decimals: 0

  - platform: adc
    pin: GPIO34
    name: "Soil Moisture3"
    update_interval: 5s
    force_update: true
    unit_of_measurement: "%"
    attenuation: 11db
    filters:
    - median:
        window_size: 7
        send_every: 4
        send_first_at: 1
    - calibrate_linear:
        - 0.9 -> 100.00
        - 2.23 -> 0.00
    - lambda: if (x < 1) return 0; else return (x);
    accuracy_decimals: 0

  - platform: adc
    pin: GPIO35
    name: "Soil Moisture4"
    update_interval: 5s
    force_update: true
    unit_of_measurement: "%"
    attenuation: 11db
    filters:
    - median:
        window_size: 7
        send_every: 4
        send_first_at: 1
    - calibrate_linear:
        - 0.91 -> 100.00
        - 2.2 -> 0.00
    - lambda: if (x < 1) return 0; else return (x);
    accuracy_decimals: 0

Hardware:

Home Assistant auf einem Rasperry 4

Hmmm

füg mal

web_server:
  port: 80

zum code und flashe nochmal. Dann kannst du mit nem webbrowser schon mal testen ob der ESP die sensordaten sieht, also ip in den browser tippen und schauen was er da so sagt

und die Zeile

logger:

mal durch

logger:
# level: none
# level: error
# level: warn
# level: info
  level: debug
# level: verbose
# level: very_verbose

ersetzen … damit kannste dann spielen durch entfernen/setzen vom # wieviel Info er dir anzeigen soll und vielleicht bekommst du dann mehr Infos wo denn dann das Problem liegt, je nach loglevel.

1 „Gefällt mir“

Hi,

vielen Dank dir für die Antwort.
tatsächlich hat auch keine Kommunikation mehr Stattgefunden nachdem er vom HA getrennt wurde. (Also weder Webserver noch HA, er ist im HA online und in der Fritzbox auch das wars) Ich habe allerdings nach einigem durchstöbern (ganz oben) den entscheidenden Hinweis gefunden:
WARNING GPIO12 is a Strapping PIN and should be avoided.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See Frequently Asked Questions — ESPHome

Ich versteh zwar nicht wirklich weshalb die ESPs so gebaut wurden und absolut nicht wie das mit dem i2c funktioniert, nachdem ich dieses jedoch auf

i2c:
  - id: "bmp280_i2c"
    sda: GPIO21
    scl: GPIO22
    scan: true

umgebaut hatte finde ich ihn nach kurzer bootzeit sowohl im HA als auch direk auf dem Webserver

Hat mir ggf. jemand eine leicht verständliche Lektüre sodass ich nachvollziehen kann welche Ports für das i2c geeignet sind? Laut dem Pinout sind das ja nur 21 und 22, bei mir hatte es ja aber auch mit den anderen funktioniert (bis auf den Boot).

Danke auch für die Impressionen zum Webserver und den Logs!

Guckst du z.B. hier https://lastminuteengineers.com/esp32-pinout-reference/

1 „Gefällt mir“

Gut das es nu fkt!

Aber nach meinem Verständnis sollten die Strapping Pins eigentlich nicht den von dir geschilderten Effekt produzieren. Die haben ja hauptsächlich effekt auf den bootprozess. Aber vielleicht hatte der gpio12 dann immer boot angehalten?

Anderer pin ist also bestimmt besser dafür.

Für i2c solltest du aber alle anderen pins verwenden können. 21 und so sind glaube nur die default pins

Ja genau, funktioniert nahezu mit allen, mich hatte nur die Kennzeichnung im Pinout vermuten lassen dass es nur diesen einen Eingang gibt und man ggf. sofort mit einem Multiplexer anfangen muss. Zwei habe ich nun aber erfolgreich zum laufen gebracht :slight_smile: