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)
Exemple #3
0
 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)
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
 def has_bssid(self, bssid):
     cl = get_redis_client()
     return cl.exists("bssid:%s:total" % (bssid))
Exemple #7
0
                _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()
Exemple #8
0
 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))
Exemple #9
0
 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