Skip to content

Commit 85439fb

Browse files
Fix for PMS5003 ReadTimeoutError
1 parent 87417b9 commit 85439fb

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

examples/luftdaten.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import requests
66
import ST7735
77
from bme280 import BME280
8-
from pms5003 import PMS5003
8+
from pms5003 import PMS5003, ReadTimeoutError
99
from subprocess import PIPE, Popen, check_output
1010
from PIL import Image, ImageDraw, ImageFont
1111

@@ -55,9 +55,15 @@ def read_values():
5555
values["temperature"] = "{:.2f}".format(comp_temp)
5656
values["pressure"] = "{:.2f}".format(bme280.get_pressure() * 100)
5757
values["humidity"] = "{:.2f}".format(bme280.get_humidity())
58-
pm_values = pms5003.read()
59-
values["P2"] = str(pm_values.pm_ug_per_m3(2.5))
60-
values["P1"] = str(pm_values.pm_ug_per_m3(10))
58+
try:
59+
pm_values = pms5003.read()
60+
values["P2"] = str(pm_values.pm_ug_per_m3(2.5))
61+
values["P1"] = str(pm_values.pm_ug_per_m3(10))
62+
except ReadTimeoutError:
63+
pms5003 = PMS5003()
64+
pm_values = pms5003.read()
65+
values["P2"] = str(pm_values.pm_ug_per_m3(2.5))
66+
values["P1"] = str(pm_values.pm_ug_per_m3(10))
6167
return values
6268

6369
# Get CPU temperature to use for compensation

examples/particulates.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env python
22

33
import time
4-
from pms5003 import PMS5003
4+
from pms5003 import PMS5003, ReadTimeoutError
55

66
print("""particulates.py - Print readings from the PMS5003 particulate sensor.
77
@@ -14,8 +14,11 @@
1414

1515
try:
1616
while True:
17-
readings = pms5003.read()
18-
print(readings)
19-
time.sleep(1.0)
17+
try:
18+
readings = pms5003.read()
19+
print(readings)
20+
time.sleep(1.0)
21+
except ReadTimeoutError:
22+
pms5003 = PMS5003()
2023
except KeyboardInterrupt:
2124
pass

0 commit comments

Comments
 (0)