ESPHome device online, sensors publishing, HA never creates entities — tried everything

I’m stuck after 2 days and need help.

ESPHome device is online, API connected, logs show sensor updates with valid names.
Home Assistant detects the device, but NO entities are ever created.

I have tried:

  • deleting the device
  • renaming
  • full HA restarts
  • clean firmware reinstall
  • different entity names
  • checking disabled entities
  • different ESPHome fisical device.

Logs clearly show sensors publishing values.
This looks like an HA entity registry or ESPHome integration bug?

Has anyone seen this before?

esphome:

name: marta

friendly_name: estacao

esp32:

board: esp32dev

framework:

type: arduino

web_server:

port: 80

logger:

# API configurada com a tua chave de encriptação

api:

encryption:

key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:

- platform: esphome

wifi:

ssid: !secret wifi_ssid

password: !secret wifi_password

manual_ip:

static_ip: xxx.xxx.x.xxx

gateway: xxx.xxx.x.x

subnet: xxx.xxx.xxx.x

dns1: 1.1.1.1

sensor:

- platform: pulse_counter

pin:

number: GPIO13

mode: INPUT_PULLUP

name: "Pulsos Brutos Vento"

Can you post your logs?
What do you see when you connect to the webserver?
And did you add the device to the ESPHome integration?

1 Like

Yes, it is added to the ESPHome integration.
In the web server, I can see the logs, the sensor names and states, and it publishes the correct pulse count and kWh.

INFO ESPHome 2026.1.4
INFO Reading configuration /config/esphome/telhado.yaml...
INFO Starting log output from 192.168.0.137 using esphome API
INFO Successfully resolved marta @ 192.168.0.137 in 0.000s
INFO Successfully connected to marta @ 192.168.0.137 in 0.126s
INFO Successful handshake with marta @ 192.168.0.137 in 0.088s
[19:08:00.120][I][app:206]: ESPHome version 2026.1.4 compiled on 2026-02-09 10:41:02 +0000
[19:08:00.125][I][app:213]: ESP32 Chip: ESP32 r3.1, 2 core(s)
[19:08:00.125][W][app:222]: Set minimum_chip_revision: "3.1" to reduce binary size
[19:08:00.128][C][logger:316]: Logger:
[19:08:00.128][C][logger:316]:   Max Level: DEBUG
[19:08:00.128][C][logger:316]:   Initial Level: DEBUG
[19:08:00.128][C][logger:322]:   Log Baud Rate: 115200
[19:08:00.128][C][logger:322]:   Hardware UART: UART0
[19:08:00.128][C][logger:332]:   Task Log Buffer Size: 768 bytes
[19:08:00.150][C][pulse_counter:016]: Pulse Counter 'Pulsos Brutos Vento'
[19:08:00.150][C][pulse_counter:016]:   State Class: 'measurement'
[19:08:00.150][C][pulse_counter:016]:   Unit of Measurement: 'pulses/min'
[19:08:00.150][C][pulse_counter:016]:   Accuracy Decimals: 2
[19:08:00.150][C][pulse_counter:030]:   Icon: 'mdi:pulse'
[19:08:00.150][C][pulse_counter:152]:   Pin: GPIO13
[19:08:00.153][C][pulse_counter:175]:   Rising Edge: INCREMENT
[19:08:00.153][C][pulse_counter:175]:   Falling Edge: DISABLE
[19:08:00.153][C][pulse_counter:175]:   Filtering pulses shorter than 13 µs
[19:08:00.197][C][pulse_counter:456]:   Update Interval: 10.0s
[19:08:00.197][C][wifi:1304]: WiFi:
[19:08:00.197][C][wifi:1304]:   Local MAC: 6C:C8:40:55:75:E8
[19:08:00.197][C][wifi:1304]:   Connected: YES
[19:08:00.201][C][wifi:1037]:   IP Address: 192.168.0.137
[19:08:00.201][C][wifi:1048]:   SSID: 'NOWO-0873F'[redacted]
[19:08:00.201][C][wifi:1048]:   BSSID: 9E:BA:5F:C4:45:9E[redacted]
[19:08:00.201][C][wifi:1048]:   Hostname: 'marta'
[19:08:00.201][C][wifi:1048]:   Signal strength: -50 dB ▂▄▆█
[19:08:00.201][C][wifi:1048]:   Channel: 1
[19:08:00.201][C][wifi:1048]:   Subnet: 255.255.255.0
[19:08:00.201][C][wifi:1048]:   Gateway: 192.168.0.1
[19:08:00.201][C][wifi:1048]:   DNS1: 1.1.1.1
[19:08:00.201][C][wifi:1048]:   DNS2: 0.0.0.0
[19:08:00.201][C][web_server:416]: Web Server:
[19:08:00.201][C][web_server:416]:   Address: 192.168.0.137:80
[19:08:00.217][C][esphome.ota:075]: Over-The-Air updates:
[19:08:00.217][C][esphome.ota:075]:   Address: 192.168.0.137:3232
[19:08:00.217][C][esphome.ota:075]:   Version: 2
[19:08:00.222][C][safe_mode:021]: Safe Mode:
[19:08:00.222][C][safe_mode:021]:   Successful after: 60s
[19:08:00.222][C][safe_mode:021]:   Invoke after: 10 attempts
[19:08:00.222][C][safe_mode:021]:   Duration: 300s
[19:08:00.239][C][safe_mode:038]:   Bootloader rollback: support unknown
[19:08:00.252][C][api:221]: Server:
[19:08:00.252][C][api:221]:   Address: 192.168.0.137:6053
[19:08:00.252][C][api:221]:   Listen backlog: 4
[19:08:00.252][C][api:221]:   Max connections: 8
[19:08:00.252][C][api:228]:   Noise encryption: YES
[19:08:00.255][C][mdns:177]: mDNS:
[19:08:00.255][C][mdns:177]:   Hostname: marta
[19:08:01.848][D][pulse_counter:190]: 'Pulsos Brutos Vento': Retrieved counter: 0.00 pulses/min
[19:08:01.848][D][sensor:129]: 'Pulsos Brutos Vento' >> 0.00 pulses/min
[19:08:01.848][D][pulse_counter:196]: 'Pulsos Brutos Vento': Total : 176 pulses
[19:08:01.854][D][sensor:129]: 'Velocidade do Vento' >> 7.0 km/h
[19:08:11.842][D][pulse_counter:190]: 'Pulsos Brutos Vento': Retrieved counter: 0.00 pulses/min
[19:08:11.843][D][sensor:129]: 'Pulsos Brutos Vento' >> 0.00 pulses/min
[19:08:11.847][D][pulse_counter:196]: 'Pulsos Brutos Vento': Total : 176 pulses
[19:08:11.851][D][sensor:129]: 'Velocidade do Vento' >> 7.0 km/h
[19:08:21.845][D][pulse_counter:190]: 'Pulsos Brutos Vento': Retrieved counter: 191.96 pulses/min
[19:08:21.849][D][sensor:129]: 'Pulsos Brutos Vento' >> 191.96 pulses/min
[19:08:21.849][D][pulse_counter:196]: 'Pulsos Brutos Vento': Total : 208 pulses
[19:08:21.850][D][sensor:129]: 'Velocidade do Vento' >> 8.3 km/h
[19:08:31.851][D][pulse_counter:190]: 'Pulsos Brutos Vento': Retrieved counter: 323.94 pulses/min
[19:08:31.853][D][sensor:129]: 'Pulsos Brutos Vento' >> 323.94 pulses/min
[19:08:31.854][D][pulse_counter:196]: 'Pulsos Brutos Vento': Total : 262 pulses
[19:08:31.856][D][sensor:129]: 'Velocidade do Vento' >> 10.5 km/h

Your yaml code needs formatting. Either you have not posted it using the forum </> formatting, or the source is wrong.
Did you post all the yaml? Some seems to be missing.

Can you post a screenshot of the device info tab from the ESPHome integration page, to be sure it’s added correctly as an integration. You should see something like this