Don't open the device and leave it open on each measurement, or the backend will fail with 'Too many open files' at some point

This commit is contained in:
Fabio Manganiello 2019-08-15 13:06:31 +02:00
parent 8396c82d56
commit dccd3fd3d4

View file

@ -1,3 +1,5 @@
import time
from platypush.plugins import action from platypush.plugins import action
from platypush.plugins.gpio.sensor import GpioSensorPlugin from platypush.plugins.gpio.sensor import GpioSensorPlugin
@ -32,6 +34,7 @@ class GpioSensorDistanceVl53L1XPlugin(GpioSensorPlugin):
from VL53L1X import VL53L1X from VL53L1X import VL53L1X
self._device = VL53L1X(i2c_bus=self.i2c_bus, i2c_address=self.i2c_address) self._device = VL53L1X(i2c_bus=self.i2c_bus, i2c_address=self.i2c_address)
self._device.open()
return self._device return self._device
@action @action
@ -52,14 +55,24 @@ class GpioSensorDistanceVl53L1XPlugin(GpioSensorPlugin):
""" """
device = self._get_device() device = self._get_device()
device.open()
ret = {} ret = {}
for i, r in enumerate(['short', 'medium', 'long']): try:
if eval(r): for i, r in enumerate(['short', 'medium', 'long']):
device.start_ranging(i+1) if eval(r):
ret[r] = device.get_distance() device.start_ranging(i+1)
device.stop_ranging() ret[r] = device.get_distance()
device.stop_ranging()
except Exception as e:
self.logger.exception(e)
try:
self._device.close()
except:
pass
self._device = None
time.sleep(1)
return ret return ret