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

SPS30 Particulate Matter Sensor - implement idle mode #2133

Open
MatejBosansky opened this issue Feb 23, 2023 · 9 comments · May be fixed by esphome/esphome#6828
Open

SPS30 Particulate Matter Sensor - implement idle mode #2133

MatejBosansky opened this issue Feb 23, 2023 · 9 comments · May be fixed by esphome/esphome#6828

Comments

@MatejBosansky
Copy link

Describe the problem you have/What new integration you would like

I was able to successfully implement SPS30 Particulate Matter Sensor.
https://esphome.io/components/sensor/sps30.html
First point - the wiring diagram is incorrect. There is switched SEL and GND pin (see page 4). But since both must be connected to GND, it didn't cause issues so far.

The problem is:
Measurement works fine. However I observed that fan inside is constantly spinning - I can feel vibrations inside sensor. I configured update_interval to 300s.
According to documentation, fan should spin only during the measurement. In idle mode fan has to be turned off.
https://sensirion.com/media/documents/188A2C3C/6166F165/Sensirion_Particulate_Matter_AppNotes_SPS30_Low_Power_Operation_D1.pdf

So it looks like sensor is constantly in measurement mode. This will definitively raise power consumption. I am not sure but this may also reduce the sensor lifetime that is currently rated on 8-10 years with non-constant measurement mode.

According to documentation is obvious that is good when fan is spinning some time (around 15-30s) before measurement is taken.

As a solution, would be good to be able define also time how long must fan run before measurement is taken (or multiple averaged measurements are taken). If update interval is 300s and measurement interval is 30s, then it will be in measurement mode 30s and rest 270s will be in idle mode with reduced consumption.

Please describe your use case for this integration and alternatives you've tried:

Additional context

@PlantsThatsWhatsUp
Copy link

PlantsThatsWhatsUp commented Mar 8, 2023

Agreed! Would love to see idle mode implemented

Edit: Also uses a lot of power when constantly running - would be better for battery savings without deep sleep!

@thomasvnl
Copy link

thomasvnl commented Mar 29, 2023

I agree as well. Indeed, this would increase the life of the SPS30 module as the fan has increased wear on it while doing essentialy nothing useful (for the end user), and won't make the 8-10 year lifespan claim in the datasheet in continuous measurement mode.

@Flamingo-tech
Copy link

Agreed !

@mkormout
Copy link

mkormout commented Apr 13, 2023

Yep, besides the lifespan it's noisy in continuous measurement... There is an ability to stop the measurement and start again when needed... Please implement... Thanks! :)

@tiimsvk
Copy link

tiimsvk commented Sep 11, 2023

#2385
any updates?

@mabnz
Copy link

mabnz commented Feb 26, 2024

Is it possible this could be implemented?

@tiimsvk
Copy link

tiimsvk commented Feb 26, 2024

test my own component.
It works well for me on the weather station
https://github.com/tiimsvk/SPS30-idle-mode

or SK CZ forum:
https://www.homeassistant-cz.cz/viewtopic.php?p=12644&hilit=sps30

@DR-PLANTECHSTEIN
Copy link

@tiimsvk Can you submit as a PR so that it can be implemented?

@c0mputerguru c0mputerguru linked a pull request May 29, 2024 that will close this issue
13 tasks
@c0mputerguru
Copy link

I stumbled onto this thread because my sps30 sensor died, and I think it was because the fan was running constantly for 2+ years.

I took @tiimsvk's approach, cleaned it up a bit by adding the start/stop as ations, and have a draft pull request ready: esphome/esphome#6828

I even found a way to account for warm-up of the sensor in yaml rather than have to rewrite the whole component to have a separate thread to manage the start/stop of the sensor.

I'm waiting on a new sensor to show up so I can actually test it, and then I'll write up documentation and get this change ready to submit. If others want to test it out, feel free to pull my changes and test them out as a local component.

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

Successfully merging a pull request may close this issue.

9 participants