I’ve got an enviro+ and PMS5003 hooked up to a Pi Zero W.
I can successfully publish enviro+ data via MQTT using Sam Birch’s enviroplus-mqtt software (https://github.com/hotplot/enviroplus-mqtt). This runs as a service and sends the data to my Home Assistant.
However, I also want to contribute my data to Luftdaten…
If I run the luftdaten.py script whilst the enviroplus service is running then the Luftdaten script generally throws mostly checksum errors everytime it tries to read the PM data. Maybe 1 in 20 attempts to publish the data are successful. This seems to happen regardless as to whether I run Luftdaten.py in the foreground of a console window or as a forked process (i.e. with an “&”) via rc.local at bootup.
Running the Lufdaten script also seems to corrupt the PM readings that envlogger is picking up from the PMS5003, in that all 3 values for PM1.0, PM2.5 and PM10 become the same (e.g. PM1,2.5 and 10 will all be 6 ugm3 - which is too much of a coincidence)
If I stop the envlogger service then the Luftdaten script runs fine - no checksum errors.
If I stop the Luftdaten script then the envlogger service resumes sending correct (i.e. different values) for each of P1.0, PM2.5 and PM10).
I’ve tried reducing the sampling frequency of the envlogger routine - doesn’t seem to make any difference.
I’ve also tried using the modified rmb_luftdaten.py published by RemBrand (Basic intro for uploading to Luftdaten / Air quality project) that allows the sampling frequency to be throttled.
So, it looks like it is not possible to have two Python routines independently and concurrently reading the PM data from enviroplus?
Any ideas from anybody?