Pulse_counter has gone bananas

I have a Davis 6410 wind gauge connected to an ESP32, which until recently has worked perfectly.
But after the latest update of HA 2026.2.2, the wind gauge has gone bananas.
Instead of the normal 2–4 m/s, it now sometimes shows over 750 m/s!
Something has changed with the ESP32 pulse counter, but I can’t find what’s wrong. Could it be a bug?

Can you please see anything wrong in my code below?

### REFERENCE MEASUREMENT m/s ###
Translated with DeepL.com (free version)
  - platform: pulse_counter
    pin: 
      number: GPIO34
      inverted: true
      mode:
        input: true
    name: "Vinddata"
    id: vinddata
    icon: "mdi:weather-windy"
    unit_of_measurement: "m/s"
    device_class: "wind_speed"
    update_interval: 1s
    accuracy_decimals: 1
    filters:
      - multiply: 0.0167625
      #- lambda: return ( x * 2.25 / 60.0 ) * 0.447;
# Rådata in under 1-sekunders period
          
### AVERAGE WIND ###          
  - platform: template
    name: "Medelvind"
    id: medelvind
    unit_of_measurement: "m/s"
    device_class: "wind_speed"
    icon: "mdi:weather-windy"
    lambda: |-
      return 1*id(vinddata).state;
    accuracy_decimals: 1
    update_interval: 3s
    filters:
      - sliding_window_moving_average:
          window_size: 200
          send_every: 200
          send_first_at: 30
# Medelvind var 10:e minut

### GUST WIND ###
  - platform: template
    name: "Byvind"
    id: byvind
    unit_of_measurement: "m/s"
    device_class: "wind_speed"
    icon: "mdi:weather-windy"
    lambda: |-
      return 1*id(vinddata).state;
    accuracy_decimals: 1
    update_interval: 1s
    filters:
      - max: 
          window_size: 3
          send_every: 3
      - max:
          window_size: 400
          send_every: 200

Similar problem here. Reading a power meter via S0 for 6 years now without any trouble, but since I updated to 2026.2.0 today, I get readings that are totally implausible.
Example config:

  - platform: pulse_counter
    pin: GPIO27
    unit_of_measurement: 'W'
    accuracy_decimals: 1
    name: 'el. Leistung WP Heizstab ESP'
    update_interval: 3min
    filters:
      - multiply: 30
    total:
      unit_of_measurement: 'kWh'
      accuracy_decimals: 1
      name: 'Stromzaehler WP Heizstab ESP'
      filters:
        - multiply: 0.0005

edit:
I also tried this configuration, but it didn’t help:

  - platform: pulse_counter
    pin:
      number: GPIO27
      mode:
        input: true
        pullup: true

I use Davis 6410 / ESP32 and I am on the latest ESPHome 2026.2.0 and my pulse counter is working. What ESPHome version are you using? Would it help to add my YAML

Yes, I am also using version 2026.2.0.
In light winds, the values appear normal, but if the wind increases, the values become completely abnormal.
However, please post your code so that I can see what distinguishes them.

I also use an Davis 6410 although I’m using pulse_meter.

  - platform: pulse_meter
    pin: 
      number: GPIO4
      mode: INPUT
    name: "Wind Speed"
    id: wind_meter
    unit_of_measurement: 'mph'
    accuracy_decimals: 1
    filters:
      - multiply: 0.0248571 #1.492mph per rotation so 1 / 60 / 2 * 1.491424
      - sliding_window_moving_average: 
          window_size: 10
          send_every: 10
      - timeout: 
          timeout: 10s
          value: 0

Note: mine only has one pulse per rev as I replaced a bad reed switch with a hall sensor. Its been solid for two years now.

Sorry I meant I use pulse meter. I see ESPHome 2026.2.1 is just out and has a pulse meter fix for certain ESP32 variants. I would try this first.

This is the fix that is likely needed. Appears to be for all esp32.

2 Likes