def test_tracker_on_devices(self): cl = get_redis_client() keys = cl.keys(pattern='train_tracker:*') if len(keys) > 0: cl.delete(*keys) device_id = '02090d12' # Eran's trip trips, tracker = self.track_device(device_id, do_preload_reports=True) print trips self.assertEquals(len(trips), 2) self.assertTrue('130114_00077' in trips) self.assertTrue('130114_00177' in trips) device_id = 'f752c40d' # Ofer's trip trips, tracker = self.track_device(device_id) print trips self.assertEquals(len(trips), 1) self.assertTrue('130114_00283' in trips) tracker.print_possible_trips() device_id = '1cb87f1e' # Udi's trip trips, tracker = self.track_device(device_id) print trips self.assertEquals(len(trips), 1) self.assertTrue('160114_00073' in trips)
def remove_from_redis(device_ids): if isinstance(device_ids, basestring): device_ids = [device_ids] cl = get_redis_client() keys = [] for device_id in device_ids: keys.extend(cl.keys(pattern='train_tracker:%s*' % (device_id))) if len(keys) > 0: cl.delete(*keys)
def print_table(self, bssids=None): print 'bssid\tcount\tprobability\tname' if bssids is None: cl = get_redis_client() bssid_keys = cl.keys(pattern='bssid*total') bssids = [x.split(":")[1] for x in bssid_keys] for bssid in bssids: stop_id, stop_probability, total = self.get_stop_id(bssid) print '%s\t%s\t%.2f\t%s' % (bssid, total, stop_probability, stops.all_stops[stop_id].name)
def calc_tracker(): cl = get_redis_client() keys = cl.keys(pattern='bssid*') if len(keys) > 0: cl.delete(*keys) tracker = BSSIDTracker() reports = analysis.models.Report.objects.filter(wifi_set__SSID = 'S-ISRAEL-RAILWAYS', my_loc__isnull=False).order_by('id') reports.prefetch_related('wifi_set', 'my_loc') # TODO: ask Eran is there's a better way to get unique reports (some kind of django join?): reports = list(set(reports)) for report in reports: tracker.add(report) tracker.print_table() return tracker
def calc_tracker(): cl = get_redis_client() keys = cl.keys(pattern='bssid*') if len(keys) > 0: cl.delete(*keys) tracker = BSSIDTracker() reports = analysis.models.Report.objects.filter(wifi_set__SSID = 'S-ISRAEL-RAILWAYS', my_loc__isnull=False).order_by('device_id', 'timestamp') reports.prefetch_related('wifi_set', 'my_loc') reports = list(set(reports)) ignore_timestamp = reports[0].timestamp ignore_devices_timestamps = [] prev_loc = None prev_device_id = None for i, report in enumerate(reports): if i % 1000 == 0: print i lat = report.get_my_loc().lat if report.get_my_loc() else None lon = report.get_my_loc().lon if report.get_my_loc() else None if prev_loc and report.get_my_loc() and prev_device_id == report.device_id: dist = math.sqrt(math.pow(lat - prev_loc.lat,2) + math.pow(lon - prev_loc.lon,2))*110101.0 else: dist = -1 if dist > 200: ignore_timestamp = report.timestamp ignore_devices_timestamps.append((ignore_timestamp, report.device_id)) prev_loc = report.get_my_loc() prev_device_id = report.device_id ignore_devices = set(x[1] for x in ignore_devices_timestamps) devices = set([x.device_id for x in reports]) good_devices = devices - ignore_devices non_test_devices = [x for x in devices if 'test' not in devices] for x in non_test_devices: print x for i, report in enumerate(reports): if i % 1000 == 0: print i tracker.print_table() if report.device_id not in ignore_devices: tracker.add(report) else: print 'Ignoring report' tracker.print_table() return tracker
def has_bssid(self, bssid): cl = get_redis_client() return cl.exists("bssid:%s:total" % (bssid))
_start_stop_time(tracker_id, prev_stop_id, timestamp, stop_time, True) is_updated_stop_time = True elif prev_stop_id != stop_id: stop_time = get_last_detected_stop_time(tracker_id) _end_stop_time(tracker_id, prev_stop_id, stop_time.arrival, prev_timestamp, stop_time) _start_stop_time(tracker_id, stop_id, timestamp, stop_time) is_updated_stop_time = True elif state == DetectorState.states.UNKNOWN_STOP: # TODO: Add handling of UNKNOWN_STOP stop_time logger.info('passing big if statement') pass elif prev_state == DetectorState.states.UNKNOWN_STOP: if state == DetectorState.states.NOSTOP: # TODO: Add handling of UNKNOWN_STOP stop_time logger.info('passing big if statement') pass elif state == DetectorState.states.STOP: # TODO: Add handling of UNKNOWN_STOP stop_time logger.info('passing big if statement') pass elif state == DetectorState.states.UNKNOWN_STOP: # TODO: Add handling of UNKNOWN_STOP stop_time logger.info('passing big if statement') pass return is_updated_stop_time cl = get_redis_client() p = get_redis_pipeline()
def has_bssid(self, bssid): if USE_FILE and not bssid.startswith(FAKE_BSSID_PREFIX): return file_map.has_key(bssid) else: cl = get_redis_client() return cl.exists("bssid:%s:total" % (bssid))
def get_bssids(self): cl = get_redis_client() bssid_keys = cl.keys(pattern='bssid*total') bssids = [x.split(":")[1] for x in bssid_keys] return bssids