class GpsSensor(VirtualSensor): def __init__(self, broker, interval=5, exp=10, event_type="gps", **kwargs): super(GpsSensor, self).__init__(broker, interval=interval, event_type=event_type, **kwargs) self._exp = exp self._gps_poller = None DEFAULT_PRIORITY = 7 def on_start(self): # TODO: this should be done in a self.run_in_background call rather than directly starting a thread, # especially a daemon! self._gps_poller = GPSPoller() self._gps_poller.daemon = True self._gps_poller.start() super(GpsSensor, self).on_start() def read_raw(self): if self._gps_poller is None: return None raw = self._gps_poller.get_dict() if type(raw) != type({}): return None raw["exp"] = time.time() + self._exp return raw def policy_check(self, event): raw = event.data if raw is None or type(raw) != type({}): return False if not "mode" in raw or raw["mode"] < 2: return False return True
def on_start(self): # TODO: this should be done in a self.run_in_background call rather than directly starting a thread, # especially a daemon! self._gps_poller = GPSPoller() self._gps_poller.daemon = True self._gps_poller.start() super(GpsSensor, self).on_start()
class GPSVirtualSensor(VirtualSensor): def __init__(self, broker, device=None, interval=1, exp=10, **kwargs): super(GPSVirtualSensor, self).__init__(broker, device=device, interval=interval, **kwargs) self._exp = exp self._gps_poller = None def on_start(self): self._gps_poller = GPSPoller() self._gps_poller.daemon = True self._gps_poller.start() super(GPSVirtualSensor, self).on_start() def get_type(self): return "gps" def read_raw(self): if self._gps_poller is None: return None raw = self._gps_poller.get_dict() if type(raw) != type({}): return None raw["exp"] = time.time() + self._exp return raw def read(self): raw = self.read_raw() event = self.make_event_with_raw_data(raw, priority=7) return event def policy_check(self, data): raw = data.get_raw_data() if raw is None or type(raw) != type({}): return False if not "mode" in raw or raw["mode"] < 2: return False return True
class GPSVirtualSensor(VirtualSensor): def __init__(self, broker, device=None, interval=1, exp=10): super(GPSVirtualSensor, self).__init__(broker, device=device, interval=interval) self._exp = exp self._gps_poller = None def on_start(self): self._gps_poller = GPSPoller() self._gps_poller.daemon = True self._gps_poller.start() super(GPSVirtualSensor, self).on_start() def get_type(self): return "gps" def read_raw(self): if self._gps_poller is None: return None raw = self._gps_poller.get_dict() if type(raw) != type({}): return None raw["exp"] = time.time() + self._exp return raw def read(self): raw = self.read_raw() event = self.make_event_with_raw_data(raw, priority=7) return event def policy_check(self, data): raw = data.get_raw_data() if raw is None or type(raw) != type({}): return False if not "mode" in raw or raw["mode"] < 2: return False return True
def on_start(self): self._gps_poller = GPSPoller() self._gps_poller.daemon = True self._gps_poller.start() super(GPSVirtualSensor, self).on_start()