diff --git a/爱牵挂/HA02-HA10/auth.md b/爱牵挂/HA02-HA10/auth.md new file mode 100755 index 0000000..c336d39 --- /dev/null +++ b/爱牵挂/HA02-HA10/auth.md @@ -0,0 +1,30 @@ +如果是post请求,把参数带到body里面,禁止写到URL后面。URL后面带参数的全是get请求。 (我们的测试服虽然get和post请求都可以使用,但是要是用规范,改post请求的时候必须post请求,并且把参数放到body下,不要放到URL后面。我们的正式服因为换过架构所以会更加规范,修改接口必须是post且放到body下进行请求) + + +# 登录 + +- 地址: /api/auth/login +- 方法: POST +- 响应对象: [person](./object.md#person) *简化* +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | ------------ | ---- | ------------ | ------------------------------ | + | username | 是 | string | 填用户名或手机号 | + | password | 是 | string | 填用户密码或短信密码 | + + +- 请求范例: + + curl -v -A CURL -d "username=demo&password=admin" -c cookies.txt http://127.0.0.1:8888/api/auth/login + +- 响应Cookie: + + Set-Cookie: user="2|1:0|10:1407508841|4:user|8:YWRtaW4=|19bf2a8edd510eca173cecff546c446e3d800ae34ca3649ec56a566d2386e0de"; expires=Sun, 07 Sep 2014 14:40:41 GMT; Path=/ + +- 响应范例: + + { + } + + diff --git a/爱牵挂/HA02-HA10/community.md b/爱牵挂/HA02-HA10/community.md new file mode 100755 index 0000000..2091fa9 --- /dev/null +++ b/爱牵挂/HA02-HA10/community.md @@ -0,0 +1,57 @@ +如果是post请求,把参数带到body里面,禁止写到URL后面。URL后面带参数的全是get请求。 (我们的测试服虽然get和post请求都可以使用,但是要是用规范,改post请求的时候必须post请求,并且把参数放到body下,不要放到URL后面。我们的正式服因为换过架构所以会更加规范,修改接口必须是post且放到body下进行请求) + + +社区信息 +======== + + + +# 查看社区内所有NB设备的设备号,IMEI号 +- 地址: /api/community/gethomedevicelist/ +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: 返回单个对象,如果对应的数据项有数据,则返回数据对象;如果没有则返回'{}' +- 权限要求: superuser/operator角色 或 社区成员 +- 响应对象: [Community](object.md#community) +- URL参数: device oid +- 请求参数: + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | communityid | 是 | string | 机构id | + +- 请求范例: + + curl -v -A CURL -b cookies.txt http://api.aiqiangua.com:8888/api/community/gethomedevicelist/?communityid=61a86a9b15f71628c6d11d95 + + > GET /api/community/gethomedevicelist/?communityid=61a86a9b15f71628c6d11d95 HTTP/1.1 + > User-Agent: CURL + > Host: api.aiqiangua.com:8888 + > Accept: */* + > Cookie: ""2|1:0|10:1502846059|4:user|8:YWRtaW4y|f92dad6929734b005ea153a4585f3c02ea9f7a70432a0410518df8a108030f7d"" +- 响应范例: + + { + "objs": [ + { + "name": "", + "power_type": 1, + "chip_temperature_statu": 1, + "heart_beat_time": "24", + "community_id": "61a86a9b15f71628c6d11d95", + "version": "V4.2.3_NBSOB", + "maze_statu": 1, + "imei": "861964046796186", + "iccid": "89861121241012317411", + "type": "HA07", + "circuit_statu": 1 + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 1, + "page_current": 1 + }, + "success": true, + "obj_name": "homedevice" +} \ No newline at end of file diff --git a/爱牵挂/HA02-HA10/pushdata.md b/爱牵挂/HA02-HA10/pushdata.md new file mode 100755 index 0000000..bbd7372 --- /dev/null +++ b/爱牵挂/HA02-HA10/pushdata.md @@ -0,0 +1,244 @@ +doc V1.1 + + +适用机型:HA02-HA09 + + +数据发送:用户按文档开发回调接口,交由爱牵挂,在设备产生相关数据时调用,POST请求表单提交数据。 + + +居家安全设备状态数据发送 + +- 地址: http://xxxxx/ +- 方法: post +- content-type:application/x-www-form-urlencoded +- 参数规范 + + | 名称 | 必须 | 类型 | 触发机型 | 说明 | + | ---------------------- | ---- | ------------ | --------- | -----------------------------------------------------| + | imei | 是 | String | all | 15位设备唯一序号 | + | data_type | 是 | String | all | devicestatus | + | date_str | 是 | String | all | 触发时间,YYYYmmDDHHMMSS | + | device_type | 否 | String | all | 机型;devicestatus时一定存在 | + | power_type | 否 | String | all | 电量状态; 1 正常,0 异常 devicestatus时一定存在 | + | version | 否 | String | all | 软件版本;devicestatus时一定存在 | + | nb_signal | 否 | String | all | nb基站信号强度;devicestatus时可能存在 | + | nb_cellid | 否 | String | all | nb基站cellid ;devicestatus时可能存在 | + | maze_statu | 否 | Int | HA02 | 迷宫状态,1正常 0异常;devicestatus时可能存在 | + | circuit_statu | 否 | Int | HA02 | 电路状态,1正常 0异常;devicestatus时可能存在 | + | chip_temperature_statu | 否 | Int | HA02 | 芯片温度状态,1正常 0异常;devicestatus时可能存在 | + | temperature | 否 | String | HA02 | 环境温度;devicestatus时可能存在 | + | people_in_area_statu | 否 | String | HA02 | 探测区域是否有人,1有人 0无人;devicestatus时可能存在 | + | door_statu | 否 | String | HA03 | 门状态,1打开 0关闭;devicestatus时一定存在 | + | water_immersion_statu | 否 | String | HA06 | 水浸状态,1有水 0无水;devicestatus时一定存在 | + | humidity | 否 | String | HA10 | 环境湿度 | + | battery_voltage | 否 | String | HA10 | 电池电压 | + | gas_lel | 否 | Int | HA10 | 燃气浓度(%) | + | theshold_temperature_h | 否 | Float | HA10 | 高温阈值 | + | theshold_temperature_l | 否 | Float | HA10 | 低温阈值 | + | theshold_humidity_h | 否 | Float | HA10 | 高湿阈值 | + | theshold_humidity_l | 否 | Float | HA10 | 低湿阈值 | + + +居家安全设备报警数据发送 + +- 地址: http://xxxxx/ +- 方法: post +- content-type:application/x-www-form-urlencoded +- 参数规范 + + | 名称 | 必须 | 类型 | 触发机型 | 说明 | + | ---------------------- | ---- | ------------ | --------- | -----------------------------------------------------| + | imei | 是 | String | all | 15位设备唯一序号 | + | date_str | 是 | String | all | 触发时间,YYYYmmDDHHMMSS | + | alarm_code | 否 | String | all | 报警编号,见报警编号列表;alarm时一定存在 | + | alarm_type | 否 | String | all | 报警类型,见报警编号列表;alarm时一定存在 | + | alarm_desc | 否 | String | all | 报警描述,见报警编号列表;alarm时一定存在 | + + + +机型列表 +HA02 烟感温度红外三合一报警器 +HA03 门磁感应器 +HA04 燃气报警器 +HA05 红外体感报警器 +HA06 水浸报警器 +HA07 一键呼叫按钮 +HA08 烟雾报警器 +HA09 一氧化碳报警 +HA10 温湿度传感器 + +报警编号列表 +device_type 为空表示目前机型暂不支持,后续新增可能支持; all表示全部机型触发 +'111': { + 'alarm_type': 'smoke_warn', + 'desc': u'烟雾报警', + 'device_type': ['HA02','HA08'], +}, +'384': { + 'alarm_type': 'low_power', + 'desc': u'低电提醒', + 'device_type': ['all'], +}, +'993': { + 'alarm_type': 'low_power', + 'desc': u'底座烟感低电警告', + 'device_type': [], +}, +'992': { + 'alarm_type': 'low_power', + 'desc': u'NB底座低电警告', + 'device_type': [], +}, +'991': { + 'alarm_type': 'gas_warn', + 'desc': u'燃气报警', + 'device_type': ['HA04'], +}, +'990': { + 'alarm_type': 'fire_warn', + 'desc': u'消防报警', + 'device_type': [], +}, +'989': { + 'alarm_type': 'door_open', + 'desc': u'门打开', + 'device_type': ['HA03'], +}, +'988': { + 'alarm_type': 'door_close', + 'desc': u'门关闭', + 'device_type': ['HA03'], +}, +'986': { + 'alarm_type': 'high_temp_env', + 'desc': u'高温报警', + 'device_type': ['HA02'], +}, +'985': { + 'alarm_type': 'leakage_warn', + 'desc': u'漏电报警', + 'device_type': [], +}, +'984': { + 'alarm_type': 'low_pressure', + 'desc': u'低压警告', + 'device_type': [], +}, +'981': { + 'alarm_type': 'offline', + 'desc': u'设备离线', + 'device_type': [], +}, +'969': { + 'alarm_type': 'water_immersion_warn', + 'desc': u'水浸警告', + 'device_type': ['HA06'], +}, +'966': { + 'alarm_type': 'shower_on', + 'desc': u'喷淋打开', + 'device_type': [], +}, +'965': { + 'alarm_type': 'shower_off', + 'desc': u'喷淋关闭', + 'device_type': [], +}, +'963': { + 'alarm_type': 'pull_down_warn', + 'desc': u'拆除报警', + 'device_type': ['HA02'], +}, +'962': { + 'alarm_type': 'normal', + 'desc': u'恢复正常', + 'device_type': ['HA02'], +}, +'960': { + 'alarm_type': 'alarm_test', + 'desc': u'报警测试', + 'device_type': ['all'], +}, +'122': { + 'alarm_type': 'sos', + 'desc': u'紧急呼叫', + 'device_type': [], +}, +'955': { + 'alarm_type': 'chip_temp_warn', + 'desc': u'芯片温度报警', + 'device_type': ['HA02'], +}, +'954': { + 'alarm_type': 'chip_temp_warn', + 'desc': u'温度短路报警', + 'device_type': ['HA02'], +}, +'953': { + 'alarm_type': 'chip_temp_warn', + 'desc': u'温度开路报警', + 'device_type': ['HA02'], +}, +'938': { + 'alarm_type': 'check_warn', + 'desc': u'自检故障1', + 'device_type': ['HA02'], +}, +'937': { + 'alarm_type': 'check_ok', + 'desc': u'自检正常', + 'device_type': ['HA02'], +}, +'936': { + 'alarm_type': 'power_on', + 'desc': u'设备开机', + 'device_type': ['ha02'], +}, +'935': { + 'alarm_type': 'human_out', + 'desc': u'探测区域已无人', + 'device_type': ['HA02'], +}, +'934': { + 'alarm_type': 'human_in', + 'desc': u'探测区域有人', + 'device_type': ['HA02'], +}, +'933': { + 'alarm_type': 'check_warn', + 'desc': u'自检错误2', + 'device_type': ['HA02'], +}, +'932': { + 'alarm_type': 'check_warn', + 'desc': u'自检错误3', + 'device_type': ['HA02'], +}, + +'1991': { + 'alarm_type': 'co_warn', + 'desc': u'一氧化碳报警', + 'device_type': ['HA09'], +}, +'1962': { + 'alarm_type': 'normal', + 'desc': u'一氧化碳恢复正常', + 'device_type': ['HA09'], +}, + +'1901': { + 'alarm_type': 'low_humidity', + 'desc': u'低湿报警', + 'device_type': ['HA10'], +}, +'1902': { + 'alarm_type': 'high_humidity', + 'desc': u'高湿报警', + 'device_type': ['HA10'], +}, +'1903': { + 'alarm_type': 'low_temp_env', + 'desc': u'低温报警', + 'device_type': ['HA10'], +}, \ No newline at end of file diff --git a/爱牵挂/HA02-HA10/对接说明.txt b/爱牵挂/HA02-HA10/对接说明.txt new file mode 100755 index 0000000..7fce109 --- /dev/null +++ b/爱牵挂/HA02-HA10/对接说明.txt @@ -0,0 +1 @@ +HA02~HA10目前仅开放数据分发文档,即回调文档。模式为用户按照文档要求开发API,交由爱牵挂技术人员进行配置,设备产生的相关数据由回调API实时分发到用户手中。后续会增加配置修改文档。 \ No newline at end of file diff --git a/爱牵挂/数据对接说明.doc b/爱牵挂/数据对接说明.doc new file mode 100644 index 0000000..b37d058 Binary files /dev/null and b/爱牵挂/数据对接说明.doc differ diff --git a/爱牵挂/爱牵挂M1对外API/auth.md b/爱牵挂/爱牵挂M1对外API/auth.md new file mode 100755 index 0000000..ba89e8e --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/auth.md @@ -0,0 +1,138 @@ +如果是post请求,把参数带到body里面,禁止写到URL后面。URL后面带参数的全是get请求。 (我们的测试服虽然get和post请求都可以使用,但是要是用规范,改post请求的时候必须post请求,并且把参数放到body下,不要放到URL后面。我们的正式服因为换过架构所以会更加规范,修改接口必须是post且放到body下进行请求) + +身份验证 +======== + + +# 登录 + +- 地址: /api/auth/login +- 方法: POST +- 响应对象: [person](./object.md#person) *简化* +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | ------------ | ---- | ------------ | ------------------------------ | + | username | 是 | string | 填用户名或手机号 | + | password | 是 | string | 填用户密码或短信密码 | + + + +- 请求范例: + + curl -v -A CURL -d "username=demo&password=admin" -c cookies.txt http://127.0.0.1:8888/api/auth/login + +- 响应Cookie: + + Set-Cookie: user="2|1:0|10:1407508841|4:user|8:YWRtaW4=|19bf2a8edd510eca173cecff546c446e3d800ae34ca3649ec56a566d2386e0de"; expires=Sun, 07 Sep 2014 14:40:41 GMT; Path=/ + +- 响应范例: +{ + "obj": { + "_id": { + "$oid": "5bda53d2264251367f5a4385" + }, + "username": "18838030850", + "nickname": "伟东", + "phone": "18838030850", + "devicetokens": [ + { + "token_type": "android", + "token": "1a0018970a2e98b8f46", + "push_server": "jiguang", + "app": "aiqiangua2.0", + "is_enable_aliase": false, + "created_at": { + "$date": 1596816909955 + } + }, + { + "token_type": "android", + "token": "100d8559094809f80ca", + "push_server": "jiguang", + "uuid": "aiqiangua2.0|74ef4ed806e282ac", + "app": "aiqiangua2.0", + "brand": "motorola", + "phone_type": "xt1079", + "system_version": "21", + "is_enable_aliase": false, + "created_at": { + "$date": 1599846173229 + } + }, + { + "token_type": "ios", + "token": "191e35f7e029c78a600", + "push_server": "jiguang", + "uuid": "aiqiangua2.0|DBB4C34C-46F1-407C-B0B4-265FB438E3CF", + "app": "aiqiangua2.0", + "brand": "apple", + "phone_type": "iPhone12,5", + "system_version": "13.6.1", + "is_enable_aliase": false, + "created_at": { + "$date": 1603189431007 + } + }, + { + "token_type": "ios", + "token": "121c83f7604cef30bbb", + "push_server": "jiguang", + "uuid": "aiqiangua2.0|8F945CF7-31E5-4631-A93C-8B1A8F867C37", + "app": "aiqiangua2.0", + "brand": "apple", + "phone_type": "iPhone 5c (GSM)", + "system_version": "10.3.3", + "is_enable_aliase": false, + "created_at": { + "$date": 1603290768443 + } + } + ], + "weight": 80, + "height": 166, + "birthday": "2006-11-01", + "avatar": "18838030850.png", + "avatar_url": "/media/avatar/200/18838030850.jpg", + "community": { + "$oid": "5bed061726425171d55ab8a7" + }, + "gender": "male", + "address": "科学城", + "location_enable": true, + "care_code": "32434385", + "devices": [], + "groups": [ + { + "$oid": "5dc3cc002642513d1356da38" + }, + { + "$oid": "5bdc212e26425136804939f0" + }, + { + "$oid": "5cd902d626425177be24be3e" + }, + { + "$oid": "5d52182c264251738f99f4ef" + }, + { + "$oid": "5dcbc4e92642513d1356db10" + }, + { + "$oid": "5f584f4c2642511f21c77c9f" + }, + { + "$oid": "5f12c3762642517d70510f7d" + }, + { + "$oid": "5f8eae282642510b4bd152f2" + } + ], + "bluetoothdevices": [], + "sleepdevices": [ + "d069e6fae982" + ] + }, + "success": true, + "obj_name": "person" +} \ No newline at end of file diff --git a/爱牵挂/爱牵挂M1对外API/community.md b/爱牵挂/爱牵挂M1对外API/community.md new file mode 100755 index 0000000..65c5b69 --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/community.md @@ -0,0 +1,165 @@ +如果是post请求,把参数带到body里面,禁止写到URL后面。URL后面带参数的全是get请求。 (我们的测试服虽然get和post请求都可以使用,但是要是用规范,改post请求的时候必须post请求,并且把参数放到body下,不要放到URL后面。我们的正式服因为换过架构所以会更加规范,修改接口必须是post且放到body下进行请求) + + +社区信息 +======== + + + +## 查看社区信息 + +- 地址: /api/community/[community id] +- 方法: GET +- 验证方法: Cookie: user +- 权限要求: superuser/operator角色 或 社区成员 +- 响应对象: [Community](object.md#community) +- 请求范例 + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8000/api/community/54a38233bf483c6ddfec4b79 + +- 响应范例 + +{ + "obj":{ + "_id":{ + "$oid":"54a38233bf483c6ddfec4b79" + }, + "name":"测试社区", + "email":"test@test.com", + "telephone":"13399999999", + "administrators":[ + { + "$oid":"53f722d5bf483c5bd03d0a80" + } + ], + "sos_url":"http://test.aiqiangua.com/12349xzOrgan/api/sos/happenSOSAction.do?", + "location_url":"", + "sosdata_url":"", + "heartratedata_url":"", + "pedometerdata_url":"", + "sleepdata_url":"", + "powerdata_url":"", + "falldata_url":"", + "token":"", + "created_at":{ + "$date":1420030643432 + }, + "$administrators":[ + { + "_id":{ + "$oid":"53f722d5bf483c5bd03d0a80" + }, + "username":"user01", + "password":"d5a99288b270b6c1989975fdb352425913c45e1640b35473ef9370fc", + "email":"user01@abc.com", + "nickname":"管理员", + "phone":"12345612349", + "telephone":"020-183849339", + "app":"aiqiangua2.0", + "devicetokens":[ + + ], + "weight":65, + "step":60, + "age":50, + "height":175, + "avatar":"user01.tmp", + "avatar_url":"/media/avatar/200/user01.jpg", + "community":{ + "$oid":"54a38233bf483c6ddfec4b79" + }, + "role":"user", + "gender":"male", + "address":"广州", + "created_at":{ + "$date":1408734037917 + }, + "updated_at":{ + "$date":1408734037913 + }, + "lastlogin_ip":"183.61.80.249", + "lastlogin_at":{ + "$date":1473846870019 + }, + "lastlogin_by":"Java/1.6.0_25", + "enable":true, + "email_is_checked":false, + "phone_is_checked":false, + "push_sos_enable":false, + "push_fence_enable":false, + "push_abnormal_enable":false, + "push_message_enable":false, + "push_lowpower_enable":false, + "push_system_enable":false, + "push_fall_enable":true, + "push_env_enable":true, + "auth_updated_at":{ + "$date":1473846882861 + }, + "is_device_owner":false, + "devices":[ + "868219000223161" + ], + "groups":[ + { + "$oid":"579e0267264251061974b349" + } + ] + } + ] + }, + "success":true, + "obj_name":"community" +} + + + + +# 查看社区内所有设备设备号,昵称,在线状态、地址以及位置点 +- 地址: /api/community/community id/devicesloc/ +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: 返回单个对象,如果对应的数据项有数据,则返回数据对象;如果没有则返回'{}' +- 权限要求: superuser/operator角色 或 社区成员 +- 响应对象: [Community](object.md#community) +- URL参数: device oid +- 请求参数: + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | cid | 是 | string | 机构id | + +- 请求范例: + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8888/api/community/59718dfa264251292a48b5c2/devicesloc/ + + > GET /api/community/59718dfa264251292a48b5c2/devicesloc/ HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: ""2|1:0|10:1502846059|4:user|8:YWRtaW4y|f92dad6929734b005ea153a4585f3c02ea9f7a70432a0410518df8a108030f7d"" +- 响应范例: + + { + "objs": [ + { + "point": { + "type": "Point", + "coordinates": [ + 113.4560004, + 23.1663146 + ] + }, + "online": true, + "date": { + "$date": 1502901949303 + }, + "address": "广东省 广州市 黄埔区 育星路 靠近广州科学城创新大厦C2", + "imei": "869426020070147", + "nickname": "二踢脚" + } + ], + "page": "", + "success": true, + "obj_name": "devices_location" + } + diff --git a/爱牵挂/爱牵挂M1对外API/device.md b/爱牵挂/爱牵挂M1对外API/device.md new file mode 100755 index 0000000..9f851fe --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/device.md @@ -0,0 +1,1854 @@ +如果是post请求,把参数带到body里面,禁止写到URL后面。URL后面带参数的全是get请求。 (我们的测试服虽然get和post请求都可以使用,但是要是用规范,改post请求的时候必须post请求,并且把参数放到body下,不要放到URL后面。我们的正式服因为换过架构所以会更加规范,修改接口必须是post且放到body下进行请求) + + +设备信息 +======== + + + +# 查看指定设备 + +- 地址: /api/device/[device id] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [device](./object.md#device) +- URL参数: device id +- 请求范例__ + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8000/api/device/868219000099926 + +- 响应范例 + { + "obj": { + "_id": "866815030630127", + "alerts": [ + { + "seqid": 1, + "enable": true, + "voice_type": "0", + "reply_enable": false, + "name": "运动", + "alert_type": 1, + "cycle": 2, + "time": "20201021102800", + "media_length": 4966, + "file_checksum": 0, + "filename": "1.amr", + "url": "/media/alerts/866815030630127/1.amr", + "created_at": { + "$date": 1603275642000 + } + }, + { + "seqid": 2, + "enable": true, + "voice_type": "0", + "reply_enable": true, + "name": "糖尿病药", + "alert_type": 1, + "cycle": 2, + "time": "20201021143928", + "media_length": 5798, + "file_checksum": 0, + "filename": "2.amr", + "url": "/media/alerts/866815030630127/2.amr" + }, + { + "seqid": 3, + "enable": false, + "voice_type": "", + "reply_enable": false, + "name": "", + "alert_type": 1, + "cycle": 1, + "time": "", + "media_length": 0, + "file_checksum": 0 + }, + { + "seqid": 4, + "enable": false, + "voice_type": "", + "reply_enable": false, + "name": "", + "alert_type": 1, + "cycle": 1, + "time": "", + "media_length": 0, + "file_checksum": 0 + }, + { + "seqid": 5, + "enable": false, + "voice_type": "", + "reply_enable": false, + "name": "", + "alert_type": 1, + "cycle": 1, + "time": "", + "media_length": 0, + "file_checksum": 0 + }, + { + "seqid": 6, + "enable": false, + "voice_type": "", + "reply_enable": false, + "name": "", + "alert_type": 1, + "cycle": 1, + "time": "", + "media_length": 0, + "file_checksum": 0 + }, + { + "seqid": 7, + "enable": false, + "voice_type": "", + "reply_enable": false, + "name": "", + "alert_type": 1, + "cycle": 1, + "time": "", + "media_length": 0, + "file_checksum": 0 + }, + { + "seqid": 8, + "enable": false, + "voice_type": "", + "reply_enable": false, + "name": "", + "alert_type": 1, + "cycle": 1, + "time": "", + "media_length": 0, + "file_checksum": 0 + }, + { + "seqid": 9, + "enable": false, + "voice_type": "", + "reply_enable": false, + "name": "", + "alert_type": 1, + "cycle": 1, + "time": "", + "media_length": 0, + "file_checksum": 0 + }, + { + "seqid": 10, + "enable": false, + "voice_type": "", + "reply_enable": false, + "name": "", + "alert_type": 1, + "cycle": 1, + "time": "", + "media_length": 0, + "file_checksum": 0 + } + ], + "sos_numbers": [ + { + "seqid": 1, + "name": "陈文声", + "num": "+8618302075248", + "dial_flag": true + }, + { + "seqid": 2, + "name": "", + "num": "", + "dial_flag": false + }, + { + "seqid": 3, + "name": "", + "num": "", + "dial_flag": false + }, + { + "seqid": 4, + "name": "", + "num": "", + "dial_flag": false + }, + { + "seqid": 5, + "name": "", + "num": "", + "dial_flag": false + }, + { + "seqid": 6, + "name": "", + "num": "", + "dial_flag": false + }, + { + "seqid": 7, + "name": "", + "num": "", + "dial_flag": false + }, + { + "seqid": 8, + "name": "", + "num": "", + "dial_flag": false + }, + { + "seqid": 9, + "name": "", + "num": "", + "dial_flag": false + }, + { + "seqid": 10, + "name": "", + "num": "", + "dial_flag": false + } + ], + "tool_numbers": [ + { + "seqid": 1, + "name": "", + "num": "" + }, + { + "seqid": 2, + "name": "", + "num": "" + }, + { + "seqid": 3, + "name": "", + "num": "" + }, + { + "seqid": 4, + "name": "", + "num": "" + }, + { + "seqid": 5, + "name": "", + "num": "" + } + ], + "sos_dial_cycle_times": 1, + "sos_sendmail": false, + "sos_readmail": false, + "frequency_location": 5, + "frequency_step": 30, + "frequency_heartrate": 30, + "theshold_heartrate_h": 140, + "theshold_heartrate_l": 40, + "heartrate_enable": true, + "incoming_restriction": false, + "bluetooth_enable": false, + "bluetooth_devices": "", + "profile": 3, + "sleep_period_begin": "00000000220000", + "sleep_period_end": "00000000060000", + "step_objective": 5000, + "theshold_sit": 60, + "theshold_low_battery": 15, + "fall_enable": false, + "fall_model": 0, + "fences": [ + { + "seqid": 1, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 2, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 3, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 4, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 5, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 6, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 7, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 8, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 9, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 10, + "freq": true, + "enable": false, + "name": "", + "time_begin": 0, + "time_end": 0 + } + ], + "pedometer_enable": true, + "sleep_enable": true, + "service_number": "", + "sos_dial_cycle_mode": 0, + "track_enable": true, + "power_down_enable": false, + "home_wifi_addr": "", + "home_wifi_ssid": "", + "systolic_pressure": 70, + "diastolic_pressure": 120, + "short_message_enable": true, + "callmode": 0, + "dormancy_enable": false, + "time_system": 0, + "lang": 1, + "timezone": 8, + "dnds": [ + { + "seqid": 1, + "cycle": 0, + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 2, + "cycle": 0, + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 3, + "cycle": 0, + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 4, + "cycle": 0, + "time_begin": 0, + "time_end": 0 + }, + { + "seqid": 5, + "cycle": 0, + "time_begin": 0, + "time_end": 0 + } + ], + "udtime_begin": 21600, + "udtime_end": 79200, + "frequency_sedentary": 0, + "frequency_temperature": 60, + "temperature_enable": false, + "theshold_temperature_h": 37.3, + "theshold_temperature_l": 35.0, + "gps_enable": false, + "bloodpressure_enable": true, + "bloodoxygen_enable": true, + "alertreply_enable": true, + "theshold_bloodoxygen_h": 99, + "theshold_bloodoxygen_l": 93, + "wifi_connect_enable": true, + "imei": "866815030630127", + "imsi": "", + "type": "X1", + "sim_phone": "18838030850", + "sim_phone_type": "cmcc", + "owner": { + "$oid": "5f8eae282642510b4bd152f5" + }, + "name": "X1-27", + "created_at": { + "$date": 1603204993802 + }, + "updated_at": { + "$date": 1603292773883 + }, + "lastlogin_ip": "112.96.164.159", + "lastlogin_at": { + "$date": 1603292773883 + }, + "active": true, + "active_at": { + "$date": 1603211828000 + }, + "end_at": { + "$date": 1634688000000 + }, + "online": true, + "statu": "", + "location_updated": true, + "location_updated_at": { + "$date": 1603291252342 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4566648, + 23.1672477 + ] + }, + "last_city": "广州市", + "city_code": "440112", + "last_province": "广东省", + "last_address": "广东省 广州市 黄埔区 观虹路 靠近平安银行(广州科学城科技支行)", + "home_location": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + }, + "home_address": "", + "location_action_updated_at": { + "$date": 1603279712656 + }, + "wear_flag": 1, + "wear_updated_at": { + "$date": 1603288817931 + }, + "remaining_power": 48, + "remaining_power_updated_at": { + "$date": 1603292773898 + }, + "wifi": [], + "software_version": "ZW001_X1_v008_20201014", + "iccid2": "460078488212074", + "systolic_pressure_h": 140, + "diastolic_pressure_l": 60, + "last_server": "172.18.14.123", + "video_id": "866815030630127", + "connecting_wifi": "", + "network_type": "1" + }, + "success": true, + "obj_name": "device" +} + + + +# 修改设备 --M1 + +- 地址: /api/device/[device oid]/4g/edit/ +- 方法: POST +- 验证方法: Cookie: user +- 响应对象: [device](./object.md#device) +- URL参数: device oid +- 请求参数: [device](./object.md#device) + +__请求范例__ + + curl -v -A CURL -b cookies.txt -d "name=ABC" http://127.0.0.1:8000/api/device/868219000099926/4g/edit?step_objective=2000 + + > POST /api/device/868219000099926/edit?step_objective=2000 HTTP/1.1 + > User-Agent: CURL + > Host: 120.24.56.48:8889 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" + > Content-Length: 8 + > Content-Type: application/x-www-form-urlencoded + +__响应范例__ + + + { + "success": true + } + + +# 设置提醒 +报语音提醒的时候会上传答复数据,且和普通语音提醒共数量和编号。 答复开关是在修改配置参数(alertreply_enable),默认是打开的 +#语音播报是按任何键会结束提醒,上传答复数据是已处理 +#语音播报超过3分钟没有按任何按键,上传的答复数据是未处理。 + +- 地址: /api/device/[device oid])/4g/alerts/[alert id: 1-5]/ +- 方法: POST +- 验证方法: Cookie: user +- 响应对象: 无 +- URL参数: device oid +- URL参数: alert id(1-5) +- 请求参数: 至少设置一个参数 + + | 名称 | 必须 | 类型 | 说明 | + | ------------ | ---- | ------------ | ------------------------------ | + | enable | 否 | Int | 0,1 | + | name | 否 | String | | + | alert_type | 否 | Int | 提醒类型 0 重复 1 仅一次 | + | cycle | 否 | Int | 周期 1 以星期为周期 2 以日期为周期 | + | time | 否 | String | time 预定的响铃时间:1、 cycle=1时,实例:1001101+21+30+ + 表示从周日、周一……周六的七天,响铃的那天为1,不响为0,时间是21点30分。 + 2、 cycle=2时,时间为YYYYMMDDHHmmSS,实例 20150313213000 (time的长度固定为14) | + + | reply_enable | 否 | int | 答复类型 (传0是未反馈预警开关没有打开;传1是未反馈预警开关已打开) | + + | upfile | 否 | multipart | amr文件 | + | clear | 否 | any | 如果指定clear参数,则上述参数全部无意义,全部重设为缺省值 | +- 请求范例 + + curl -v -A CURL -d 'name=1' -b cookies.txt + http://127.0.0.1:8000/api/device/868219000099926/4g/alerts/1?name=1 + +- 响应范例 + + { + "success": true + } + + + + + + +# 设置亲情号码 + +- 地址: /api/device/[device oid]/4g/sos_numbers/[id: 1-10]/ +- 方法: POST +- 验证方法: Cookie: user +- 响应对象: 无 +- URL参数: device oid +- URL参数: id(1-10) +- 请求参数: 至少设置一个参数 + + | 名称 | 必须 | 类型 | 说明 | + | ------------ | ---- | ------------ | ------------------------------ | + | name | 否 | String | 号码昵称 | + | num | 否 | String | 亲情号码,可以是手机或固话 | + | dial_flag | 否 | Int | 0不设置为紧急呼叫号码,1设置为紧急呼叫号码 | + | clear | 否 | any | 清空设置,[例如id值为2,如果发送的url带clear,系统只处理clear命令,则上述设置的亲情号2的参数无效,若该设备以前存有亲情号码2,则以前设置的亲情号码2也会被清空] | + + +- 请求范例 + + curl -v -A CURL -d 'name=1' -b cookies.txt + http://127.0.0.1:8000/api/device/868219000099926/4g/sos_numbers/1?name=1 + +- 响应范例 + + { + "success": true + } + +# 设置安全区域 + +- 地址: /api/device/[device oid])/4g/fences/[id: 1-10]/ +- 方法: POST +- 验证方法: Cookie: user +- 响应对象: 无 +- URL参数: device oid +- URL参数: id(1-10) +- 请求参数: 至少设置一个参数(注:设置安全围栏时,最好设置全部的参数,除了参数clear外,该参数是用于清空设置的。修改安全围栏也是调用这个接口) + + | 名称 | 必须 | 类型 | 说明 | + | ------------ | ---- | ------------ | ------------------------------ | + | enable | 否 | Int | 0,1 | + | name | 否 | String | | + | freq | 否 | Boolean | 0,触发一天;1,每日触发 | + | time_begin | 否 | Int | 目标时间与当日0点之间相差的秒数。如8 a.m 8*60*60=28800 | + | time_end | 否 | Int | 同上 | + | safe_area | 否 | String | 经度在前纬度在后 x1,y1;x2,y2;xn,yn 一组由';'分隔的坐标,坐标用','分隔。且需要呈闭环,如A,B,C,D4个点,则应该上传的数据为 A;B;C;D;A | + | clear | 否 | any | 如果指定clear参数,则上述参数全部无意义,全部重设为缺省值 | + +- 请求范例 + + curl -v -A CURL -d 'name=1' -b cookies.txt + http://127.0.0.1:8000/api/device/868219000099926/4g/fences/1?name=1 + +- 响应范例 + + { + "success": true + } + + + + +# 在线设备操作 + +合法的action如下: + + | action | 说明 | + | --------------- | ------------------------------ | + | ring | 响铃 | + | restart | 重启 | + | restore | 恢复出厂 | + | get_envvoice | 获取环境录音 | 无 | DeviceEnvVoice | 录音成功以后,如果配置有对应的分发提醒,会触发| + + + +- 地址: /api/device/[device oid]/4g/action/[action] +- 方法: POST +- 验证方法: Cookie: user +- 响应对象: 无 +- URL参数: device oid + + +# 获取在线设备实时数据 +合法的action如下: + + | action | 说明 | 参数及类型 | 返回对象 | + | ---------------------- | ------------- | ---------- | --------- | + | get_locationdataonce | 获取实时位置 | 无 | 无 | 30秒 (只能发一条定位数据) + | get_heartrate | 获取心率数据 | 无 | HeartRateData | 1分后上服务器取数据 | + + + +- 地址: /api/device/[device oid]/4g/action/[action] +- 方法: POST +- 验证方法: Cookie: user +- 响应对象: 无 +- URL参数: device oid +- 请求范例: + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8000/api/device/868219000099926/4g/action/get_locationdataonce + +- 响应范例: + + { + "success": true + } + + + + + + +# 查看设备开关机数据 +- 地址: /api/powerdata/?device=[device oid] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [powerdata](./object.md#powerdata) +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device | 是 | string | 15位设备唯一序号 | + | time_begin | 否 | string | YYYYMMDD,查询指定日期的数据 | + | type | 否 | string | 0,1,2,3 | + 0(开机),1(关机),2(正常电量显示),3(低电) | + +__请求范例__ + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8000/api/powerdata/?device=868219000099926&depth=1 + + > GET /api/powerdata/?device=868219000099926 HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" + +__响应范例__ + + +{ + "objs": [ + { + "_id": { + "$oid": "5f8fdb442642510b539b4b8d" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603292100907 + }, + "time_begin": { + "$date": 1603292100907 + }, + "type": "2", + "remaining_power": 48, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8fccd42642510b539b4afc" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603288404958 + }, + "time_begin": { + "$date": 1603288404958 + }, + "type": "2", + "remaining_power": 52, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8fb0cf2642510b539b4a64" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603281231509 + }, + "time_begin": { + "$date": 1603281231509 + }, + "type": "0", + "remaining_power": 57, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8f95f52642510b539b49e8" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603274357861 + }, + "time_begin": { + "$date": 1603274357861 + }, + "type": "0", + "remaining_power": 62, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8f93722642510b539b49dd" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603273714883 + }, + "time_begin": { + "$date": 1603273714883 + }, + "type": "0", + "remaining_power": 63, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8f8fdd2642510b539b49ca" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603272797654 + }, + "time_begin": { + "$date": 1603272797654 + }, + "type": "0", + "remaining_power": 64, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8f877b2642510b539b49b7" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603270651332 + }, + "time_begin": { + "$date": 1603270651332 + }, + "type": "2", + "remaining_power": 64, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8f796a2642510b539b498f" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603267050455 + }, + "time_begin": { + "$date": 1603267050455 + }, + "type": "2", + "remaining_power": 66, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8ede942642510b539b47b1" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603227412840 + }, + "time_begin": { + "$date": 1603227412840 + }, + "type": "2", + "remaining_power": 89, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8ed0822642510b539b4763" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603223810543 + }, + "time_begin": { + "$date": 1603223810543 + }, + "type": "2", + "remaining_power": 91, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8ec2572642510b539b4725" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603220183403 + }, + "time_begin": { + "$date": 1603220183403 + }, + "type": "2", + "remaining_power": 93, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8eb44e2642510b539b46f4" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603216590664 + }, + "time_begin": { + "$date": 1603216590664 + }, + "type": "0", + "remaining_power": 95, + "charging_statu": "0" + }, + { + "_id": { + "$oid": "5f8eb08b2642510b539b46df" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603215627898 + }, + "time_begin": { + "$date": 1603215627898 + }, + "type": "1", + "remaining_power": 95, + "charging_statu": "0" + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 13, + "page_current": 1 + }, + "success": true, + "obj_name": "powerdata" +} + + +# 查看设备定位数据 + +- 地址: /api/locationdata/?device=[device oid] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [locationdata](./object.md#locationdata) +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device | 是 | string | 15位设备唯一序号 | + | time_begin | 否 | string | YYYYMMDD,查询指定日期的数据 | + +__请求范例__ + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8000/api/locationdata/?device=868219000099926&depth=1&rows_per_page=1 + + > GET /api/locationdata/?device=868219000099926 HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" + +__响应范例__ + +{ + "objs": [ + { + "_id": { + "$oid": "5f8fd2ff2642510b539b4b3e" + }, + "device": "866815111111111", + "created_at": { + "$date": 1603289983968 + }, + "time_begin": { + "$date": 1603289983000 + }, + "type": "1", + "is_reply": false, + "is_track": false, + "statu": "", + "city": "广州市", + "city_code": "440112", + "address": "广东省 广州市 黄埔区 育星路 靠近创新大厦C1", + "point": { + "type": "Point", + "coordinates": [ + 113.4570717, + 23.1667421 + ] + }, + "cell": [ + { + "mcc": "460", + "mnc": "1", + "lac": 9939, + "cid": 112479499, + "rssi": -85 + } + ], + "wifi": [ + { + "addr": "48:3f:e9:a0:a9:85", + "ssid": "feng", + "rssi": -74 + }, + { + "addr": "d4:f7:86:3f:c1:bd", + "ssid": "ChinaNet-9fwj", + "rssi": -73 + }, + { + "addr": "28:c6:8e:39:03:c7", + "ssid": "BAIYI0001", + "rssi": -80 + }, + { + "addr": "2a:c6:8e:39:03:c8", + "ssid": "NETGEAR-Guest", + "rssi": -81 + } + ] + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 1, + "page_current": 1 + }, + "success": true, + "obj_name": "locationdata" +} + +#批量获取设备在离线状态 +- 地址: api/community/[community id]/devicesloc_new +- 方法: GET +- 验证方法: Cookie: user +- URL参数: [community id] +- 输出参数:intro文档下 ## 分页参数 +- 请求范例__ + + curl -v -A CURL -b cookies.txt http://api.aiqiangua.com:8888/api/community/59c8ca7a54625923636d5ea4/devicesloc_new/?rows_per_page=20&page=1 + +- 响应范例 +{ + "online_numbers": 1, + "objs": [ + { + "_id": "868219000352358", + "type": "S5", + "sim_phone": "", + "owner": { + "$oid": "5cf0a36d89d44675cb4ba2a9" + }, + "name": "S5", + "active": false, + "online": true, + "location_updated_at": { + "$date": 1563448634197 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4570337, + 23.1667234 + ] + }, + "last_address": "广东省 广州市 黄埔区 观虹路 靠近创新大厦C1", + "wear_flag": 0, + "remaining_power": 95 + }, + { + "_id": "868995032925804", + "type": "SHIJIE_GPRS_BP", + "sim_phone": "", + "owner": { + "$oid": "5d19a6e84ee47949cb0c28d2" + }, + "name": "血压计", + "active": false, + "online": false, + "location_updated_at": { + "$date": 28800000 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + }, + "last_address": "", + "remaining_power": 0 + }, + { + "_id": "868995032935688", + "type": "BY102", + "sim_phone": "", + "owner": { + "$oid": "5cc29baa89d4464e9de8d969" + }, + "name": "", + "active": false, + "online": false, + "location_updated_at": { + "$date": 28800000 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + }, + "last_address": "", + "remaining_power": 0 + }, + { + "_id": "866801040011870", + "type": "S5", + "sim_phone": "", + "owner": { + "$oid": "5c9480aa89d44635e6e9c308" + }, + "name": "S5", + "active": false, + "online": false, + "location_updated_at": { + "$date": 1559556325638 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4570166, + 23.1667277 + ] + }, + "last_address": "广东省 广州市 黄埔区 观虹路 靠近广州保利假日酒店", + "wear_flag": 1, + "remaining_power": 83 + }, + { + "_id": "868219000457736", + "type": "S1", + "sim_phone": "", + "owner": { + "$oid": "5be8d38fba2d126d0c50b8a5" + }, + "name": "黄手环", + "active": false, + "online": false, + "location_updated_at": { + "$date": 1562920103195 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4570256, + 23.1667244 + ] + }, + "last_address": "广东省 广州市 黄埔区 观虹路 靠近创新大厦C1", + "remaining_power": 0 + }, + { + "_id": "868219000352150", + "type": "S5", + "sim_phone": "", + "owner": { + "$oid": "5bcee694ba2d121f3b50df9d" + }, + "name": "S5 01", + "active": true, + "online": false, + "location_updated_at": { + "$date": 1542126743878 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4570133, + 23.1667196 + ] + }, + "last_address": "广东省 广州市 黄埔区 育星路 靠近广州保利假日酒店", + "wear_flag": 0, + "remaining_power": 100 + }, + { + "_id": "868219000352325", + "type": "S5", + "sim_phone": "", + "owner": { + "$oid": "5c876b9989d446468c6b63fb" + }, + "name": "S5白", + "active": false, + "online": false, + "location_updated_at": { + "$date": 1553891667845 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4566862, + 23.1671685 + ] + }, + "last_address": "广东省 广州市 黄埔区 观虹路 靠近平安银行(广州科学城科技支行)", + "wear_flag": 0, + "remaining_power": 0 + }, + { + "_id": "869426021093635", + "type": "BY007", + "sim_phone": "12345678909", + "owner": { + "$oid": "5b51af7eba2d12021e7e1c3d" + }, + "name": "曲奇", + "active": false, + "online": false, + "location_updated_at": { + "$date": 1562773306360 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4555037, + 23.1664366 + ] + }, + "last_address": "广东省 广州市 黄埔区 育星路 靠近广州科学城创新大厦C3", + "remaining_power": 100 + }, + { + "_id": "868219000663366", + "type": "BY102", + "sim_phone": "", + "owner": { + "$oid": "5b518f65ba2d12022b67842c" + }, + "name": "S2", + "active": false, + "online": false, + "location_updated_at": { + "$date": 1543509496371 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4570044, + 23.1667079 + ] + }, + "last_address": "广东省 广州市 黄埔区 育星路 靠近广州保利假日酒店", + "wear_flag": 1, + "remaining_power": 22 + }, + { + "_id": "866815030129575", + "type": "S3", + "sim_phone": "17223528845", + "owner": { + "$oid": "5bdac342ba2d124dbb9f5dcf" + }, + "name": "S3", + "active": false, + "online": false, + "location_updated_at": { + "$date": 1544134530254 + }, + "last_location": { + "type": "Point", + "coordinates": [ + 113.4570245, + 23.1667231 + ] + }, + "last_address": "广东省 广州市 黄埔区 育星路 靠近广州保利假日酒店", + "wear_flag": 1, + "remaining_power": 0 + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 10, + "page_current": 1 + }, + "success": true, + "obj_name": "devices_location" +} + + + + +# 查看设备运动数据 + +- 地址: /api/pedometerdata/?device=[device oid] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [pedometerdata](./object.md#pedometerdata) +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device | 是 | string | 15位设备唯一序号 | + | time_begin | 否 | string | YYYYMMDD,查询指定日期的数据 | + +__请求范例__ + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8888/api/pedometerdata/?device=868219000099926 + + > GET /api/pedometerdata/?device=868219000099926 HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" + +__响应范例__ +{ + "objs": [ + { + "_id": { + "$oid": "5f8fdaf82642510b539b4b8c" + }, + "device": "866815111111111", + "created_at": { + "$date": 1603292024556 + }, + "time_begin": { + "$date": 1603292023000 + }, + "value": 0, + "difference": 0, + "calorie": 0.0 + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 1, + "page_current": 1 + }, + "success": true, + "obj_name": "pedometerdata" +} + + +# 查看设备心率数据 + +- 地址: /api/heartratedata/?device=[device oid] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [heartratedata](./object.md#heartratedata) +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device | 是 | string | 15位设备唯一序号 | + | time_begin | 否 | string | YYYYMMDD,查询指定日期的数据 | + +__请求范例__ + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8888/api/heartratedata/?device=868219000099926&depth=1 + + > GET /api/heartratedata/?device=868219000099926 HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" + +__响应范例__ + { + "objs": [ + { + "_id": { + "$oid": "5f8fe3f62642510b539b4bd7" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603294326391 + }, + "time_begin": { + "$date": 1603294325000 + }, + "heartrate": 65, + "measure_type": 0 + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 1, + "page_current": 1 + }, + "success": true, + "obj_name": "heartratedata" +} + + + + + + + + +# 查看设备答复数据 + +- 地址: /api/replydata/?device=[device oid] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [replydata](./object.md#replydata) +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device | 是 | string | 15位设备唯一序号 | + | time_begin | 否 | string | YYYYMMDD,查询指定日期的数据 | + +- 请求范例 + curl -v -A CURL -b cookies.txt 'http://127.0.0.1:8888/api/replydata/?device=868219000099926 + + > GET /api/replydata/?device=868219000099926 HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" + +__响应范例__ + +{ + "objs": [ + { + "_id": { + "$oid": "5f8fdece2642510b539b4baa" + }, + "device": "866815030630127", + "time_begin": { + "$date": 1603293006687 + }, + "reply_type": 1, + "alert_name": "糖尿病药", + "result": 0, + "created_at": { + "$date": 1603293006687 + } + }, + { + "_id": { + "$oid": "5f8f9cbc2642510b539b4a08" + }, + "device": "866815030630127", + "time_begin": { + "$date": 1603276092730 + }, + "reply_type": 1, + "alert_name": "运动", + "result": 1, + "created_at": { + "$date": 1603276092730 + } + }, + { + "_id": { + "$oid": "5f8ea3922642510a610700c5" + }, + "device": "866815030630127", + "time_begin": { + "$date": 1603212306297 + }, + "reply_type": 1, + "alert_name": "运动", + "result": 1, + "created_at": { + "$date": 1603212306298 + } + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 4, + "page_current": 1 + }, + "success": true, + "obj_name": "replydata" +} + +# 查看设备血压数据 + +- 地址:/api/bloodpressuredata/?device=[device oid] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [BloodPressureData](./object.md#BloodPressureData) +- 请求参数: + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------| ------------------------------ | + | device id | 是 | string | 15位设备唯一序号 | + | time_begin | 否 | string | YYYYMMDD,查询指定日期的数据 | + +- 请求范例 + curl -v -A CURL -b cookies.txt 'http://127.0.0.1:8000/api/bloodpressuredata/?deviceid=868219000099988&depth=1&rows_per_page=1' + + > GET /api/BloodPressureData/?device=358551050412329&depth=1&rows_per_page=1 HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user='2|1:0|10:1500426685|4:user|12:b3BlcmF0b3I=|00f680f1ea4e9cdf5f175f4bd76cf4c53f953bed74118417b8fc58917f5b926d"" +- 响应范例: + +{ + "objs": [ + { + "_id": { + "$oid": "5f8fe3f62642510b539b4bd8" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603294326442 + }, + "time_begin": { + "$date": 1603294325000 + }, + "dbp": 87, + "sbp": 127, + "type": "", + "measure_type": 0, + "pul": 0, + "ano": false + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 1, + "page_current": 1 + }, + "success": true, + "obj_name": "bloodpressuredata" +} + + +# 查看设备血氧数据 + +- 地址: /api/bloodoxygendata/?device=[device oid] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [heartratedata](./object.md#heartratedata) +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device | 是 | string | 15位设备唯一序号 | + | time_begin | 否 | string | YYYYMMDD,查询指定日期的数据 | + +__请求范例__ + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8888/api/heartratedata/?device=868219000099926&depth=1 + + > GET /api/heartratedata/?device=868219000099926 HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" +-- 响应范例 + { + "objs": [ + { + "_id": { + "$oid": "5f8fef79264251111b3c3187" + }, + "device": "866815111111111", + "created_at": { + "$date": 1603297273702 + }, + "time_begin": { + "$date": 1603297272000 + }, + "bloodoxygen": 96, + "measure_type": 1 + }, + { + "_id": { + "$oid": "5f8dcd312642510533a64909" + }, + "device": "866815111111111", + "created_at": { + "$date": 1603157425160 + }, + "time_begin": { + "$date": 1603157425000 + }, + "bloodoxygen": 98, + "measure_type": 0 + }, + { + "_id": { + "$oid": "5f8d396726425177cccbaf55" + }, + "device": "866815111111111", + "created_at": { + "$date": 1603119591938 + }, + "time_begin": { + "$date": 1603119590000 + }, + "bloodoxygen": 96, + "measure_type": 1 + }, + { + "_id": { + "$oid": "5f8d358d26425177cccbaf44" + }, + "device": "866815111111111", + "created_at": { + "$date": 1603118605111 + }, + "time_begin": { + "$date": 1603118604000 + }, + "bloodoxygen": 96, + "measure_type": 1 + }, + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 14, + "page_current": 1 + }, + "success": true, + "obj_name": "bloodoxygendata" +} + + + + +# 查看设备紧急呼叫 + +- 地址: /api/sosdata/?device=[device oid] 跌倒数据 (/api/falldata/?device=[device oid]) +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [sosdata](./object.md#sosdata) +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device | 是 | string | 15位设备唯一序号 | + | time_begin | 否 | string | YYYYMMDD,查询指定日期的数据 | + +- 请求范例: + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8888/api/sosdata/?device=352057288155188 + + > GET /api/sosdata/?device=352057288155188 HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" + +- 响应范例: + + { + "objs": [ + { + "_id": { + "$oid": "5f8fb1512642510b539b4a6b" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603281361189 + }, + "time_begin": { + "$date": 1603281359000 + }, + "type": "1", + "city": "广州市", + "address": "广东省 广州市 黄埔区 观虹路 靠近创新大厦C1", + "point": { + "type": "Point", + "coordinates": [ + 113.4563642, + 23.1672453 + ] + }, + "cell": [ + { + "mcc": "460", + "mnc": "0", + "lac": 9475, + "cid": 45055509, + "rssi": -109 + } + ], + "wifi": [ + { + "addr": "0c:4b:54:4f:19:85", + "ssid": "JTY_Office", + "rssi": -68 + }, + { + "addr": "b2:95:9d:3a:96:92", + "ssid": "CK", + "rssi": -84 + }, + { + "addr": "5c:0e:8b:8d:eb:60", + "ssid": "Wireless_LG", + "rssi": -74 + } + ], + "is_removed": false, + "communityid": "", + "push_result": "1" + }, + { + "_id": { + "$oid": "5f8fab642642510b539b4a3f" + }, + "device": "866815030630127", + "created_at": { + "$date": 1603279844553 + }, + "time_begin": { + "$date": 1603279844000 + }, + "type": "1", + "city": "广州市", + "address": "广东省 广州市 黄埔区 观虹路 靠近平安银行(广州科学城科技支行)", + "point": { + "type": "Point", + "coordinates": [ + 113.4566759, + 23.1672331 + ] + }, + "cell": [ + { + "mcc": "460", + "mnc": "0", + "lac": 9475, + "cid": 45055519, + "rssi": -111 + } + ], + "wifi": [ + { + "addr": "d4:f7:86:3f:c1:bd", + "ssid": "ChinaNet-9fwj", + "rssi": -35 + }, + { + "addr": "0c:4b:54:96:8a:8c", + "ssid": "BaiYiPC", + "rssi": -43 + }, + { + "addr": "28:c6:8e:39:03:c7", + "ssid": "BAIYI0001", + "rssi": -46 + }, + { + "addr": "2a:c6:8e:39:03:c8", + "ssid": "NETGEAR-Guest", + "rssi": -46 + } + ], + "is_removed": false, + "communityid": "", + "push_result": "1" + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 2, + "page_current": 1 + }, + "success": true, + "obj_name": "sosdata" +} + + + +# 获取设备最新位置数据 + +- 地址: /api/device/[device oid]/data/locationdata/ +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: 返回单个对象,如果对应的数据项有数据,则返回数据对象;如果没有则返回'{}' +- URL参数: device oid +- 请求参数: + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | type | 否 | string | 0:Gps定位; 1:基站定位 | + +- 请求范例: + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8000/api/device/868219000099926/data/locationdata + +- 响应范例: + + { + "obj": { + "remaining_power": 47, + "temperature": 25, + "weather": "雷阵雨", + "pm25": 42, + "online": true, + "locationdata": { + "_id": { + "$oid": "5f8fe1b42642510b539b4bb9" + }, + "time_begin": { + "$date": 1603293748000 + }, + "type": "1", + "city": "广州市", + "address": "广东省 广州市 黄埔区 观虹路 靠近平安银行(广州科学城科技支行)", + "point": { + "type": "Point", + "coordinates": [ + 113.4566442, + 23.1672667 + ] + } + }, + "wear_flag": 0 + }, + "success": true, + "obj_name": "" +} + + + + + + +# 获取设备环境音 + +- 地址: /api/deviceenvvoice/list/ 或 /api/device/[device oid]/deviceenvvoice/list/ +- 方法: GET +- 验证方法: Cookie: user +- URL参数: device oid +- 请求参数: +- 请求范例: + curl -v -A CURL -b cookies.txt http://120.24.56.48:8889/api/device/866815030630127/deviceenvvoice/list/?depth=1 + +- 响应范例: +{ + "objs": [ + { + "_id": { + "$oid": "5f8ff64a264251111b3c31bf" + }, + "user": { + "$oid": "5f8eae282642510b4bd152f5" + }, + "device": "866815030630127", + "group": { + "$oid": "5f8eae282642510b4bd152f2" + }, + "voice_time": { + "$date": 1603299018902 + }, + "voice_type": 0, + "media_length": 9094, + "filename": "20201021165018.amr", + "url": "/media/env_voice/866815030630127/20201021165018.amr", + "created_at": { + "$date": 1603299018912 + } + } + ], + "page": { + "page_count": 1, + "rows_per_page": 20, + "total": 1, + "page_current": 1 + }, + "success": true, + "obj_name": "deviceenvvoice" +} + + diff --git a/爱牵挂/爱牵挂M1对外API/intro.md b/爱牵挂/爱牵挂M1对外API/intro.md new file mode 100755 index 0000000..6b2e7b6 --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/intro.md @@ -0,0 +1,146 @@ +API概述 +======= + +目录 +---- + +- [请求格式](#请求格式) + - [GET](#GET) + - [POST](#POST) +- [对象输出参数](#对象输出参数) + - [分页参数](#分页参数) + - [嵌套参数](#嵌套参数) + - [简化参数](#简化参数) + - [排序参数](#排序参数) +- [响应格式](#响应格式) + - [返回单个对象](#返回单个对象) + - [返回多个对象](#返回多个对象) + - [返回失败](#返回失败) +- [错误码定义](#错误码定义) + + +# 请求格式 + +## GET + +GET请求时参数必须放在URL中,如: + + > GET /api/posturedata/?device=466970701492096 HTTP/1.1 + > Host: 203.195.166.239:8888 + > Accept: */* + +## POST + +POST命令参数可放在URL,也可放在BODY中 + + > POST /api/account/login HTTP/1.1 + > Host: 203.195.166.239:8888 + > Accept: */* + > Content-Length: 29 + > Content-Type: application/x-www-form-urlencoded + > para1=value1¶2=value2 + +# 对象输出参数 + +## 分页参数 + +当返回对象列表时,可以对列表进行分页 + +| 名称 | 必须 | 类型 | 说明 | +| ------------ | ---- | ------------ | ------------------------------ | +| page | 否 | int | 页数1~N,缺省1 | +| rows_per_page| 否 | int | 每页行数,缺省20 | + +## 嵌套参数 + +返回对象中有引用类型(Reference)的属性时,可以将被引用的对象嵌套到返回中。 + + - 原属性输出为ObjectID方式 + - 新增一个以$开头的属性,形如"$[attr_name]", 其中attr_name为原属性名,其内容是完整的json对象。 + +| 名称 | 必须 | 类型 | 说明 | +| ------------ | ---- | ------------ | ------------------------------ | +| depth | 否 | int | 嵌套层数(1-4),缺省2 | + +## 简化参数 + +输出简化后的对象,只包含特定的属性。必须在定义对象时指出简化对象包含哪些属性,如未指定,则输出对象的前10个属性。 + +| 名称 | 必须 | 类型 | 说明 | +| ------------ | ---- | ------------ | ------------------------------ | +| small | 否 | int | 1-完整,0-简化。缺省为1 | + + +## 排序参数 + +当返回对象列表时,可以对列表进行排序。指定按哪几个属性进行排序。 + + +| 名称 | 必须 | 类型 | 说明 | +| ------------ | ---- | ------------ | ------------------------------ | +| order_by | 否 | string | 需要排序的属性名, 逆序用'-', 多个属性用','连接。如:'order_by=email,-username'表示先按email字典序,然后按username逆序 | + + +# 响应格式 + +返回内容统一是json格式。 + +## 返回单个对象 + +当返回单个对象时,返回格式。 范例: + + { + "success": true, // 成功标志 + "obj_name": "obj name", // 对象名 + "obj": {"key1":"val1", "key2":"val2", ...} // 返回的对象内容 + } + +## 返回多个对象 + +当返回多个对象时,返回格式。范例: + + { + "success": true, // 成功标志 + "obj_name": "obj name", // 对象名 + "objs": [{obj1}, {obj2}, ...] // 对象列表 + "page": { // 分页信息 + "rows_per_page": intval // 每页行数 + "total": intval, // 总数 + "page_count": intval, // 分页数 + "page_current": intval, // 当前页号 + } + } + + +## 返回失败 + +失败时返回错误码和出错信息。 范例: + + { + "success": false, // 成功标志 + "error_code": 1, // 错误码 + "error_desc": "error description", // 错误描述 + "error_url": "/api/account/login", // 错误URL + } + +# 错误码定义 + +| 返回码 | 错误信息 | 说明 | +| ------------ | -------- | ------------------------------ | +| 0 | 成功 | | +| 1 | 错误 | | +| 101 | 未授权 | 需登录 | +| 102 | 没有操作权限 | 没有相应的操作权限,不需重新登录 | +| 103 | 用户不存在 | | +| 104 | 用户已存在 | | +| 105 | 登录验证失败 | | +| 106 | 设备不在线 | | +| 201 | 缺少必填参数 | | +| 202 | 参数格式错误 | | +| 203 | 对象不存在 | | +| 204 | 参数取值错误 | | +| 301 | 数据库错误 | | +| 302 | 数据唯一性错误 | | +| 401 | 数据同步失败 | | +| 999 | 其它错误 | | + diff --git a/爱牵挂/爱牵挂M1对外API/object.md b/爱牵挂/爱牵挂M1对外API/object.md new file mode 100755 index 0000000..9beb336 --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/object.md @@ -0,0 +1,452 @@ +如果是post请求,把参数带到body里面,禁止写到URL后面。URL后面带参数的全是get请求。 (我们的测试服虽然get和post请求都可以使用,但是要是用规范,改post请求的时候必须post请求,并且把参数放到body下,不要放到URL后面。我们的正式服因为换过架构所以会更加规范,修改接口必须是post且放到body下进行请求) + +对象定义 +======== + +__目录__ +- [BloodOxygenData](#bloodoxygendata) 血氧数据 +- [BloodPressureData](#bloodpressuredata) 血压数据 +- [CELL](#cell) 基站标识 +- [Device](#device) 设备信息(注意区分device实体全部参数以及device实体可修改参数) +- [DeviceToken](#devicetoken) app用户推送token +- [Group](#group) 家庭圈 +- [HeartRateData](#heartratedata) 心率数据 +- [LocationData](#locationdata) 定位数据 +- [Member](#member) 小组成员 +- [PedometerData](#pedometerdata) 计步数据 +- [Person](#person) 人员信息 +- [PowerData](#powerdata) 开机数据 +- [SettingAlert](#settingalert) 事件提醒 +- [SettingFence](#settingfence) 围栏 +- [SettingSosnumber](#settingsosnumber) 亲情号码 +- [SleepData](#sleepdata) 睡眠数据 +- [SosData](#sosdata) 呼叫数据 +- [WIFI](#wifi) 基站标识 +- [DeviceEnvVoice](#deviceenvvoice) 环境录音记录 +- [ReplyData](#replydata) 答复数据 + + + +# bloodoxygendata + +血氧数据 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| created_at | 记录时间 | DateTime | | | False | now() | | +| time_begin | 发生时间 | DateTime | | | False | None | | +| bloodoxygendata | 血氧百分比 | Int | | | False | 0 | | +| measure_type | 测量类型 | Int | | | False | 0 | 0 定时测量、 1 硬件手动测量、 2 远程指令测量 | + + +# bloodpressuredata + +血压数据 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| created_at | 记录时间 | DateTime | | | False | now() | | +| time_begin | 发生时间 | DateTime | | | False | None | | +| dbp | 舒张压 | Int | | | False | 0 | | +| sbp | 收缩压 | Int | | | False | 0 | | + + +# cell + +基站标识 -- LocationData 内嵌对象 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| mcc | MCC | String | | 3 | False | 000 | | +| mnc | MNC | String | | 3 | False | 000 | | +| lac | LAC | Int | | | False | 0 | | +| cid | CELLID | Int | | | False | 0 | | +| rssi | RSSI | Int | | | False | 0 | | + + +# device + +device实体可修改参数 -- X8 (开关类型的参数以0,1传参代表关闭和打开) + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +| sos_dial_cycle_times | 轮播次数1-9 | Int | | | True | 1 | SOS触发以后拨打SOS号码的循环次数,1是循环一次,9是无限循环 | +| frequency_location | 位置上报频率 | Int | | | True | 60 | 单位分钟,不建议低于10min | +| frequency_step | 记步上报频率 | Int | | | True | 30 | 单位分钟,不建议低于30min |默认是30分钟 +| frequency_heartrate | 心率、血压、血氧上报频率 | Int | | | True | 60 | 单位分钟,不建议低于10min | +| theshold_heartrate_h | 心率上限 | Int | | | True | 140 | | +| theshold_heartrate_l | 心率下限 | Int | | | True | 40 | | +| incoming_restriction | 呼入限制 | Boolean | | | True | False | | +| profile | 情景模式 | Int | | | True | 2 | 1:振动 2:铃声 3:震动+铃声 4.无振无声 | +| sleep_period_begin | 睡眠开始时间 | String | | 14 | True | | 格式YYYYMMDDHHMMSS,其中YYYYMMDD都用0填充,实例00000000083000,8点30am | +| sleep_period_end | 睡眠结束时间 | String | | 14 | True | | 同上 | +| step_objective | 计步目标 | Int | | | True | 3000 | | +| pedometer_enable | 计步数据开关 | Boolean | | | False | False | | +| sleep_enable | 睡眠数据开关 | Boolean | | | False | False | | +| sim_phone | 移动用户卡号 | String | | 16 | False | | | +| fall_enable | 跌倒判断开关 | Boolean | | | False | 0 | +| track_enable | 轨迹开关 | Boolean | | | False | 0 | +| heartrate_enable | 心率定时测量开关 | Boolean | | | False | False | | +| bloodoxygen_enable | 血氧定时测量开关 | Boolean | | | False | False | | +| bloodpressure_enable | 血压定时测量开关 | Boolean | | | False | False | | +| heartrate_enable | 心率、血氧、血压定时测量开关 | Boolean | | | False | False | | +| power_down_enable | 智能省电模式 (该模式打开以后,定时测量全部关闭) | Boolean | | | False | False | | +| short_message_enable | 短信上传开关 | Boolean | | | False | False | | +| gps_enable | GPS模块开关 | Boolean | | | False | True | | +| alertreply_enable | 提醒答复开关 | Boolean | | | False | True | | +| theshold_bloodoxygen_h | 血氧上限 | Int | | | False | 98 | | +| theshold_bloodoxygen_l | 血氧下限 | Int | | | False | 93 | | +| systolic_pressure_h | 收缩压上限 | Int | | | False | 140 | | +| diastolic_pressure_l | 舒张压下限 | Int | | | False | 60 | | +| callmode | 来电接听模式 | Int | | | True | 0 | 0 禁止自动接听 1 来电立即自动接听 2 响铃30s后自动接听 3 响铃15s后自动接听 | +| sim_phone | 移动用户卡号 | String | | 16 | False | | | +| sim_phone_type | 移动用户卡类型 | String | | 8 | False | unicom | unicom:中国联通; cmcc:中国移动; ctcc:中国电信 | +| name | 设备名称 | String | | 32 | False | | | +| theshold_low_battery | 低电门限 | Int | | | True | 15 | | +| sos_sendmail | 紧急呼叫是否发送短信 | Boolean | | | True | False | | +| exercise_heartrate_h| 运动心率上限阈值,默认180|int| | |True|180| | +| exercise_heartrate_l |运动心率下限阈值,默认40 |int| | |True|40 | | + + + +# device01 + +device实体全部参数 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| did | 设备编号 | String | | 64 | True | None | | +| alerts | 提醒 | List: Embedded [SettingAlert](#settingalert) | | | False | | | +| sos_numbers | 亲情号码 | List: Embedded [SettingSosNumber](#settingsosnumber) | | | False | | | +| sos_dial_cycle_times | 轮播次数1-9 | Int | | | True | 1 | SOS触发以后拨打SOS号码的循环次数,1是循环一次,9是无限循环 | +| sos_sendmail | 紧急呼叫是否发送短信 | Boolean | | | True | False | | +| sos_readmail | 紧急呼叫短信是否自动弹出 | Boolean | | | True | False | 其他设备参数,忽略 | +| sos_dial_cycle_mode | 轮播模式 | Int | | | True | 0 | 0,仅拨打SOS号码 | +| frequency_location | 位置上报频率 | Int | | | True | 30 | 单位分钟,不建议低于10min | +| frequency_step | 记步上报频率 | Int | | | True | 30 | 单位分钟,不建议低于10mi | +| frequency_heartrate | 心率上报频率 | Int | | | True | 30 | 单位分钟,不建议低于10mi | +| theshold_heartrate_h | 心率上限 | Int | | | True | 140 | | +| theshold_heartrate_l | 心率下限 | Int | | | True | 40 | | +| incoming_restriction | 呼入限制 | Boolean | | | True | False | | +| bluetooth_enable | 蓝牙开关 | Boolean | | | True | False | 仅在适配好的血压计同步功能上有用 | +| bluetooth_devices | 蓝牙设备 | String | | 256 | True | | 暂时废弃 | +| profile | 情景模式 | Int | | | True | 0 | 0铃声,1震动,2震动+铃声,3无震无声;S2系列无震动,曲奇有 | +| sleep_period_begin | 睡眠开始时间 | String | | 14 | True | | 格式YYYYMMDDHHMMSS,其中YYYYMMDD都用0填充,实例00000000083000,8点30am | +| sleep_period_end | 睡眠结束时间 | String | | 14 | True | | 同上 | +| step_objective | 计步目标 | Int | | | True | 3000 | | +| theshold_sit | 久坐门限 | Int | | | True | 60 | | +| theshold_low_battery | 低电门限 | Int | | | True | 20 | | +| fences | 电子围栏 | List: Embedded [SettingFence](#settingfence) | | | False | | | +| pedometer_enable | 计步数据开关 | Boolean | | | False | False | | +| sleep_enable | 睡眠数据开关 | Boolean | | | False | False | | +| imei | 移动设备识别码 | String | | 16 | False | | | +| imsi | 移动用户识别码 | String | | 16 | False | | | +| type | 设备类型 | String | | 20 | False | BY102 | | +| sim_phone | 移动用户卡号 | String | | 16 | False | | | +| sim_phone_type | 移动用户卡类型 | String | | 8 | False | unicom | unicom:中国联通; cmcc:中国移动; ctcc:中国电信 | +| owner | 拥有人 | Reference: [Person](#person) | | | False | None | | +| name | 设备名称 | String | | 32 | False | | | +| created_at | 创建时间 | DateTime | | | True | now() | | +| updated_at | 更新时间 | DateTime | | | True | now() | | +| lastlogin_ip | 最近联网地址 | String | | 16 | False | | | +| lastlogin_at | 最近联网时间 | DateTime | | | False | now() | | +| active | 激活状态 | Boolean | | | True | False | | 建立家庭圈绑定了设备才显示true,没有绑定设备显示false +| active_at | 首次激活时间 | DateTime | | | False | None | | +| online | 联网状态 | Boolean | | | True | False | | +| location_updated | 坐标更新 | Boolean | | | True | False | | +| location_updated_at | 坐标更新时间 | DateTime | | | True | | | +| last_location | 最新坐标 | Point | | | True | | | +| last_city | 城市 | String | | | True | | | +| last_address | 地址 | String | | | True | | | +| wear_flag | 佩戴状态 | Int | | | False | None | | +| wear_updated_at | 佩戴状态更新时间 | DateTime | | | False | None | 1未佩戴,0已佩戴,仅在测量心率的时候更新状态,终端自己测量不会更新 | +| remaining_power | 剩余电量(%) | Int | | | False | 0 | | +| remaining_power_updated_at | 电量状态更新时间 | DateTime | | | False | None | | +| wifi | WIFI | List: Embedded [WIFI](#wifi) | | | False | | | +| software_version | 软件版本 | String | | 48 | False | | | +| iccid1 | 移动用户iccid号1 | String | | 21 | False | None | | +| iccid2 | 移动用户iccid号2 | String | | 21 | False | None | | +| fence_notification_updated_at | 围栏通知更新时间 | DateTime | | | False | None | | +| fall_model | 跌倒模式设置 | String | | | False | 0 | | +| fall_enable | 跌倒判断开关 | Boolean | | | False | 0 | +| track_enable | 轨迹开关 | Boolean | | | False | 0 | +| heartrate_enable | 心率开关 | Boolean | | | False | False | | +| power_down_enable | 智能省电模式 | Boolean | | | False | False | | +| exercise_heartrate_h| 运动心率上限阈值,默认180|int| | |True|180| | +| exercise_heartrate_l |运动心率下限阈值,默认40 |int| | |True|40 | | + + +# devicetoken + +终端标识 -- Person内嵌对象(爱牵挂用户体系 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| token_type | 设备类型 | String | | 10 | True | ios | ios:ios; android:android | +| token | 设备标识 | String | | 128 | True | None | | +| is_enable_aliase | 别名是否可用 | Boolean | | | True | False | | +| created_at | 创建时间 | DateTime | | | True | now() | | + + +# group + +家庭圈 (爱牵挂用户体系 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| owner | 拥有人 | Reference: [Person](#person) | | | True | None | | +| name | 组名称 | String | | | True | | | +| community | 社区 | Reference: [Community](#community) | | | False | None | | +| created_at | 创建时间 | DateTime | | | False | now() | | +| is_public | 是否公开 | Boolean | | | False | False | | +| members | 成员列表 | List: [Member](#member) | | | | | | + + +# heartratedata + +心率数据 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| created_at | 记录时间 | DateTime | | | False | now() | | +| time_begin | 发生时间 | DateTime | | | False | None | | +| heartrate | 心率 | Int | | | False | 0 | | + + +# locationdata + +定位数据 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| created_at | 记录时间 | DateTime | | | False | now() | | +| time_begin | 发生时间 | DateTime | | | False | None | | +| type | 类型 | String | | | False | 0 | 0:Gps定位; 1:基站定位; 2:基站定位CDMA; 99:纯wifi | +| is_reply | 是否为响应 | Boolean | | | False | False | | +| city | 城市 | String | | 16 | False | | | +| address | 地址 | String | | 128 | False | | | +| point | 坐标 | Point | | | False | None | | +| cell | CELL | List: Embedded [CELL](#cell) | | | False | | | +| wifi | WIFI | List: Embedded [WIFI](#wifi) | | | False | | | + + +# member + +小组成员 -- Person 通过 Member 跟 Group进行关联 (爱牵挂用户体系 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| group | 组 | Reference: [Group](#group) | | | True | None | | +| person | 成员 | Reference: [Person](#person) | | | True | None | | +| member_name | 关系 | String | | | False | | | +| is_default | 是缺省组 | Int | | | False | 0 | | + + +# pedometerdata + +计步数据 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| created_at | 记录时间 | DateTime | | | False | now() | | +| time_begin | 发生时间 | DateTime | | | False | None | | +| value | 累计步数 | Int | | | False | 0 | | + + +# person + +人员信息 (爱牵挂用户体系 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| username | 用户名 | String | | 16 | True | None | | +| password | 用户口令 | String | | 64 | True | None | | +| email | 注册邮箱 | Email | | 64 | False | None | | +| nickname | 别名 | String | | 64 | False | None | | +| phone | 手机号码 | String | | 15 | False | None | | +| telephone | 电话号码 | String | | 15 | False | None | | +| app | 服务名 | String | | 30 | True | aiqiangua | 标识登陆的app | +| devicetokens | 终端标识列表 | List: Embedded [DeviceToken](#devicetoken) | | | False | | | +| weight | 体重(KG) | Int | | | False | 0 | | +| step | 步长(CM) | Int | | | False | 0 | | +| age | 年龄(岁) | Int | | | False | 0 | | +| height | 身高(CM) | Int | | | False | 0 | | +| avatar | 头像文件 | String | | | False | None | | +| avatar_url | 头像 | String | | | False | /media/avatar/200/male.png | | +| community | 社区 | Reference: [Community](#community) | | | False | None | | +| role | 角色 | String | | 10 | True | user | user:用户; operator:操作员; superuser:超级管理员 | +| gender | 性别 | String | | 10 | True | male | male:男 ; female:女 | +| address | 地址 | String | | 64 | False | None | | +| created_at | 创建时间 | DateTime | | | True | now() | | +| updated_at | 更新时间 | DateTime | | | True | now() | | +| lastlogin_ip | 最近登录地址 | String | | 16 | False | None | | +| lastlogin_at | 最近登录时间 | DateTime | | | False | None | | +| lastlogin_by | 登录设备 | String | | | True | | | +| enable | 启用 | Boolean | | | False | False | 暂时没有使用 | +| email_is_checked | 邮箱已验证 | Boolean | | | False | False | | +| phone_is_checked | 手机已验证 | Boolean | | | False | False | | +| push_sos_enable | 允许SOS推送 | Boolean | | | False | False | | +| push_fence_enable | 允许电子围栏推送 | Boolean | | | False | False | | +| push_abnormal_enable | 允许健康数据推送 | Boolean | | | False | False | | +| push_message_enable | 允许家庭圈消息推送 | Boolean | | | False | False | | +| push_lowpower_enable | 允许低电推送 | Boolean | | | False | False | | +| push_system_enable | 允许系统消息推送 | Boolean | | | False | False | | +| auth_type | 授权类型 | String | | 10 | False | None | weibo:weibo; qq:qq; weixin:weixin | +| auth_uid | 授权唯一标识 | String | | 256 | False | None | | +| auth_updated_at | 更新时间 | DateTime | | | True | now() | | +| home | Home | String | | | False | None | | +| home_wifi | Home Wifi | String | | 32 | False | None | | +| devices | 设备列表 | List: [Device](#device) | | | | | | +| groups | 小组列表 | List: [Group](#group) | | | | | | + + +# powerdata + +开机数据 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| created_at | 记录时间 | DateTime | | | False | now() | | +| time_begin | 发生时间 | DateTime | | | False | None | | +| type | 开/关机类型 | String | | | False | 0 | 0:开机; 1:关机; 2:电量上报; 3:低电通知 | +| remaining_power | 剩余电量(%) | Int | | | False | 0 | | +| location | 低电时位置 | Reference: [LocationData](#locationdata) | | | False | None | | + + +# settingalert + +事件提醒 -- 内嵌对象 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| reply_enable 答复开关 Boolean | True | False | | 但是掉用接口使用 0,1 (0是关闭,1是打开) +| seqid | 序号 | Int | | | True | None | | +| enable | 启用 | Boolean | | | True | False | | +| is_medicine | 用药 | Boolean | | | True | False | 仅用于app标识,无实际意义 | +| name | 名称 | String | | 40 | True | | | +| alert_type | 提醒类型 | Int | | | True | 1 | 0、周期性提醒,类似手机工作日闹钟类型 1、一次性提醒,设定日期 | +| cycle | 周期 | Int | | | True | 1 | 1、以星期为周期,对应上面的0,2、以日期为周期,对应上面的1 | +| time | 时间 | String | | 14 | False | | 当alert_type=0时,格式为 1001101+21+30+ ,意义:前7位对应周日、周一……周六,需要提醒的那些天,后面是HHMM,中间用+号分割和结尾;当alert_type=1时,格式为YYYYMMDDHHMMSS 20150313213000 | +| media_length | 语音文件长度 | Int | | | False | 0 | 上传前需检查文件大小,最大不得超过10KB,建议在5K~8K之间,否则会报错,不需要传递这个参数,服务器计算 | +| file_checksum | 语音文件(校验和) | Int | | | False | 0 | 服务器产生 | +| filename | 语音文件名 | String | | 64 | False | None | | +| url | 下载地址 | String | | 128 | False | None | 服务器产生 | +| created_at | 创建时间 | DateTime | | | False | None | | + + +# settingfence + +围栏 -- 内嵌对象 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| seqid | 序号 | Int | | | True | None | | +| freq | 每天 | Boolean | | | False | True | | +| enable | 启用 | Boolean | | | True | False | | +| name | 名称 | String | | 40 | True | | | +| time_begin | 起始时间 | Int | | | True | 0 | | +| time_end | 终止时间 | Int | | | True | 0 | | +| safe_area | 安全区域 | int | | | False | None | | + + +# settingsosnumber + +亲情号码 -- 内嵌对象 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| seqid | 序号 | Int | | | True | None | | +| name | 名称 | String | | 32 | True | | | +| num | 号码 | String | | 16 | True | | | +| dial_flag | 是否呼叫 | Boolean | | | True | False | 是否将亲情号码设置为SOS号码,即在设备SOS时加入拨打循环 | + + +# sleepdata + +睡眠数据 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| created_at | 记录时间 | DateTime | | | False | now() | | +| time_begin | 发生时间 | DateTime | | | False | None | | +| time_end | 截止时间 | DateTime | | | False | None | | +| interval | 检测间隔 | Int | | | False | 30 | | +| total | 检测次数 | Int | | | False | 0 | | +| data | 睡眠数据 | List: Embedded [SleepDataSleep](#sleepdatasleep) | | | False | [] | X1无详细睡眠数据,忽略此参数 | +| deep_sleep | 是 | Sting | 深睡时长,单位小时,str(float) | +| light_sleep | 是 | Sting | 浅睡时长,单位小时,str(float) | +| awake_time | 是 | Sting | 清醒时长,单位小时,str(float) | +| total_sleep | 是 | Sting | 睡眠总时长,单位小时,str(float) | + +# sosdata + +呼叫数据 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| id | | ObjectId | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| created_at | 记录时间 | DateTime | | | False | now() | | +| time_begin | 发生时间 | DateTime | | | False | None | | +| type | 类型 | String | | | False | 0 | 0:Gps定位; 1:基站定位 | +| city | 城市 | String | | 16 | False | | | +| address | 地址 | String | | 128 | False | | | +| point | 坐标 | Point | | | False | None | | +| cell | CELL | List: Embedded [CELL](#cell) | | | False | | | +| wifi | WIFI | List: Embedded [WIFI](#wifi) | | | False | | | +| heartrate | 心率值 | Int | | | False | None | X1无此参数 | +| is_removed | 是否消除 | Boolean | | | False | False | | + + + + +#DeviceEnvVoice + +设备环境音 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | +|------- | ---- | ---- | -------- | -------- | -------- | ------ | ---- | +| user | 用户 | Reference: [Person](#person) | | | False | None | | +| device | 设备 | Reference: [Device](#device) | | | False | None | | +| group | 拥有组 | Reference: [Group](#group) | | | False | None | | +| voice_time | 拾音时间 | DateTime | | | False | | | +| voice_type | 文件类型 | Int | | |False | 0 | | +| media_length | 长度 | Int | | | False | 0 | | +| filename | 文件名 | String | | 64 | False | | | +| url | 下载地址 | String | | 128 | False | | | +| created_at | 记录时间 | DateTime | | | False | now() | | + + + +#replydata +答复数据 -- settingalert中reply_enable打开,device中alertreply_enable打开,硬件会将对应alert的处理结果答复上来 + +| 字段名 | 说明 | 类型 | 最小长度 | 最大长度 | 必填字段 | 缺省值 | 备注 | + +| id | | ObjectId | | | True | None | | +| device | 设备 | Device | | | True | None | | +| time_begin | 发生时间 | DateTime | | | True | None | | +| reply_type | 答复类型 | Int | | | True | 0 | 0,广播答复;1,提醒答复 | +| alert_name | 提醒名称 | string | | | False | None | 提醒的文本内容;当reply=1时携带 | +| result | 答复结果 | Int | | | True | 0 | 0 用户未处理 1 用户已处理 | +| advert_id | 广播ID | | | | False | None | 当reply_type=0时携带 | +| advert_text| 广播文本 | | | | False | None | 当reply_type=0时携带 | +| created_at | 创建时间 | DateTime | | | True | None | | + + diff --git a/爱牵挂/爱牵挂M1对外API/person.md b/爱牵挂/爱牵挂M1对外API/person.md new file mode 100755 index 0000000..7f789c3 --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/person.md @@ -0,0 +1,139 @@ + +用户信息 +======== + +# 查看账号信息 +- 地址: /api/person/self 或 /api/person/[person oid] +- 方法: GET +- 验证方法: Cookie: user +- 响应对象: [person](./object.md#person) +- URL参数: person oid +- 请求范例 + + curl -v -A CURL -b cookies.txt http://127.0.0.1:8888/api/person/self + + > GET /api/person/self HTTP/1.1 + > User-Agent: CURL + > Host: 127.0.0.1:8888 + > Accept: */* + > Cookie: "user="2|1:0|10:1473817034|4:user|16:MTg2ODA1NTUwNzA=|2768bb77396815e5a7ca9fe3c65dc8060943c57aeb078c746faf56036533aa12"" + +- 响应范例 + + { + "obj":{ + "_id":{ + "$oid":"565ba619bf483c7369e5b4a3" + }, + "username":"18680555070", + "password":"f8cdb04495ded47615258f9dc6a3f4707fd2405434fefc3cbf4ef4e6", + "nickname":"2222", + "phone":"18680555070", + "telephone":"", + "app":"aiqiangua2.0", + "devicetokens":[ + { + "token_type":"ios", + "token":"9dc0aa1154ad3c10d28bcbd21dbaa26d0fbc2135b1a6e2a2844517eb5fe5468b", + "is_enable_aliase":false, + "created_at":{ + "$date":1473671277244 + } + }, + { + "token_type":"android", + "token":"22dde87aa7bbfde548179ef3933cb60f249592c2", + "is_enable_aliase":false, + "created_at":{ + "$date":1473772757489 + } + } + ], + "weight":0, + "step":0, + "age":0, + "height":0, + "avatar":"18680555070.png", + "avatar_url":"/media/avatar/200/18680555070.jpg", + "role":"user", + "gender":"male", + "created_at":{ + "$date":1448875673502 + }, + "updated_at":{ + "$date":1448875673502 + }, + "lastlogin_ip":"121.32.197.247", + "lastlogin_at":{ + "$date":1473772757475 + }, + "lastlogin_by":"", + "enable":false, + "email_is_checked":false, + "phone_is_checked":true, + "push_sos_enable":true, + "push_fence_enable":true, + "push_abnormal_enable":true, + "push_message_enable":true, + "push_lowpower_enable":true, + "push_system_enable":true, + "push_fall_enable":true, + "push_env_enable":true, + "auth_type":"weixin", + "auth_uid":"oXm9utw5vTIi4PV4bZtcFFeFJqS8", + "auth_updated_at":{ + "$date":1448875673502 + }, + "register_app":"", + "is_device_owner":false, + "devices":[ + + ], + "groups":[ + { + "$oid":"565ba687bf483c7369e5b4a4" + } + ], + "$community":{ + + }, + "$devices":[ + + ], + "$groups":[ + { + "_id":{ + "$oid":"565ba687bf483c7369e5b4a4" + }, + "owner":{ + "$oid":"565ba619bf483c7369e5b4a3" + }, + "name":"18680555070家", + "created_at":{ + "$date":1448875783707 + }, + "is_public":false, + "members":[ + { + "$oid":"565ba687bf483c7369e5b4a5" + }, + { + "$oid":"578f41442642511a2446b9f0" + }, + { + "$oid":"57a40ebe2642514b25a49076" + }, + { + "$oid":"57d108c4264251061d083074" + }, + { + "$oid":"57d6144126425121e8b81865" + } + ] + } + ] + }, + "success":true, + "obj_name":"person" + } + diff --git a/爱牵挂/爱牵挂M1对外API/pushdata.md b/爱牵挂/爱牵挂M1对外API/pushdata.md new file mode 100755 index 0000000..764313f --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/pushdata.md @@ -0,0 +1,195 @@ +数据发送:机构给出接口,我们主动调用,POST请求表单提交数据。 + +如果客户具有调试谷歌定位的开发能力,可以通知爱牵挂对接技术人员,采用获取原始定位数据的形式获取位置信息。采用原始定位数据时,不再发送高德坐标,原始数据主要为基站信息+wifi/GPS + + +位置数据发送 + +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ---------------------------------- | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | is_reply | 是 | Boolean | 是否为响应 | + | is_track | 是 | Boolean | 是否轨迹 | + | city | 是 | String | 城市 | + | address | 是 | String | 地址 | + | lon | 是 | double | 经度 | + | lat | 是 | double | 纬度 | + | type | 是 | int | 类型 0:Gps定位; 1:基站定位(移动/联通版定位) 2:电信基站版定位 99:纯WIFI定位 | + + + + +SOS数据发送 + +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ---------------------------------- | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | heartrate | 是 | int | 心率 | 发送数据一直为 None + | city | 是 | String | 城市 | + | address | 是 | String | 地址 | + | lon | 是 | double | 经度 | + | lat | 是 | double | 纬度 | + | type | 是 | int | 类型 0:Gps定位; 1:移动基站定位(2是电信的LBS(基站定位)) | | + + +心率数据发送 + +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ---------------------------------- | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | heartrate | 是 | Int | 心率 | + | theshold_heartrate_h | 是 | Int | 心率阈值上限 | + | theshold_heartrate_l | 是 | Int | 心率阈值下限 | + + +计步数据发送 + +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ---------------------------------- | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | value | 是 | Int | 步数 | + + + + + +开关机数据发送 + +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ---------------------------------- | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | type | 是 | int | 开/关机类型 0:开机; 1:关机; 2:电量上报; 3:低电通知 | (设备没电自动关机的时候是没有关机报文的) + | remaining_power | 是 | Int | 剩余电量(%) | + + +血压数据发送 +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | dbp | 是 | int | 舒张压 | + | dbp_l | 是 | int | 舒张压报警下限 | + | sbp | 是 | int | 收缩压| + | sbp_h | 是 | int | 收缩压报警上限 | + + +跌倒数据发送 + +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ---------------------------------- | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | city | 是 | String | 城市 | + | address | 是 | String | 地址 | + | lon | 是 | double | 经度 | + | lat | 是 | double | 纬度 | + | type | 是 | int | 类型 0:Gps定位; 1:基站定位 | + + + + + +提醒答复数据发送 +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | reply_type | 是 | int | 答复类型 |当reply_type=0时,为广播答复,不返回alert_id和alert_name + | advert_id | 否 | String | |当reply_type=1时,为语音提醒答复,不返回advert_id和advert_text + | advert_text | 否 | String | | + | alert_id | 否 | String | 提醒ID | + | alert_name | 否 | String | 提醒名称 | + | reply_result | 是 | int | 答复结果 |0未处理 1 已处理 + + + +血氧数据发送 +- 地址: http://xxxxx/ +- 方法: post +- 参数规范 + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device_type | 是 | String | 设备型号 | + | imei | 是 | String | 15位设备唯一序号 | + | time_begin_str | 是 | String | 时间YYYYmmDDHHMMSS显示(将time_begin按YYYYmmDDHHMMSS格式化,字符串,长度固定14 )| + | time_begin | 否 | DateTime | 发生时间YYYY-MM-DD HH:mm:SS (备注:采用json格式提交时,该字段不会传 ) | + | bloodoxygen | 是 | int | 血氧百分比 | + | bloodoxygen_h | 是 | int | 血氧报警上限 | + | bloodoxygen_l | 是 | int | 血氧报警下限 | + + + + + + +消息通知 +- 地址: http://xxxxx/ +- 方法: get +- 参数规范 + + | 名称 | 必须 | 类型 | 说明 | + | --------------- | ---- | ------------ | ------------------------------ | + | device_type | 是 | String | 设备型号 | + | type | 是 | int | type=1 SOS,type=3 new 新成员加入 ,type=4 电子围栏触发, type=5 设备低电,type=6 环境音 ''' ,type=8 运动心率异常 + | deviceid | 是 | String | 15位设备唯一序号 | + | communityid | 是 | String | 机构ID | + | url | 是 | String | 环境音下载地址 |只有环境音(type=6)为必填,其他type都为非必填 + | name | 是 | String | 设备名称 | + 根据type来定义给用户推送提示 type=1 SOS,type=4 电子围栏触发, type=5 设备低电,type=6 环境音''' ,type=8 运动心率异常 + + 备注:电子围栏触发时,新增了point参数string,高德坐标,经度在前纬度在后,如:123.11,23.44 , +新增了address参数,string,unicode编码 + + + diff --git a/爱牵挂/爱牵挂M1对外API/接口使用说明.txt b/爱牵挂/爱牵挂M1对外API/接口使用说明.txt new file mode 100755 index 0000000..35edb75 --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/接口使用说明.txt @@ -0,0 +1,24 @@ + + + + +1ǣṩݷַ;ԼһԱȨ˺(ͨǣԱ)˾ӿڸǣҵãݲбػ豸޸Ļָ߲ͨ˾APIɲ˫ûϵͻ⡣û豸Ĺϵɹ˾йǣṩӲ͹˾ӵͨ + + +2ͨauth.mdеĵ½ӿڣ½״̬ɷ֡Ȼdevice.mdе豸ݲѯ豸޸ģָ͵ĵԡ˾APPҪִָڲװӿṩͻˣɱֵ½״̬ķðǣҷؽӿڡ + + + +3pushdataдýӿڸǣԱãͻͬݣ豸ò޸ģԼָҪӿڡ + + +ע⡪½״̬֣ +1.auth.mdloginӿڣ¼ɹ󷵻һcookie ,ӿڵʱͷcookie cookieʱЧ24СʱcookieδЯʧЧ޷˺Ȩڵ豸޸Ļ߲ + +2.ʡ翪ء򿪺ʡ켣ƲѪѪѹضǡرա״̬ʡ켣ƲѪѪѹأҪȹرաʡ翪ء + + + + + + diff --git a/爱牵挂/爱牵挂M1对外API/细节描述(必看).txt b/爱牵挂/爱牵挂M1对外API/细节描述(必看).txt new file mode 100755 index 0000000..15e2968 --- /dev/null +++ b/爱牵挂/爱牵挂M1对外API/细节描述(必看).txt @@ -0,0 +1,168 @@ +ݶԽ˼· +1ǣΪṩӲͨ豸ʵʱַ˾ͬʱṩָ޸APIù˾豸дԽӲ漰κûϵݣΪͨ· +2ݷַ˾pushdata.mdļݽAPI(HTTP)ǣҼ֧Աá +3ӦԽAPIļȨʹIPķʽǣṩͷIPб˾ƥ䣻Ҳʹõ½ȨƵķҪ⿪ڣüάɱ +4ݽAPIԲPOST ύ Լ POST JSON ݷͣĬΪPOSTύJSONݷͣϵǣҼԱá +5еҪԽӿڽмȨ(auth.md е login)Ȩ˺ɰǣҼԱȨṩ +6õдҪΪıԼָ(device.md)޸룬ʵʱλȡ +7dzƼʹѯķʽȡݡǣҷͬһIPÿΪ10εԣǵԼأQPS޸ĺеָ + + + +ݲַ߼ + +M1ýϵ˲ܰSOSб + +1.λöλ֣(1).һλʵʱλֲҪ򿪹켣ءֻҪʵʱλĽӿڣӿdeviceĵ£ǸָԽӿڣӲ·һλָ豸ʼλǰ豸ߣܵӿڣ + (2).һǹ켣λҪ򿪿أ豸趨ƵԶλ Ĭϲ1СʱҪĿڳʱ֪ԽԱʼá鲻Ҫ16 + +2.ʣһֶʣֲҪ򿪿أݾͻֶֶͣ豸 + һԶʣҪ򿪿أ趨ƵԶ֮ݣӲҪƵʲõ5 + +3.ƲҪ򿪿أĬǰСʱԸƵʣDzģϴIJûд򿪿ؾͲܲݣÿ0Ʋ0 + +4.ػĬһСʱһΡ + +5.򿪿أ豸Ȼݣûд򿪿ؾͲ + +6.ѪѹһѪѹһݣԶǸһ ˾ԼѪѹֵ˾ֻѪѹݣ˾жǷ쳣б + + ѪʣѪѹѪһģԶҲһġ + +7.ʡģʽ (ģʽԺ󣬶ʱȫر)ȿ޸(ʡ켣ƲѪѪѹ) + +8.豸غ޸豸ԶϴƵҪǵĽӿڣȵ¼APIе¼ӿڣauthĵȡcookieresponse headerȡcookieȻdeviceĵ޸Ľӿ + objectĵdevice ӿֻҪ޸ĿغϴƵʲã + 룬ѣõΧԶ̲صĽӿڶdeviceĵ¡ + Զ̲ӿڵԭǰ᣺豸ߡ ӿָԽӿ + ӿڸӲ·ָӲʼصIJȻӲõϴǵķȻͬ͵ӦURL + +9.鿴豸ڲߣdeviceĵָ豸ӿڣ鿴زеonlineΪtrueΪߣ֮ߡ鿴ȫڵ豸ڲߣ鿴communityĵµĽӿںdeviceĵȡ豸״̬ӿڣһʹõ + ̨M1豸״̬仯16ӡ磺߱16ӲŻı䡣 ߱ǣ豸͸ı䡣 + +10.зͶǿؿƵģĬǹرգֻд򿪣SOSʱŻᷢŸ룬֮򲻻ᷢ + +11.𸴿ĬǴ򿪵ģѵʱ򣬱ȻݣҪݣֻ򵥵ѣҪӿڰ𸴿عرգ޸ĵIJalertreply_enable + ļѣamrļContent-Type multipart/form-dataãapplication/x-www-form-urlencoded + +12.ӿڴʡ翪أеܿصĽӿڶܳɹشǡȱٲرʡ翪زſܿصĽӿڡ + +13.M1ûй㲥 + +14.ǷȥDZĸʽ ĬContent-Type: application/x-www-form-urlencodedfrom-dataҪһý + +15.豸õ4GIJԤء + +16.ΧĽӿڴǴ5꣬һǵһ꣬γһػ + 켣رգΧ򿪣ڵΧЧʱڣ豸Ҳݹ켣ƵʶλġȻж豸ǷΧڴӶǷ񱨾 + 켣͵Χ򿪣ܵΧʱεƣȫ춨λġû300վλûDzµĶλģһλʡƣ + ֻΧ͹켣ͬʱرգ豸ŲԶλ + +17.ΧϹ켣λһʹõģԶλʱ򣬻жڲΧڣھͲԶλſԡ + +18.pushdataĵ£is_replyӦҲλ + is_trackǹ켣ҲԶλ ֻis_trackΪtrueʱ򣨱ΪԶλΧá + +19.豸ڹ˾ϲӵ޸ĵȨޣӿʾ޲Ȩޣ豸ڻ£ǻwebƽ̨ϽӻðǣԱӡ + +20.ֻӲݣ豸İ󶨹ϵҪ˾ж + +21.ֻҪĸĵͿauthdeviceobjectpushdata + +22.˾Ǹߵ꣬ʹõǰٶ꣬ҪԼתǻϵ + +23.Ƿ״̬˾deviceĵָ豸ӿڣ鿴wear_flagжǷ + ״̬б仯ڸı䣬ûб仯ıģԶʱһֱܲ⵽ʣ״̬ʵ״̬иûв⵽״̬ͻδʱĸʱŻı䡣 + +24.һǵĽӿ1Ӳܳ10 + +25.˾ĽӿڣصУʱҪתתҪ8Сʱ + +26.communityĵģcommunity idȡ¼ӿڵʱ򣬷صbodycommunityӦľǣcommunity id + +27.post󣬰Ѳbody棬ֹдURL档URLȫget ǵIJԷȻgetpost󶼿ʹãҪù淶postʱpost󣬲ҰѲŵbody£ҪŵURL档ǵʽΪܹԻӹ淶޸Ľӿڱpostҷŵbody½ + +28.ѣǽӿѽӿڣupfileҪļļ͸ǡ鿴ļĵַʽΪurl + '/media/alerts/' + imei + '/' + alertid + '.amr' http://api.aiqiangua.com:8888/media/alerts/868219000099988/1.amr + 𸴿޸òalertreply_enableĬǴ򿪵 + ǰκμѣϴѴ + 3ûаκΰϴĴδ + +29.url Է:http://120.24.56.48:8889 + ʽ:http://api.aiqiangua.com:8888 + +30.ӲĹ̨http://manager.aiqiangua.com/organS2/loginAction!login.do + ˺ǵʱעAPPΪܵ˺룬 + ˺ȷǻdz˺ŲڣǾˣҪAPPһ룬ڵ¼ + +31.豸뵽˾Ļ˺£ַʽ + 1˾ļԱе + 2¼˾Ļwebƽ̨http://manager.aiqiangua.com/organS2/loginAction!login.do + ʹӣģ壺 + 1ڱ豸deviceidֻҪ豸IMEIžͿˣЩɲ롣 + 2ѡҪ¼豸 + 3ڹѡݡ + 4С + 5һһ + 6ѡΪı + 7ɡ + ǰ᣺豸ǰûм뵽豸 + עʹ룬ҪʹõӣΪƣҴûа󶨹˾APP豸ſӳɹ + +32.URLֻһԺҪURLĻ + ַ1.ߴ豸ĸģͻֵĸ£豸ֻܴӦURL¡ȱ㣺ҪǿͰǣߵĹͨ豸ABҪǣ߽вǵĽӿڵʱҪӦͬ˺š + 2.ֻһһURLе豸뵽£ݵǣDZ߱浽ݿ⣬ôתDZ߾ͿԸԼתŵ㣺ʡߵIJάԸߡǵĽӿֻҪһ˺žͿˡ ȱ㣺˿ʱ + +33.˾ղݣ¼Ų飺 + (1.豸ڲ.豸߿϶ϴݡ + (2.豸ߣعܿûд򿪣ûúƵʣĬƵ60ӣûд򿪾ͲܲݣҲûϴַܷ + + (3.豸ϴݵǷ͸˾ʱ˾Ľӿڳ⣬ӿʧܣҪ˾Ųӿ + (4.豸ڹ˾Ļ¡Ҫϵǣ֧Ա豸ӵ˾Ļ˺¡ + ע˾ƽ̨ϲ鿴Ƿϴǰ˾APPͿԲ鿴ݡ + http://manager.aiqiangua.com/organS2/loginAction!login.do + +34.ǰڲԽ׶Σ޸豸㣺 + 1.˾APPʹ˾APP޸ + 2.Ե¼˾Ļwebƽ̨ҵӦ豸޸ 3.ӿڽ޸ +35.ݷַӿڹ + ˾ӿڳ3Σ3ζûӦʱ(5s)ͻӿʱ˵Сʱ֮ͨµӿڡ + ˾ӿ5룬5һʱ䣬/ء + +36.˾ĶԽӹǣȹ˾նԽĵṩϢ˾Ϣ˾Ӳ˾һȻѹ˾ɹ豸IMEIż뵽£Ȼ˾ṩݵURL豸ݾͷ͵ǵӿ£˾бݣµ豸Ͳܷ͵ӿ¡޸豸Ҫ˾Ľӿڣȵ¼ǴʱṩĹԱ˺ŵ¼ǻijܣӵ޸Ĺ˾豸ȨޣӿʾȨޣ豸ڹ˾£Ҫӽȥ + +37.APPûм + + 1.豸ûмûǻû豸ûе뵽˺¡ + 2.IMEIŻ߰װĶάǷ豸IMEIһ + 3.˾APPʽͲԷûи豸Ӧ豸ҲʽͲԷ + +38.˾APPͥȦڵķǹԱ쳣У͵磬ʣ£ղ쳣ġ + +39.˾APP豸ڻ£˾APPDzܽġ· + 1.˾ṩĻwebƽ̨ϣнť + 2.ǹں£ѯĿͷнҲڶԽӵ΢ȺṩAPP + +40.172148Ŀ󣬵绰ģϴһ0000000. SIMЩ⣬ֻй˾ʹõŻЩ + +41.Ʋؿ豸ػʱ豸ᱨƲݣʱ + +42.ϲ⼸棺 + 1.鿨ʷѣ + 2.豸Ƿе + 3.豸Ƿ豸ɹ + 4.豸˵豸Ϣ鿴豸IMEIװIMEIǷһ + +43.Ѫѹʧܣ + 1.ȷϿ豸Ƿ͵磬õ30%ϡ + 2.豸ػһ£ 3.鿴豸ʱǷƤ + 4.һ˲һ¡ +44. Ŀ ׼£ + λʱ䣨룩 60 + 1۶λȣ10-30ң + λƫף 2ȶWIFIź۾20-50׾ + 3GPSȶWIFI£λ200-2000ס +45.עλ˵ + 1ⳡ豸ɻȡźţ豸ͨǷĴʱλϢߵźţλõľ徭γȣ豸ܹյźǿȣ۶λ10-30ҡܵ¥šľڵԭƲϺȵźŽʱӰ춨λʱͶλȡ + ? + 2ڴ෿ݶøּܽṹôܵһ̶ȵӰ쵼޷ȡôʱԶлڶλģʽLBSվλ+WIFIWIFIλLBSָƶӪ̵ĻվźţʹΧվǵܶȶվԽԽ׼վֽϴλ200-2000ףʱAPPλҳʾ綨λ֮⣬豸ΧWIFIȵ㸨λҪܱźűȽϺãڸߵµͼԴеַWIFI豸ڶλ豸ȡȶҸߵµͼԴеַWIFI۾20-50׾ȡܱWIFIźšWIFIźŽWIFIûڸߵµͼԴеַ߸WIFIź⡢͵WIFIԭԶлLBSվλӰ춨λȡ + +46.M1һƣͬһطû300վλûDzµĶλģһλʡƣȡлվһģһģͲϴλˣԻῴľͲһλ ֻлվ˱仯λŻϴùΪӳ˾Ҫʱ͵Ķλݣϵǣ֧Ա豸ʱùܹرա \ No newline at end of file