The code reads PM values from serial port. Tested on Raspberry Pi, but it should work on any machine with Python and serial port.
Device description: https://aqicn.org/sensor/pms5003-7003/
To install the driver, simply do:
pip3 install pms7003from pms7003 import Pms7003Sensor, PmsSensorException
if __name__ == '__main__':
    sensor = Pms7003Sensor('/dev/serial0')
    while True:
        try:
            print(sensor.read())
        except PmsSensorException:
            print('Connection problem')
    sensor.close()The read function has an option of returning values as a dict or OrderedDict.
sensor.read(ordered=True)import time
from pms7003 import Pms7003Thread
if __name__ == "__main__":
    with Pms7003Thread("/dev/serial0") as sensor:
        while True:
            print(sensor.measurements)
            # We're free to do computation in main thread 
            a = 2**32
            time.sleep(1)