Particle sensing PM 1 to 10 with ESPhome

I seem to be running into an issue with particals showing up and reading the correct values. I would think some particles would be flying in the air. Is the moving window average too short or long for the plan tower sensor?

I see that frequently in my home with a good HVAC filter and circulation. I believe it is just keeping the air that clean. You can take it outside to ensure that it reads something, but since the PM 0.3 is showing numbers, the sensor is returning data.

I would try clicking on something like PM 2.5 and view the graph history and see if it is ever changing. I have 2 devices sitting in front of me, one running the stock Arduino and one with ESPHome and other than taking just a bit longer to update due to the moving window, they are within 1 of each other, currently bouncing between 0 and 2 since I have some windows open today.

You can also try the stock firmware just to make sure it is reading similarly, but I haven’t seen any hard evidence that ESPHome is reading incorrectly.

Looks like that is the case. This is consistantly low on the AG One and the Open Air i have outside. I did a test with some smoke and it spiked immediately.

Since i have your attention lol… BTW thanks for the quick reply!

I have this set to 15 minutes to kinda equalize a little bit. Is that okay to change from 5 minutes? Also i set the sensor read for the .3-10 ppm reading to 30s.

name: Humidity
id: humidity
- lambda: !lambda |-
return x * 1.259 + 7.34;
- sliding_window_moving_average:
window_size: 30
send_every: 30
send_first_at: 1
disabled_by_default: false
force_update: false
unit_of_measurement: ‘%’
accuracy_decimals: 1
device_class: humidity
state_class: measurement
update_interval: 30s

  • platform: template
    name: PM 2.5 AQI
    id: pm_2_5_aqi
    update_interval: 15min
    unit_of_measurement: AQI

Also thank you for all the work you did on the YAML’s they are really really really nice and very detailed!

On the AQI entry, changing it to 15 minute interval should be fine, but not sure what you mean by equalize, as it is just using the most recent PM2.5 data every 5 or 15 minutes and reporting that to HomeAssistant. If it doesn’t change, then HA doesn’t write new data to the database, so it is already pretty lightweight.

Changing the Humidity has more to consider. That update interval is tied to the entire PMS5003t sensor in the Outdoor model, so it is also impacting temperature and PM 2.5, 1, and 10 numbers. The biggest thing is that the sliding window moving average is still present, so now instead of collecting data every second and only reporting the average after 30 pollings, by updating to updating every 30 seconds, it will still collect 30 of them and report the average, so now really updating every 15 minutes but the fan never spins down.

If you are wanting to reduce overall readings, you can change the update interval to 30s, but I would remove the moving average filter.

It looks like you may be using the Full Config instead of the packages one, so you would want to remove this from each of the entries under the PMS5003, or you can use the package sensor_pms5003t_extended_life.yaml which now has a pm_update_interval substitution so you could add that to your substitution and change it once and it already has the moving average removed.

I’m actually trying out a 30s update interval for all of my devices, even the indoor ones, seeing if there is any extra load with doing the moving average on multiple sensors vs just having it get a reading every 30 seconds. As far as I can tell, if it is 30s or less, the fans don’t spin down so the readings should still be accurate.