try:
                 data = pms5003.read()
             except pmsReadTimeoutError:
-                logging.warn("Failed to read PMS5003")
+                logging.warning("Failed to read PMS5003")
             else:
                 data = float(data.pm_ug_per_m3(1.0))
                 display_text(variables[mode], data, unit)
             try:
                 data = pms5003.read()
             except pmsReadTimeoutError:
-                logging.warn("Failed to read PMS5003")
+                logging.warning("Failed to read PMS5003")
             else:
                 data = float(data.pm_ug_per_m3(2.5))
                 display_text(variables[mode], data, unit)
             try:
                 data = pms5003.read()
             except pmsReadTimeoutError:
-                logging.warn("Failed to read PMS5003")
+                logging.warning("Failed to read PMS5003")
             else:
                 data = float(data.pm_ug_per_m3(10))
                 display_text(variables[mode], data, unit)
 
     import ltr559
 
 from bme280 import BME280
-from pms5003 import PMS5003, ReadTimeoutError as pmsReadTimeoutError
+from pms5003 import PMS5003, ReadTimeoutError as pmsReadTimeoutError, SerialTimeoutError
 from enviroplus import gas
 from subprocess import PIPE, Popen
 from PIL import Image
                 try:
                     data = pms5003.read()
                 except pmsReadTimeoutError:
-                    logging.warn("Failed to read PMS5003")
+                    logging.warning("Failed to read PMS5003")
                 else:
                     data = float(data.pm_ug_per_m3(1.0))
                     display_text(variables[mode], data, unit)
                 try:
                     data = pms5003.read()
                 except pmsReadTimeoutError:
-                    logging.warn("Failed to read PMS5003")
+                    logging.warning("Failed to read PMS5003")
                 else:
                     data = float(data.pm_ug_per_m3(2.5))
                     display_text(variables[mode], data, unit)
                 try:
                     data = pms5003.read()
                 except pmsReadTimeoutError:
-                    logging.warn("Failed to read PMS5003")
+                    logging.warning("Failed to read PMS5003")
                 else:
                     data = float(data.pm_ug_per_m3(10))
                     display_text(variables[mode], data, unit)
                 pms_data = None
                 try:
                     pms_data = pms5003.read()
-                except pmsReadTimeoutError:
-                    logging.warn("Failed to read PMS5003")
+                except (SerialTimeoutError, pmsReadTimeoutError):
+                    logging.warning("Failed to read PMS5003")
                 else:
                     save_data(7, float(pms_data.pm_ug_per_m3(1.0)))
                     save_data(8, float(pms_data.pm_ug_per_m3(2.5)))