def Parse(self, data): self._data = data segs = data.split("@") if len(segs) != 2: raise PacketException("Invalid upload terminal log req packet") # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) # 获取日志数据 segs3 = segs[1].split("%") if len(segs3) <= 0: raise PacketException("Invalid upload terminal log req packet") for v in segs3: segs4 = v.split(",") if len(segs4) != 2: raise PacketException("Invalid upload terminal log req packet") f = terminal_proto.ComplexField() f.fields["time"] = terminal_proto.Field( terminal_proto.DATE_FIELD).FromStr(segs4[0]) # 日志时间 f.fields["type"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[1]) # 日志类型 if not self._fields.has_key("log_items"): self._fields["log_items"] = [] self._fields["log_items"].append(f)
def Parse(self, data): self._data = data segs = data.split("@") if len(segs) != 2: raise PacketException("Invalid upload station log req packet") # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) self._fields["station_locator_data"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[1][1:])
def Parse(self, data): #pdb.set_trace() self._data = data segs = data.split("@") if len(segs) != 2: raise PacketException("Invalid report health info request packet") # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) self._fields["command"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[1])
def Parse(self, data): self._data = data segs = data.split("@") if len(segs) != 2: raise PacketException("Invalid set params ack packet") # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) # 获取指令名 self._fields["command"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[1])
def Parse(self, data): #pdb.set_trace() self._data = data segs = data.split("@") if len(segs) != 2: raise PacketException("Invalid report health info request packet") # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) # 得到健康信息 segs3 = segs[1].split("#") if len(segs3) <= 0: raise PacketException("Invalid report health info request packet") for v in segs3: # 得到健康数据段类型 tp = terminal_proto.Field(terminal_proto.INTEGER_FIELD).FromStr( v[0:1]).Value() # 得到健康数据 if tp == 1: # 睡眠数据 tmp = terminal_proto.ComplexField() segs4 = v[2:].split(",") if len(segs4) != 3: raise PacketException( "Invalid report health info request packet") tmp.fields["begin_time"] = terminal_proto.Field( terminal_proto.DATE_FIELD).FromStr(segs4[0]) # 开始时间 # 得到总时间以秒位单位 totalTimeStr = segs4[1] tmp.fields["total_secs"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(totalTimeStr) tmp.fields["quality"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[2]) # 睡眠质量 if not self._fields.has_key("sleep_data"): self._fields["sleep_data"] = [] self._fields["sleep_data"].append(tmp) elif tp == 2: # 心率数据 tmp = terminal_proto.ComplexField() tmp.fields["begin_time"] = terminal_proto.Field( terminal_proto.DATE_FIELD).FromStr(v[2:16]) # 开始时间 tmp.fields["value"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(v[17:]) if not self._fields.has_key("heart_rate_data"): self._fields["heart_rate_data"] = [] self._fields["heart_rate_data"].append(tmp) else: raise PacketException( "Invalid report health info request packet")
def Parse(self, data): self._data = data segs = data.split("@") if len(segs) != 2: raise PacketException("Invalid heatbeat req packet") # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) if segs[1] != "Heart": raise PacketException("Invalid heatbeat req packet")
def Parse(self, data): self._data = data segs = data.split("@") if len(segs) != 2: raise PacketException("Invalid report terminal status req packet") # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) # 获取状态数据 segs3 = segs[1].split("%") if len(segs3) != 4: raise PacketException("Invalid report terminal status req packet") self._fields["iccid"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs3[0]) # SIM卡卡号 self._fields["hardware_version"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs3[1]) # 硬件版本 self._fields["software_version"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs3[2]) # 软件版本 self._fields["electric_quantity"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs3[3]) # 电量
def Parse(self, data): self._data = data segs = data.split("@") if len(segs) != 2: raise PacketException("Invalid upload station log req packet") # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) segs2 = segs[1][1:].split("#") if len(segs2) != 2: raise PacketException("Invalid upload station log req packet") segs3 = segs2[0].split(";") if len(segs3) != 2: raise PacketException("Invalid upload station log req packet") self._fields["station_locator_data"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs3[0]) self._fields["near_station_locator_data"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs3[1]) # 获取附加数据 segs4 = segs2[1].split(",") if len(segs4) != 5: raise PacketException( "Invalid report location info request packet") self._fields["status"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[0]) # 状态 self._fields["electric_quantity"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[1]) # 电量 self._fields["step_count"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[2]) # 步数 self._fields["distance"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[3]) # 距离 self._fields["calorie"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[4]) # 卡路里
def Parse(self, data): self._data = data pos = data.find("@") if pos == 0: raise PacketException( "Invalid report location info request packet") segs = [data[0:pos], data[pos + 1:]] # 获取imei self._fields["imei"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[0]) # 得到参数和附加参数列表 pos = segs[1].rfind("#") if pos == 0: raise PacketException( "Invalid report location info request packet") segs3 = [segs[1][0:pos], segs[1][pos + 1:]] # 获取定位状态 self._fields["locator_status"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs3[0][0:1]) # 获取定位数据 locatorInfo = LocationInfo() locatorInfo.Parse(segs3[0]) self._fields["location_info"] = locatorInfo # 获取附加数据 segs4 = segs3[1].split(",") if len(segs4) != 5: raise PacketException( "Invalid report location info request packet") self._fields["status"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[0]) # 状态 self._fields["electric_quantity"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[1]) # 电量 self._fields["step_count"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[2]) # 步数 self._fields["distance"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[3]) # 距离 self._fields["calorie"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs4[4]) # 卡路里
def Parse(self, data): self._data = data #协议格式: # 005,0#1#2#3#4#5#6#7#8#9#10#11 out_segs = data.split(",") if len(out_segs) != 2 or out_segs[0] != "005": raise CommandException("Invalid params command:", data) segs = out_segs[1].split("#") if len(segs) != 11: raise CommandException("Invalid params command:", data) self["report_time"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[0]).Value() self["add_friend"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[1]).Value() self["step_enable"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[2]).Value() self["profile"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[3]).Value() self["love"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[4]).Value() self["remote_alert"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[5]).Value() self["low_power"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[6]).Value() self["sos"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[7]).Value() self["take_off"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[8]).Value() self["gps_enable"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[9]).Value() self["step_target"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[10]).Value()
def Parse(self, data): self._data = "" segs = data.split(",") if len(segs) != 11 or segs[0] != "005": raise CommandException("Invalid params command") self.report_time = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[0]).Value() self.add_friend = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[1]).Value() self.step_enable = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[2]).Value() self.profile = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[3]).Value() self.love = terminal_proto.Field(terminal_proto.INTEGER_FIELD).FromStr( segs[4]).Value() self.remote_alert = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs[5]).Value() self.low_power = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[6]).Value() self.sos = terminal_proto.Field(terminal_proto.INTEGER_FIELD).FromStr( segs[7]).Value() self.take_off = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[8]).Value() self.gps_enable = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[9]).Value() self.step_target = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(segs[10]).Value()
def Parse(self, data): # 获取定位状态 self._data = data self.fields["locator_status"] = terminal_proto.Field( terminal_proto.INTEGER_FIELD).FromStr(data[0:1]) #print data #print self.locator_status # 获取定位数据 if self.locator_status == LOCATOR_STATUS_GPS: # GPS # 获取经度类型(E or W) self.fields["longitude_type"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(data[1:2]) # 获取经度 self.fields["longitude"] = terminal_proto.Field( terminal_proto.FLOAT_FIELD).FromStr(data[2:12]) # 获取维度类型(N or S) self.fields["latitude_type"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(data[12:13]) # 获取维度 self.fields["latitude"] = terminal_proto.Field( terminal_proto.FLOAT_FIELD).FromStr(data[13:22]) print data[23:37] # 获取定位时间 self.fields["locator_time"] = terminal_proto.Field( terminal_proto.DATE_FIELD).FromStr(data[23:37]) elif self.locator_status == LOCATOR_STATUS_STATION or self.locator_status == LOCATOR_STATUS_MIXED: # 获取基站或者混合定位数据 n = len(data) - 15 if n <= 0: raise PacketException("Invalid location info") #f = terminal_proto.Field(terminal_proto.STRING_FIELD).FromStr(data[ # 1:n + 1]) tmp = data[1:n] if self.locator_status == LOCATOR_STATUS_MIXED: pos = tmp.find("%") if pos == 0: raise PacketException("Invalid location mixed info") segs5 = [tmp[0:pos], tmp[pos + 1:]] #logging.info("tang seqs5 pos:%d#####%s#####%s" % # (pos, segs5, tmp)) self.fields["station_locator_data"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(segs5[0]) self.fields["mac"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr( change_unescape_ssid(segs5[1])) else: self.fields["station_locator_data"] = terminal_proto.Field( terminal_proto.STRING_FIELD).FromStr(tmp) self.fields["locator_time"] = terminal_proto.Field( terminal_proto.DATE_FIELD).FromStr(data[n + 1:14 + n + 1]) elif self.locator_status == LOCATOR_STATUS_FAILED: self.fields["locator_time"] = terminal_proto.Field( terminal_proto.DATE_FIELD).FromStr(data[2:16]) else: raise PacketException("Invalid location info")