def main(): #base = DynastreamANT(True) base = FitBitANT(debug=True) if not base.open(): print "No devices connected!" return 1 device = FitBit(base) device.init_tracker_for_transfer() device.get_tracker_info() # print device.tracker device.parse_bank2_data(device.run_data_bank_opcode(0x02)) print "---" device.parse_bank0_data(device.run_data_bank_opcode(0x00)) device.run_data_bank_opcode(0x04) d = device.run_data_bank_opcode(0x02) # 13 for i in range(0, len(d), 13): print["%02x" % x for x in d[i:i + 13]] d = device.run_data_bank_opcode(0x00) # 7 print["%02x" % x for x in d[0:7]] print["%02x" % x for x in d[7:14]] j = 0 for i in range(14, len(d), 3): print d[i:i + 3] j += 1 print "Records: %d" % (j) device.parse_bank1_data(device.run_data_bank_opcode(0x01)) # for i in range(0, len(d), 14): # print ["%02x" % x for x in d[i:i+14]] base.close() return 0
class FitBitClient(object): CLIENT_UUID = "2ea32002-a079-48f4-8020-0badd22939e3" FITBIT_HOST = "http://client.fitbit.com:80" START_PATH = "/device/tracker/uploadData" def __init__(self): self.info_dict = {} base = FitBitANT(debug=True) if not base.open(): print "No devices connected!" return 1 self.fitbit = FitBit(base) self.remote_info = None def form_base_info(self): self.info_dict.clear() self.info_dict["beaconType"] = "standard" self.info_dict["clientMode"] = "standard" self.info_dict["clientVersion"] = "1.3.3" self.info_dict["os"] = "Commodore 64" self.info_dict["clientId"] = self.CLIENT_UUID if self.remote_info: self.info_dict = dict(self.info_dict, **self.remote_info) def run_upload_request(self): self.fitbit.init_tracker_for_transfer() url = self.FITBIT_HOST + self.START_PATH # Start the request Chain self.form_base_info() while url is not None: res = urllib2.urlopen(url, urllib.urlencode(self.info_dict)).read() print res r = FitBitResponse(res) self.remote_info = r.response self.form_base_info() op_index = 0 for o in r.opcodes: self.info_dict["opResponse[%d]" % op_index] = base64.b64encode( ''.join([ chr(x) for x in self.fitbit.run_opcode( o["opcode"], o["payload"]) ])) self.info_dict["opStatus[%d]" % op_index] = "success" op_index += 1 urllib.urlencode(self.info_dict) print self.info_dict if r.host: url = "http://%s%s" % (r.host, r.path) print url else: print "No URL returned. Quitting." break self.fitbit.base.close()
def init(*args): global tracker, base debug = False if len(args) >= 1: debug = bool(int(args[0])) if debug: print "Debug ON" base = getBase(debug) if base is None: print "No device connected." return tracker = FitBit(base) tracker.init_tracker_for_transfer()
class FitBitClient(object): CLIENT_UUID = "2ea32002-a079-48f4-8020-0badd22939e3" FITBIT_HOST = "http://client.fitbit.com:80" START_PATH = "/device/tracker/uploadData" def __init__(self): self.info_dict = {} base = FitBitANT(debug=True) if not base.open(): print "No devices connected!" return 1 self.fitbit = FitBit(base) self.remote_info = None def form_base_info(self): self.info_dict.clear() self.info_dict["beaconType"] = "standard" self.info_dict["clientMode"] = "standard" self.info_dict["clientVersion"] = "1.3.3" self.info_dict["os"] = "Commodore 64" self.info_dict["clientId"] = self.CLIENT_UUID if self.remote_info: self.info_dict = dict(self.info_dict, **self.remote_info) def run_upload_request(self): self.fitbit.init_tracker_for_transfer() url = self.FITBIT_HOST + self.START_PATH # Start the request Chain self.form_base_info() while url is not None: res = urllib2.urlopen(url, urllib.urlencode(self.info_dict)).read() print res r = FitBitResponse(res) self.remote_info = r.response self.form_base_info() op_index = 0 for o in r.opcodes: self.info_dict["opResponse[%d]" % op_index] = base64.b64encode(''.join([chr(x) for x in self.fitbit.run_opcode(o["opcode"], o["payload"])])) self.info_dict["opStatus[%d]" % op_index] = "success" op_index += 1 urllib.urlencode(self.info_dict) print self.info_dict if r.host: url = "http://%s%s" % (r.host, r.path) print url else: print "No URL returned. Quitting." break self.fitbit.base.close()
def init(*args): global tracker, base debug = False if len(args) >= 1: debug = bool(int(args[0])) if debug: print "Debug ON" conn = getConn() if conn is None: print "No device connected." return base = ANT(conn) tracker = FitBit(base) tracker.init_tracker_for_transfer()
def main(): #base = DynastreamANT(True) base = FitBitANT(debug=True) if not base.open(): print "No devices connected!" return 1 device = FitBit(base) device.init_tracker_for_transfer() device.get_tracker_info() # print device.tracker device.parse_bank2_data(device.run_data_bank_opcode(0x02)) print "---" device.parse_bank0_data(device.run_data_bank_opcode(0x00)) device.run_data_bank_opcode(0x04) d = device.run_data_bank_opcode(0x02) # 13 for i in range(0, len(d), 13): print ["%02x" % x for x in d[i:i+13]] d = device.run_data_bank_opcode(0x00) # 7 print ["%02x" % x for x in d[0:7]]
def test(): global base if base is None: base = getBase(True) if base is None: print "No devices connected!" return 1 device = FitBit(base) device.init_tracker_for_transfer() device.get_tracker_info() # print device.tracker device.parse_bank2_data(device.run_data_bank_opcode(0x02)) print "---" device.parse_bank0_data(device.run_data_bank_opcode(0x00)) device.run_data_bank_opcode(0x04) d = device.run_data_bank_opcode(0x02) # 13 for i in range(0, len(d), 13): print ["%02x" % x for x in d[i:i+13]] d = device.run_data_bank_opcode(0x00) # 7 print ["%02x" % x for x in d[0:7]]
class FitBitClient(object): CLIENT_UUID = "2ea32002-a079-48f4-8020-0badd22939e3" FITBIT_HOST = "client.fitbit.com" START_PATH = "/device/tracker/uploadData" def __init__(self, debug=False): self.info_dict = {} self.log_info = {} self.time = time.time() self.data = [] conn = getConn() if conn is None: print "No base found!" exit(1) base = ANT(conn) self.fitbit = FitBit(base) if not self.fitbit: print "No devices connected!" exit(1) def __del__(self): self.close() self.fitbit = None def form_base_info(self, remote_info=None): self.info_dict.clear() self.info_dict["beaconType"] = "standard" self.info_dict["clientMode"] = "standard" self.info_dict["clientVersion"] = "1.0" self.info_dict["os"] = "libfitbit" self.info_dict["clientId"] = self.CLIENT_UUID if remote_info: self.info_dict.update(remote_info) for f in ['deviceInfo.serialNumber','userPublicId']: if f in self.info_dict: self.log_info[f] = self.info_dict[f] def dump_connection(self, directory='~/.fitbit'): directory = os.path.expanduser(directory) data = yaml.dump(self.data) if 'userPublicId' in self.log_info: directory = os.path.join(directory, self.log_info['userPublicId']) if not os.path.isdir(directory): os.makedirs(directory) f = open(os.path.join(directory,'connection-%d.txt' % int(self.time)), 'w') f.write(data) f.close() print data def close(self): self.dump_connection() print 'Closing USB device' try: self.fitbit.base.connection.close() except AttributeError: pass self.fitbit.base = None def run_upload_requests(self): self.fitbit.init_tracker_for_transfer() conn = FitBitRequest(self.FITBIT_HOST, self.START_PATH, https=True) # Start the request Chain self.form_base_info() while conn is not None: self.form_base_info(conn.response) self.info_dict.update(conn.run_opcodes(self.fitbit)) conn.upload(self.info_dict) self.data.append(conn.dump()) conn = conn.getNext() self.fitbit.command_sleep()