Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check for missed pulse_meter ISRs in the main loop #6126

Open
wants to merge 17 commits into
base: dev
Choose a base branch
from

Conversation

TrentHouliston
Copy link
Contributor

What does this implement/fix?

This PR is dependent on #6014

As described in esphome/issues#4807 (comment) esp32s can have problems with rising and falling edge interrupts.

These missed interrupts explain a lot of issues that people have had in that thread as missed interrupt edges can make the results unreliable.

This PR updates the code so that the main loop will check if the state of the last edge is correct and if not it will manually run the ISR to keep everything in sync.

Types of changes

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Other

Related issue or feature (if applicable): Addreses some of the problems mentioned in esphome/issues#4807

Test Environment

  • ESP32
  • ESP32 IDF
  • ESP8266
  • RP2040
  • BK72xx
  • RTL87xx

Example entry for config.yaml:

  - platform: pulse_meter
    pin: GPIO05
    unit_of_measurement: "W"
    state_class: measurement
    name: "Target Power"
    accuracy_decimals: 1
    timeout: 30s
    filters:
      - multiply: 0.03448473917

Checklist:

  • The code change is tested and works locally.
  • Tests have been added to verify that the new code works (under tests/ folder).

If user exposed functionality or configuration variables are added/changed:

@codecov-commenter
Copy link

codecov-commenter commented Jan 21, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 54.13%. Comparing base (4d8b5ed) to head (2fa3f97).
Report is 626 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff             @@
##              dev    #6126      +/-   ##
==========================================
+ Coverage   53.70%   54.13%   +0.42%     
==========================================
  Files          50       50              
  Lines        9408     9619     +211     
  Branches     1654     1698      +44     
==========================================
+ Hits         5053     5207     +154     
- Misses       4056     4086      +30     
- Partials      299      326      +27     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@TrentHouliston TrentHouliston marked this pull request as ready for review May 17, 2024 02:52
@probot-esphome
Copy link

Hey there @cstaahl, @stevebaxter, mind taking a look at this pull request as it has been labeled with an integration (pulse_meter) you are listed as a code owner for? Thanks!
(message by CodeOwnersMention)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants