English概述
使用场景
经销商自己有一套系统,想在这个基础上扩充相关GPS功能。 经销商的客户的账号由经销商自己的系统管理,用于登录经销商的系统。 经销商系统的账号和汽车在线平台的账号对应关系,经销商自己管理,经销商使用汽车在线平台的账号来获取相应设备数据。 设备IMEI一般都会在出货前导入平台,导入到经销商账号后由经销商自己的系统管理,经销商可根据imei获取设备数据。 经销商的应用服务器调用API接口获取相应数据后自行处理。
使用方法
经销商提供他的几米平台登录账号、密码、邮箱和营业执照照片给业务申请appKey,appSecret 通过appkey、appSecret调用api接口获取访问令牌(access_token)。 经销商在应用服务器端使用该接口获取所需的数据。
协议格式
公共约定
约定
请求:Context-Type:application/x-www-form-urlencoded
时间统一采用UTC时间,国内是北京时间,格式
国外环境,时间是零时区UTC时间,格式
返回数据公共属性
| 参数 | 类型 | 类型 | 描述 |
|---|---|---|---|
| code | Int | 是 | 结果码 |
| message | String | 否 | Code描述 |
Code解释
| code | 值 | 描述 |
|---|---|---|
| -1 | -1 | 系统繁忙 |
| 0 | 0 | 成功 |
| 1xxx | 1001 | 参数错误(缺少必选参数或格式错误),具体查看接口描述 |
| 1002 | 非法用户/非法设备(查询的账号或设备不是自己的或下级的) | |
| 1003 | 重复提交操作 | |
| 1004 | 非法访问,token异常!(token失效或不存在) | |
| 1005 | 非法访问,ip访问超过限定次数! | |
| 1006 | 非法访问,请求频率过高! | |
| 1007 | 非法访问,请求方法错误! | |
| 1008 | 非法访问,来路异常! | |
| 12001 | 创建平台账号操作失败 | |
| 12002 | 转移设备操作失败 | |
| 12003 | 创建电子围栏操作失败 | |
| 12004 | 删除电子围栏操作失败 | |
| 12005 | 发送指令失败 | |
| 12006 | 更新设备信息失败 | |
| 12007 | 当前围栏名称已存在 | |
| 12008 | 围栏超过创建个数 | |
| 12009 | 围栏名称存在特殊字符 | |
| 12010 | 保存围栏告警失败 | |
| 12011 | 非法用户,删除围栏失败 | |
| 12012 | 删除围栏失败 | |
| 12013 | 没有查到围栏 | |
| 12014 | 围栏最多关联设备数量300个 |
业务错误码
| 业务 | 错误码 | 描述 |
|---|---|---|
| 创建账号 | 213 | 账号已存在 |
| 214 | 操作账号不存在 | |
| 215 | 用户类型错误,可能原因:1,新建用户类型为空;2,新建用户类型不存在;3,当前登录用户无权限新加该类型用户 | |
| 100001 | 没有创建平台账号的权限 | |
| 转移设备 | 217 | 目标用户不存在 |
| 218 | 操作用户只能往下级用户转移/销售设备 | |
| 219 | imei列表不合法 | |
| 220 | imei数量超出限制 | |
| 修改设备 | 223 | 车辆图标无效 |
| 电子围栏 | 41001 | 超过机型支持围栏数 |
| 41002 | 围栏名已存在 | |
| 41003 | 设备不在线 | |
| 41004 | 电子围栏操作失败 | |
| 41005 | 电子围栏不存在 | |
| 41006 | 不支持创建电子围栏 | |
| 指令 | 225 | 超时 |
| 226 | 参数错误 | |
| 227 | 指令未正确执行 | |
| 228 | 设备不在线 | |
| 229 | 网络错误,连接断开等 | |
| 238 | 设备中断 | |
| 240 | 数据错误 | |
| 243 | 设备不支持 | |
| 252 | 设备忙 | |
| 255 | 设备成功 |
通信流程
API数据流程
API列表
| 接口类别 | method参数名称 | 描述 |
|---|---|---|
| 认证API | jimi.oauth.token.get | 获取access_token |
| jimi.oauth.token.refresh | 刷新access_token | |
| 用户API | jimi.user.child.createPlatformUsers | 为指定账号创建子账号 |
| jimi.user.child.list | 查询账号下的所有子账户信息 | |
| jimi.user.device.list | 查询账户下所有设备信息 | |
| jimi.user.device.location.list | 查询账户下所有设备最新位置信息 | |
| 设备API | jimi.device.location.get | 根据IMEI获取最新定位数据 |
| jimi.device.location.getByImei | 根据IMEI查询数据 | |
| jimi.open.device.getDetails | 根据IMEI获取设备详细信息 | |
| jimi.open.device.getObdVehicleCondition | 根据IMEI获取设备ODB车况,故障信息 | |
| jimi.open.device.getClock | 获取打卡统计 | |
| jimi.device.track.list | 根据IMEI获取轨迹数据 | |
| 指令API | jimi.open.instruction.list | 获取设备支持的指令列表 |
| jimi.open.instruction.send | 指定设备发送指令 | |
| jimi.open.instruction.result | 获取设备指令结果 | |
| 围栏API | jimi.open.device.fence.create | 为设备imei创建电子围栏 |
| jimi.open.device.fence.delete | 为设备imei删除电子围栏 | |
| jimi.open.device.fence.get | 获取设备电子围栏信息 | |
| jimi.open.plat.fence.create | 创建平台围栏 | |
| jimi.open.plat.fence.delete | 删除平台围栏 | |
| jimi.open.plat.fence.query | 查询平台围栏 | |
| LBS-API | jimi.lbs.address.get | wifi、基站定位解析 |
| 消息服务 | jimi.push.device.alarm | 推送设备告警信息 |
接口调用限制/频次说明
| 接口 | 说明 |
|---|---|
| 认证API | |
| 其他接口 | |
| 消息服务 |
协议详情
调用入口
调用 API的服务URL地址,文档中所有接口都使用该url访问
| 调用环境 | 服务地址(HTTP) |
|---|---|
| 国内正式环境 | http://open.aichezaixian.com/route/rest |
认证
由几米服务平台给出API连接地址、有效的appkey和appSecret,用户通过
获取。
调用API时传入,并对请求参数进行签名,几米服务器端会验证
请求参数是否合法。
通用参数
| 参数名称 | 参数类型 | 是否必填 | 参数说明 | 取值说明 | 默认值 |
|---|---|---|---|---|---|
| method | String | 是 | API接口名称 | ||
| timestamp | String | 是 | 时间戳,格式为yyyy-MM-dd HH:mm:ss允许与系统时间误差正负10分钟,例如:2012-03-25 20:00:00 | ||
| app_key | String | 是 | 几米分给客户的APP_KEY | ||
| sign | String | 是 | API输入参数签名结果 | ||
| sign_method | String | 是 | 可选,指定签名方式。系统默认md5,支持方式有:md5 | md5 | md5 |
| v | String | 是 | 可选,指定API版本。系统默认1.0,支持版本有:0.9、1.0 | 0.9:不进行签名校验1.0:会进行签名校验 | |
| format | String | 是 | 可选,指定响应格式。系统默认json | json |
API签名
为了防止API调用过程中被黑客恶意篡改,调用任何一个API都需要携带签名,TOP服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝。TOP目前支持的签名算法有: MD5(本接口通用参数里面sign_method的值为md5),签名大体过程如下:
对所有API请求参数(包括公共参数和业务参数,但除去sign参数和byte[]类型的参数),根据参数名称的ASCII码表的顺序排序。如: foo=1, bar=2, foo_bar=3, foobar=4排序后的顺序是bar=2, foo=1, foo_bar=3, foobar=4。
将排序好的参数名和参数值拼装在一起,根据上面的示例得到的结果为:bar2foo1foo_bar3foobar4
把拼装好的字符串采用utf-8编码,使用签名算法对编码后的字节流进行摘要。如果使用MD5算法,则需要在拼装的字符串前后加上app的secret后,再进行摘要,如:md5(secret+bar2foo1foo_bar3foobar4+secret)
将摘要得到的字节流结果使用十六进制表示,如: hex(“helloworld”.getBytes(“utf-8”)) = “68656C6C6F776F726C64”
说明:MD5是128位长度的摘要算法,用16进制表示,一个十六进制的字符能表示4个位,所以签名后的字符串长度固定为32个十六进制字符。
算法
JAVA代码示例:
public static String signTopRequest(Mapparams, String secret, String signMethod) throws IOException { // 第一步:检查参数是否已经排序 String[] keys = params.keySet().toArray(new String[0]); Arrays.sort(keys); // 第二步:把所有参数名和参数值串在一起 StringBuilder query = new StringBuilder(); if ("md5".equals(signMethod)) { query.append(secret); } for (String key : keys) { String value = params.get(key); if (StringUtils.areNotEmpty(key, value)) { query.append(key).append(value); } } // 第三步:使用MD5/HMAC加密 byte[] bytes; if ("hmac".equals(signMethod)) { bytes = encryptHMAC(query.toString(), secret); } else { query.append(secret); bytes = encryptMD5(query.toString()); } // 第四步:把二进制转化为大写的十六进制 return byte2hex(bytes); } public static byte[] encryptHMAC(String data, String secret) throws IOException { byte[] bytes = null; try { SecretKey secretKey = new SecretKeySpec(secret.getBytes("UTF-8"), "HmacMD5"); Mac mac = Mac.getInstance(secretKey.getAlgorithm()); mac.init(secretKey); bytes = mac.doFinal(data.getBytes("UTF-8")); } catch (GeneralSecurityException gse) { throw new IOException(gse.toString()); } return bytes; } public static byte[] encryptMD5(String data) throws IOException { return encryptMD5(data.getBytes("UTF-8")); } private static byte[] encryptMD5(byte[] bytes) throws IOException { MessageDigest md = null; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { throw new IOException(e.toString()); } return md.digest(bytes); } public static String byte2hex(byte[] bytes) { StringBuilder sign = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(bytes[i] & 0xFF); if (hex.length() == 1) { sign.append("0"); } sign.append(hex.toUpperCase()); } return sign.toString(); }
IOS代码示例:
#import "JAVAToOC.h"
#import <CommonCrypto/CommonDigest.h>
@implementation JAVAToOC
+ (NSString *)signToRequest:(NSDictionary *)params
secret:(NSString *)secret
signMethod:(NSString *)signMethod
{
//第一步:参数按ASCII码表排序
NSArray *keys = params.allKeys;
NSStringCompareOptions comparisonOptions =NSCaseInsensitiveSearch|NSNumericSearch|
NSWidthInsensitiveSearch|NSForcedOrderingSearch;
NSComparator sort = ^(NSString *obj1,NSString *obj2){
NSRange range =NSMakeRange(0,obj1.length);
return [obj1 compare:obj2 options:comparisonOptions range:range];
};
NSArray *keysSort = [keys sortedArrayUsingComparator:sort];
//第二步:把所有参数名和参数串在一起
NSMutableString *appendStr = [[NSMutableString alloc] init];
if ([@"md5" isEqualToString:signMethod]) {
[appendStr appendString:secret];
}
for (NSString *key in keysSort) {
NSString *value = params[key];
if (value) {
[appendStr appendString:[NSString stringWithFormat:@"%@%@",key,value]];
}
}
// 第三步:使用MD5加密
[appendStr appendString:secret];
NSString *md5Result = [self md5HexDigest:appendStr];
return md5Result;
}
//MARK - md5加密
+ (NSString *) md5HexDigest:(NSString *)str
{
const char *original_str = [str UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(original_str, strlen(original_str), result);
NSMutableString *hash = [NSMutableString string];
for (int i = 0; i < 16; i++)
[hash appendFormat:@"%02X", result[i]];
return [hash uppercaseString];
}
@end
API调用示例
Java示例下载:java-demo
获取accesstoken
接口说明
获取后续访问接口的令牌,1分钟内只能访请求1次,在有效期内访问token不变。
请求URL
本接口通用参数里面method的值为jimi.oauth.token.get
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名称 | 参数类型 | 是否必填 | 参数说明 | 取值说明 | 默认值 |
|---|---|---|---|---|---|
| user_id | String | 是 | 平台账号 | ||
| user_pwd_md5 | String | 是 | 平台账号对应密码的MD5值 | 使用commons-codec.jar DigestUtils.md5Hex(pwd.getBety()); | MD5结果是小写的 |
| expires_in | String | 是 | access token的有效期,以秒为单位 | 60-7200 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 结果 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| accessToken | String | 后续接口访问的访问令牌,对应到公司下的帐号 |
| expiresIn | String | 有效期 |
| account | String | 请求的账号 |
| appKey | String | 几米分给给客户的APP_KEY |
| refreshToken | String | 刷新令牌,用于更新accessToken |
| time | String | 令牌生成的时间 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": {
"appKey": "8FB345B8693CCD003CC2DAB123456789",
"account": "jimitest",
"accessToken": "7da3330ec28e3996b6ef4a7123456789",
"expiresIn": 60,
"refreshToken": "7da3330ec28e3996b6ef4a7123456789",
"time": "2017-06-15 10:00:00"
}
}
错误返回示例:
{"code":xxx,"message":"账号或密码错误"}
刷新accesstoken
接口说明
该接口用于在accessToken即将失效时,通过该接口强制更新令牌,1分钟内只能访请求1次。
请求URL
本接口通用参数里面method的值为jimi.oauth.token.refresh
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名称 | 参数类型 | 是否必填 | 参数说明 | 取值说明 | 默认值 |
|---|---|---|---|---|---|
| access_token | String | 是 | 授权的令牌 | ||
| refresh_token | String | 是 | 授权的刷新令牌 | ||
| expires_in | String | 是 | access token的有效期,以秒为单位 | 60-7200 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 结果 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| accessToken | String | 后续接口访问的访问令牌,对应到公司下的帐号 |
| expiresIn | String | 有效期 |
| account | String | 请求的账号 |
| appKey | String | 几米分给给客户的APP_KEY |
| refreshToken | String | 刷新令牌,用于更新accessToken |
| time | String | 令牌生成的时间 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": {
"appKey": "8FB345B8693CCD003CC2DAB123456789",
"account": "jimitest",
"accessToken": "7da3330ec28e3996b6ef4a7123456789",
"expiresIn": 60,
"refreshToken": "7da3330ec28e3996b6ef4a7123456789",
"time": "2017-06-15 10:00:00"
}
}
错误返回示例:
{"code":xxx,"message":"非法请求,token无效"}
创建平台账号
接口说明
为指定账号创建子账号。
请求URL
本接口通用参数里面method的值为jimi.user.child.createPlatformUsers
HTTP请求方式
POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名称 | 参数类型 | 是否必填 | 参数说明 | 取值说明 | 默认值 |
|---|---|---|---|---|---|
| access_token | String | 是 | 授权的令牌 | ||
| top_account | String | 是 | 上级账号 | 取值范围3-30字符 | |
| nick_name | String | 是 | 客户名称 | 取值范围3-50字符 | |
| account_type | String | 是 | 新增账号类型 | (8:代理商,9:机构)说明:代理商可建用户:代理商,机构;机构可建用户:机构 | |
| account | String | 是 | 登录账号 | 取值范围3-30字符 | |
| password | String | 是 | 密码,采用md5加密后的值,小写 | 一个32位固定值使用commons-codec.jar DigestUtils.md5Hex(pwd.getBety()); | |
| phone | String | 否 | 手机号 | 取值范围0-20字符 | |
| String | 否 | 邮箱 | 取值范围0-50字符 | ||
| contact | String | 否 | 联系人 | 取值范围0-50字符 | |
| company_name | String | 否 | 公司名 | 取值范围0-50字符 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 结果 |
正确返回示例:
{
"code": 0,
"message": "添加成功",
"result": null
}
错误返回示例:
{"code":12001,"message":"创建用户失败,结果码:213"}
根据账户,获取该账户下的所有子账户信息
接口说明
查询账号下的所有子账户信息。
请求URL
本接口通用参数里面 method的值为jimi.user.child.list
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 无 | 访问令牌,表明其是一个合法第三方 |
| target | String | 是 | 无 | 要查询的用户账号(获取token时使用的账户或者其子账户) |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的参数 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| account | String | 登录帐号 |
| name | String | 显示名称 |
| type | Int | 帐号类型 3:终端用户 8:一级代理商 9:普通用户 10:普通代理商 11:销售 |
| displayFlag | Int | 是否启用(1:启用,0:不启用) |
| address | String | 所在地 |
| birth | String | 生日 |
| companyName | String | 公司名 |
| String | 邮箱 | |
| phone | String | 联系电话 |
| language | String | 语言(zh,en) |
| sex | Int | 性别0男,1女 |
| enabledFlag | Int | 标志:1可用,0不可用 |
| remark | String | 备注 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"account": "123123",
"name": "测试",
"type": 8,
"displayFlag": 1,
"address": null,
"birth": "2017-04-22 00:00:00",
"companyName": "",
"email": "",
"phone": "",
"language": "zh",
"sex": 0,
"enabledFlag": 1,
"remark": null
}
]
}
错误返回示例:
{"code":xxx,"message":"查询的账号不存在"}
根据账户,获取该账户下的所有IMEI信息
接口说明
查询账户下所有设备信息。
请求URL
本接口通用参数里面method的值为jimi.user.device.list
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| target | String | 是 | 无 | 要查询的用户账号(获取token时使用的账户或者其子账户) |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备IMEI |
| deviceName | String | 设备名称 |
| mcType | String | 设备型号 |
| mcTypeUseScope | String | 机型使用范围(aotomobile:汽车 electromobile:电动车 personal:个人 pet:宠物 plane:飞机 others:其他) |
| equipType | String | 设备类型(WIRED:有线 WIRELESS:无线) |
| sim | String | Sim卡号 |
| expiration | String | 到期时间,格式yyyy-MM-dd HH:mm:ss |
| activationTime | String | 激活时间,格式yyyy-MM-dd HH:mm:ss |
| reMark | String | 备注 |
| vehicleName | String | 车辆名称 |
| vehicleIcon | String | 车辆图标 |
| vehicleNumber | String | 车牌号 |
| vehicleModels | String | 车辆品牌 |
| carFrame | String | 车架号 |
| driverName | String | 司机名称 |
| driverPhone | String | 司机电话 |
| enabledFlag | Int | 是否启用(0:不启用;1:启用) |
| engineNumber | String | 电机发动机号 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"imei": "868120145233604",
"deviceName": "868120145233604",
"mcType": "GT300L",
"mcTypeUseScope": "personal",
"sim": "415451",
"expiration": "2037-04-01 23:59:59",
"activationTime": "2017-04-01 11:02:20",
"reMark": "test",
"vehicleName": null,
"vehicleIcon": "bus",
"vehicleNumber": "粤B3604",
"vehicleModels": null,
"carFrame": "2235",
"driverName": "driver",
"driverPhone": "13825036579",
"enabledFlag": 1,
"engineNumber": "8565674"
}
]
}
错误返回示例:
{"code":xxx,"message":"查询的账号不存在"}
根据账户,获取该账户下所有IMEI的最新定位数据
接口说明
获取一个账户名下所有设备最新位置信息。
请求URL
本接口通用参数里面method的值为jimi.user.device.location.list
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| target | String | 是 | 无 | 要查询的用户账号(获取token时使用的账户或者其子账户) |
| map_type | String | 否 | 无 | 如果要显示在百度地图上,map_type=BAIDU此时返回的经纬度将经过baidu校准方式校准 如果要显示在google地图上,map_type=GOOGLE,此时返回的经纬度将经过google校准方式校准 map_type如果不填,则返回原始经纬度 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
result数据:
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备IMEI |
| deviceName | String | 设备名称 |
| icon | String | 车辆图标 |
| status | String | 设备状态 0,离线; 1,在线 |
| lat | Double | 纬度 (如果设备过期,值为0) |
| lng | Double | 经度 (如果设备过期,值为0) |
| expireFlag | String | 是否过期1-未过期 0-过期 |
| activationFlag | String | 是否激活1-激活 0-未激活 |
| posType | String | 卫星定位-GPS, 基站定位-LBS, WIFI定位-WIFI, 蓝牙定位-BEACON |
| locDesc | String | 位置信息(固定为NULL) |
| gpsTime | String | GPS定位时间 |
| hbTime | String | 心跳时间 |
| speed | String | 速度 (单位:km/h) |
| accStatus | String | Acc状态 0:关闭 1:打开 |
| electQuantity | String | 设备电量(0-100),部分设备型号不支持 |
| powerValue | String | 外电电压(0-100),部分设备支持 |
| mileage | String | 里程统计 |
| powerStatus | String | 是否接入电源 1-已接入 0-未接入 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"imei":"201912260011110",
"deviceName":"GT300L++-11110",
"icon":"automobile",
"status":"1",
"posType":"GPS",
"lat":22.579998960919067,
"lng":113.92774687675565,
"hbTime":"2019-12-26 22:47:07",
"accStatus":"1",
"powerValue":null,
"powerStatus":"1",
"speed":"94",
"gpsTime":"2019-12-26 20:48:58",
"activationFlag":"1",
"expireFlag":"1",
"electQuantity":"100",
"locDesc":null,
"mileage":null
},
{
"imei":"869354040542244",
"deviceName":"GT300FZ+-42244",
"icon":"automobile",
"status":"0",
"posType":"LBS",
"lat":22.580009603951005,
"lng":113.92818862706419,
"hbTime":"2019-11-19 18:42:27",
"accStatus":"0",
"powerValue":null,
"powerStatus":"0",
"speed":null,
"gpsTime":"2019-11-19 18:35:54",
"activationFlag":"1",
"expireFlag":"1",
"electQuantity":"100",
"locDesc":null,
"mileage":"8983728.82476919"
}
]
}
错误返回示例:
{"code":xxx,"message":"查询的账号不存在"}
根据IMEI获取最新定位数据
接口说明
获取单个或多个设备最新的位置信息
请求URL
本接口通用参数里面method的值为jimi.device.location.get
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imeis | String | 是 | 无 | 设备imei号,多个中间用英文逗号隔开。 如果设备过多,建议采用POST方式(一次最多100个IMEI) |
| map_type | String | 否 | 无 | 如果要显示在百度地图上,map_type=BAIDU此时返回的经纬度将经过baidu校准方式校准 如果要显示在google地图上,map_type=GOOGLE,此时返回的经纬度将经过google校准方式校准 map_type如果不填,则返回原始经纬度 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备IMEI |
| deviceName | String | 设备名称 |
| icon | String | 车辆图标 |
| status | String | 设备状态 0,离线; 1,在线 |
| lat | Double | 纬度 (如果设备过期,值为0) |
| lng | Double | 经度 (如果设备过期,值为0) |
| expireFlag | String | 是否过期 1-未过期 0-过期 |
| activationFlag | String | 是否激活 1-激活 0-未激活 |
| posType | String | 卫星定位-GPS, 基站定位-LBS, WIFI定位-WIFI, 蓝牙定位-BEACON |
| locDesc | String | 位置信息(固定为NULL) |
| gpsTime | String | GPS定位时间 |
| hbTime | String | 心跳时间 |
| speed | String | 速度 (单位:km/h) |
| accStatus | String | Acc状态 0:关闭 1:打开 |
| electQuantity | String | 设备电量(0-100),部分设备型号不支持 |
| powerValue | String | 外电电压(0-100),部分设备支持 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"imei": "201801090000053",
"deviceName": "GT320-00053",
"icon": "automobile",
"status": "1",
"posType": "GPS",
"lat": 22.58474332760045,
"lng": 113.94101783150425,
"hbTime": "2019-01-18 15:32:43",
"accStatus": "1",
"powerValue": null,
"speed": "82",
"gpsTime": "2019-01-18 15:25:44",
"activationFlag": "1",
"expireFlag": "1",
"electQuantity": "100",
"locDesc": null
}
]
}
错误返回示例:
{"code":xxx,"message":"查询的账号不存在"}
根据IMEI查询数据
接口说明
获取单个或多个设备最新的位置信息
请求URL
本接口通用参数里面method的值为jimi.device.location.getByImei
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imeis | String | 是 | 无 | 设备imei号,多个中间用英文逗号隔开。 如果设备过多,建议采用POST方式(一次最多100个IMEI) |
| map_type | String | 否 | 无 | 如果要显示在百度地图上,map_type=BAIDU此时返回的经纬度将经过baidu校准方式校准 如果要显示在google地图上,map_type=GOOGLE,此时返回的经纬度将经过google校准方式校准 map_type如果不填,则返回原始经纬度 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备IMEI |
| status | String | 设备状态 0,离线; 1,在线 |
| lat | Double | 纬度 (如果设备过期,值为0) |
| lng | Double | 经度 (如果设备过期,值为0) |
| posType | String | 卫星定位-GPS, 基站定位-LBS, WIFI定位-WIFI, 蓝牙定位-BEACON |
| gpsTime | String | GPS定位时间,格式:yyyy-MM-dd HH:mm:ss |
| hbTime | String | 心跳时间,格式:yyyy-MM-dd HH:mm:ss |
| speed | String | 速度 (单位:km/h) |
| gpsSignal | String | GPS信号强度,1-5值越大信号越强 |
| gpsNum | String | 参与定位卫星数 |
| direction | String | 移动的方位角度 0-360 |
| powerStatus | String | 是否已接电源 1-已接入 0-未接入 |
| mileage | String | 里程统计 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"imei": "201901151234568",
"status": "0",
"lat": 22.58202343477221,
"lng": 113.93004104938407,
"posType": "GPS",
"gpsTime": "2019-01-29 16:40:04",
"hbTime": "2019-01-29 16:42:51",
"speed": "20",
"gpsSignal": "3",
"direction": "西北向(方向数:332)",
"mileage": "267103.63141907065",
"gpsNum": "11",
"powerStatus": "1"
}
]
}
错误返回示例:
{"code":xxx,"message":"非法设备"}
根据IMEI获取设备详细信息
接口说明
获取单个或多个设备的详细信息
请求URL
本接口通用参数里面method的值为jimi.open.device.getDetails
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imeis | String | 是 | 无 | 设备imei号,多个中间用英文逗号隔开; 如果设备过多,建议采用POST方式(一次最多100个IMEI) |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备IMEI |
| deviceName | String | 设备名称 |
| account | String | 所属用户账号 |
| activationTime | String | 激活时间 |
| expiration | String | 过期时间 |
| mcType | String | 机型 |
| sim | String | 卡号 |
| bindUserAccount | String | 绑定用户账号 |
| status | String | 状态 NORMAL-开机 DISABLE-停机 |
| driverPhone | String | 电话 |
| vehicleIcon | String | 车辆图标 |
| equipType | String | 设备类型(WIRED:有线 WIRELESS:无线) |
| mcTypeUseScope | String | 机型使用范围(aotomobile:汽车 electromobile:电动车 personal:个人 pet:宠物 plane:飞机 others:其他) |
| reMark | String | 备注 |
| sn | String | 箱号 |
| vehicleName | String | 车辆名称 |
| vehicleNumber | String | 车牌号 |
| vehicleModels | String | 车辆品牌 |
| carFrame | String | 车架号 |
| driverName | String | 司机名 |
| idCard | String | 身份证 |
| engineNumber | String | 发动机号 |
| installTime | String | 安装时间 |
| installAddress | String | 安装地址 |
| installCompany | String | 安装公司 |
| installPosition | String | 安装位置 |
| installPersonnel | String | 安装人员 |
| installImage | String | 安装图片 |
| salesMan | String | 业务员 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"imei": "987456123012358",
"deviceName": "123456788012354ui",
"account": "jimitest",
"activationTime": "2016-10-27 11:44:29",
"expiration": "2036-10-27 11:44:29",
"mcType": "ET200",
"sim": "22",
"bindUserAccount": null,
"status": "NORMAL",
"driverPhone": "25",
"vehicleIcon": "taxi",
"equipType": null,
"mcTypeUseScope": "electromobile",
"reMark": "123456788012354",
"sn": "123456788012354",
"vehicleName": null,
"vehicleNumber": "123456788012354u",
"vehicleModels": null,
"carFrame": "123456788012354",
"driverName": "是",
"idCard": "123456788012354",
"engineNumber": "123456788012354",
"installTime": null,
"installAddress": "123456788012354",
"installCompany": "123456788012354",
"installPosition": "123456788012354",
"installPersonnel": "123456788012354",
"installImage": "",
"salesMan": null
}
]
}
错误返回示例:
{"code":xxx,"message":"非法设备"}
根据IMEI获取设备ODB车况,故障信息
接口说明
获取单个或多个设备的ODB车况,故障信息
时间跨度不超过90天的数据。
请求URL
本接口通用参数里面method的值为jimi.open.device.getObdVehicleCondition
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imeis | String | 是 | 无 | 设备imei号,多个中间用英文逗号隔开; 如果设备过多,建议采用POST方式(一次最多100个IMEI) |
| startTime | String | 是 | 无 | 开始时间,格式为yyyy-MM-dd HH:mm:ss |
| endTime | String | 是 | 无 | 结束时间,格式为yyyy-MM-dd HH:mm:ss |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
| 参数 | 类型 | 描述 |
|---|---|---|
| acc | Int | acc信号 |
| batteryVoltage | Double | 电池电压 |
| direction | String | 航向 |
| engineLoad | Double | 发动机负荷 |
| fuelConsumption1 | Double | 平均油耗 |
| fuelConsumption2 | Double | 瞬时油耗 |
| gpsInfo | Int | 参与定位的卫星数 |
| gpsLen | Int | GPS信息长度 |
| gpsMode | Int | 定位模式 0:实时定位 1:差分定位 |
| gpsSpeed | Int | 车速 |
| gpsTime | String | GPS定位时间,格式:yyyy-MM-dd HH:mm:ss |
| idleTime | Double | 当前行程怠速时间 |
| imei | String | 设备号 |
| lat | Double | 纬度 |
| lng | Double | 经度 |
| maxSpeed | Double | 当前行程最高速度 |
| oilPer | Double | 单次用油量 |
| positionStatus | Int | 定位状态 0:为定位 1:已定位 |
| rotatingSpeed | Double | 转速 |
| speed | Double | 速度 |
| throttlePosition | Double | 节气门开度 |
| waterTemperature | Double | 水温 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"batteryVoltage": 13,
"rotatingSpeed": 0,
"gpsSpeed": 0,
"engineLoad": 0,
"throttlePosition": 0,
"waterTemperature": 89,
"fuelConsumption2": 0,
"fuelConsumption1": 0,
"oilPer": 0,
"acc": 0,
"idleTime": 0,
"maxSpeed": 0,
"gpsLen": 0,
"gpsInfo": 0,
"lat": 0,
"lng": 0,
"speed": 0,
"gpsMode": 0,
"positionStatus": 0,
"direction": "正北向(方向数:0)"
},
{
"batteryVoltage": 13,
"rotatingSpeed": 0,
"gpsSpeed": 0,
"engineLoad": 0,
"throttlePosition": 0,
"waterTemperature": 89,
"fuelConsumption2": 0,
"fuelConsumption1": 0,
"oilPer": 0,
"acc": 0,
"idleTime": 0,
"maxSpeed": 0,
"gpsLen": 0,
"gpsInfo": 0,
"lat": 0,
"lng": 0,
"speed": 0,
"gpsMode": 0,
"positionStatus": 0,
"direction": "正北向(方向数:0)"
},
{
"batteryVoltage": 13,
"rotatingSpeed": 0,
"gpsSpeed": 0,
"engineLoad": 0,
"throttlePosition": 0,
"waterTemperature": 89,
"fuelConsumption2": 0,
"fuelConsumption1": 0,
"oilPer": 0,
"acc": 0,
"idleTime": 0,
"maxSpeed": 0,
"gpsLen": 0,
"gpsInfo": 0,
"lat": 0,
"lng": 0,
"speed": 0,
"gpsMode": 0,
"positionStatus": 0,
"direction": "正北向(方向数:0)"
}
]
}
错误返回示例:
{"code":xxx,"message":"非法设备"}
获取打卡统计
接口说明
根据imei号,开始时间和结束时间
时间跨度不超过90天的数据。
请求URL
本接口通用参数里面method的值为jimi.open.device.getClock
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imeis | String | 是 | 无 | 设备imei号,多个中间用英文逗号隔开; 如果设备过多,建议采用POST方式(一次最多100个IMEI) |
| startTime | String | 是 | 无 | 开始时间,格式为yyyy-MM-dd HH:mm:ss |
| endTime | String | 是 | 无 | 结束时间,格式为yyyy-MM-dd HH:mm:ss |
| clockType | String | 否 | 无 | 打卡类型:1-上班 2-下班 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备号 |
| posMode | Int | 是否GPS定位:0-否 1-是 |
| clockType | Int | 打卡类型:1-上班 2-下班 |
| lat | Double | 纬度 |
| lng | Double | 经度 |
| addr | String | 地址 |
| gpsTime | String | 打卡时间,格式:yyyy-MM-dd HH:mm:ss |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"imei": "201801030929012",
"posMode": 1,
"clockType": 1,
"lat": 39.92839,
"lng": 119.539592,
"addr": "河北省秦皇岛市海港区汨罗江道1号,天河铝塑板厂南174米",
"gpsTime": "2019-09-09 09:47:24"
},
{
"imei": "201801030929012",
"posMode": 1,
"clockType": 2,
"lat": 39.918617,
"lng": 119.477338,
"addr": "河北省秦皇岛市海港区潘阳湖路,津秦客运专线西北137米",
"gpsTime": "2019-09-09 09:47:24"
}
]
}
错误返回示例:
{"code":xxx,"message":"非法设备"}
根据IMEI获取轨迹数据
接口说明
允许有线设备获取三个月内,时间跨度不超过2天的轨迹数据。
允许无线设备获取三个月内,时间跨度不超过60天的轨迹数据。
请求URL
本接口通用参数里面 method的值为jimi.device.track.list
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 无 | 访问令牌,表明其是一个合法第三方 |
| imei | String | 是 | 无 | 设备imei号(一次只能一个IMEI) |
| begin_time | String | 是 | 无 | 开始时间,格式为yyyy-MM-dd HH:mm:ss |
| end_time | String | 是 | 无 | 结束时间,格式为yyyy-MM-dd HH:mm:ss end_time不应大于当前时间。 |
| map_type | String | 否 | 无 | 如果要显示在百度地图上,map_type=BAIDU此时返回的经纬度将经过baidu校准方式校准 如果要显示在google地图上,map_type=GOOGLE,此时返回的经纬度将经过google校准方式校准 map_type如果不填,则返回原始经纬度 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
result数据列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| lng | Double | 经度 |
| lat | Double | 纬度 |
| gps Time | String | gps定位时间 格式yyyy-MM-dd HH:mm:ss |
| direction | String | 方位,正北开始的一个360度的极坐标方向 |
| gpsSpeed | String | GPS速度 |
| posType | String | 定位类型1是卫星定位 2是基站定位 3是wifi定位 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"lat": 22.577144898887813,
"lng": 113.91674845964586,
"gpsTime": "2017-04-26 00:00:58",
"direction": 0,
"gpsSpeed": -1,
"posType": 3
},
{
"lat": 22.57708,
"lng": 113.916631,
"gpsTime": "2017-04-26 00:01:30",
"direction": 184,
"gpsSpeed": 0,
"posType": 1
}
]
}
错误返回示例:
{"code":xxx,"message":"IMEI不存在{353419031939627}"}
{" code ":xxx,"message":"该设备已过期{353419031939627}"}
为设备IMEI修改车辆信息
接口说明
提供通过设备imei号更改车辆信息。
请求URL
本接口通用参数里面 method的值为jimi.open.device.update
HTTP请求方式
POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备imei号 |
| device_name | String | 否 | 无 | 设备名称 |
| vehicle_name | String | 否 | 无 | 车辆名称 |
| vehicle_icon | String | 否 | 无 | 车辆图标 |
| vehicle_number | String | 否 | 无 | 车牌号 |
| vehicle_models | String | 否 | 无 | 车辆品牌 |
| driver_name | String | 否 | 无 | 司机名称 |
| driver_phone | String | 否 | 无 | 司机电话 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
正确返回示例:
{
"code": 0,
"message": "修改设备车辆信息成功",
"result": null
}
错误返回示例:
{"code":xxx,"message":"设备imei不存在"}
转移设备
接口说明
将账号上的设备转移到下级账号上。
请求URL
本接口通用参数里面 method的值为jimi.open.device.move
HTTP请求方式
POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| src_account | String | 是 | 无 | 原用户账号 |
| dest_account | String | 是 | 无 | 目标用户账号 |
| imeis | String | 是 | 无 | 设备imei列表,使用逗号分隔,最多支持500个 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
正确返回示例:
{
"code": 0,
"message": "转移设备成功",
"result": null
}
错误返回示例:
{"code":12002,"message":"转移设备失败,结果码:217"}
获取设备支持的指令列表
接口说明
获取指定设备机型支持的指令列表。 注:不同型号的设备指令表不一样,获取到的指令列表是后台平台配置好,可以通过此接口下发给设备的,另可跟业务人员要相关型号指令表文档,辅助理解,接口不支持自定义指令。
请求URL
本接口通用参数里面 method的值为jimi.open.instruction.list
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备imei号 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 指令编码 |
| orderName | String | 指令名称 |
| orderContent | String | 指令模板 |
| orderExplain | String | 指令说明 |
| orderMsg | String | 提示 |
| isOffLine | String | 是否支持离线指令 0:否 1:是 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"id": 81,
"orderName": "SOS设置",
"orderContent": "SOS,A,{0},{1},{2}#",
"orderExplain": "SOS号码用于接收报警短信以及接收SOS报警,支持3~20位数字SOS号码设置",
"orderMsg": "",
"isOffLine": "1"
}
...
]
}
错误返回示例:
{"code":xxx,"message":"非法设备"}
指定设备发送指令
接口说明
给指定设备发送指令。
请求URL
本接口通用参数里面 method的值为jimi.open.instruction.send
HTTP请求方式
POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备imei号 |
| inst_param_json | String | 是 | 无 | 指令消息json字符串 |
inst_param_json参数说明
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| inst_id | String | 是 | 无 | 指令编码 |
| inst_template | String | 是 | 无 | 指令模板 |
| params | Array<string> | 是 | 无 | 指令参数字符串数组 |
| is_cover | boolean | 否 | false | 是否覆盖已存在的离线指令true-覆盖 false-不覆盖 |
inst_param_json参数示例: {\"inst_id\":\"81\", \"inst_template\":\"SOS,A,{0},{1},{2}#\", \"is_cover\": false, \"params\":[\"13243\",\"13241\"]}
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
正确返回示例:
{
"code": 0,
"message": "发送指令成功",
"result": null
}
错误返回示例:
{"code": 12005,"message": "下发指令失败,结果码:226","result": null}
获取设备指令结果
接口说明
获取设备已发送的指令结果。
请求URL
本接口通用参数里面 method的值为jimi.open.instruction.result
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备imei号 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| codeId | String | 指令编码 |
| code | String | 发送的指令 |
| content | String | 设备回复内容 |
| isExecute | String | 指令状态0:执行失败,1:执行成功,3:待发送,4:已取消 |
| sendTime | String | 发送时间 格式:yyyy-MM-dd HH:mm:ss |
| sender | String | 发送者 |
| receiveDevice | String | 接收的imei号 |
| isOffLine | String | 0在线 1离线 |
| idsource | String | 指令描述 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"codeId": "99",
"code": "status#",
"content": "参数错误",
"isExecute": "4",
"sendTime": "2017-06-19 11:46:00",
"sender": "jimitest",
"receiveDevice": "868120111111117",
"isOffLine": "1",
"idsource": "自定指令"
}
]
}
错误返回示例:
{"code":xxx,"message":"非法设备"}
为设备IMEI创建电子围栏
接口说明
为设备imei创建一个电子围栏信息
请求URL
本接口通用参数里面method的值为jimi.open.device.fence.create
HTTP请求方式
POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备imei号 |
| fence_name | String | 是 | 无 | 围栏名称 |
| alarm_type | String | 是 | 无 | 告警类型(in/out/in,out) |
| report_mode | String | 是 | 无 | 报警上报方式,0:仅GPRS,1:SMS+GPRS |
| alarm_switch | String | 是 | 无 | 围栏报警开关(ON开启/OFF关闭) |
| lng | String | 是 | 无 | 经度(说明:请传入与地图类型匹配的坐标系) |
| lat | String | 是 | 无 | 纬度(说明:请传入与地图类型匹配的坐标系) |
| radius | String | 是 | 无 | 围栏半径(1~9999;单位:百米) |
| zoom_level | String | 是 | 无 | 缩放级别(3-19) |
| map_type | String | 是 | 无 | 地图类型(baidu/google) |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据,成功后返回围栏序号 |
正确返回示例:
{
"code": 0,
"message": "创建电子围栏成功",
"result": "5"
}
错误返回示例:
{
"code": 41003,
"message": "设备不在线,无法创建电子围栏",
"result": null
}
为设备IMEI删除电子围栏
接口说明
为设备imei删除一个电子围栏信息
请求URL
本接口通用参数里面method的值为jimi.open.device.fence.delete
HTTP请求方式
POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备imei号 |
| instruct_no | String | 是 | 无 | 电子围栏指令序号 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
正确返回示例:
{
"code": 0,
"message": "删除电子围栏成功",
"result": "5"
}
错误返回示例:
{
"code": 41003,
"message": "设备不在线,无法删除电子围栏",
"result": null
}
获取设备电子围栏信息
接口说明
查询设备已设置的电子围栏记录
请求URL
本接口通用参数里面method的值为jimi.open.device.fence.get
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备imei号 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备IMEI |
| fenceName | String | 电子围栏名称 |
| instructNo | String | 电子围栏指令序号 |
| alarmType | String | 进出报警类型in,out |
| radius | String | 半径 |
| mapType | String | 地图类型,baidu/google |
| zoomLevel | String | 缩放级别 |
| lat | double | 与地图类型对应的纬度 |
| lng | double | 与地图类型对应的经度 |
| gpsLat | double | 原始GPS纬度坐标 |
| gpsLng | double | 原始GPS经度坐标 |
| instructCode | int | 设备返回码,参考指令错误码 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": [
{
"imei": "456789123456801",
"fenceName": "11111111111",
"instructNo": "1",
"alarmType": "in,out",
"radius": "5344",
"mapType": "baidu",
"zoomLevel": "12",
"lat": 22.6969,
"lng": 113.988498,
"gpsLat": 22.693452554454886,
"gpsLng": 113.97709023148917,
" instructCode":255
},
{
"imei": "456789123456801",
"fenceName": "1111223",
"instructNo": "2",
"alarmType": "in,out",
"radius": "4191",
"mapType": "baidu",
"zoomLevel": "12",
"lat": 22.613654,
"lng": 113.998272,
"gpsLat": 22.610193418762954,
"gpsLng": 113.98684308538836,
" instructCode":255
}]
}
创建平台围栏
接口说明
为设备imei创建一个平台围栏信息(一个imei最多创建20个平台围栏;围栏名称不可包含特俗字符;围栏名称不可重复)
请求URL
本接口通用参数里面method的值为jimi.open.plat.fence.create
HTTP请求方式
POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备imei号(多个中间用英文逗号隔开) |
| fence_name | String | 是 | 无 | 围栏名称 |
| fence_shape | String | 是 | circle | 围栏形状(只能为circle——圆) |
| status | String | 是 | 无 | in-进围栏,out-出围栏,all-进出都有 |
| lng | double | 是 | 无 | 经度(说明:请传入与地图类型匹配的坐标系) |
| lat | double | 是 | 无 | 纬度(说明:请传入与地图类型匹配的坐标系) |
| radius | double | 是 | 无 | 围栏半径(200~999900;单位:米) |
| map_type | String | 是 | 无 | 地图类型(baidu/google) |
| scale | int | 是 | 无 | 缩放级别(3~19) |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据,成功后返回围栏序号 |
正确返回示例:
{
"code": 0,
"message": "成功",
"result": "01013fa931464dd792596c8194b93a11"
}
错误返回示例:
{
"code": 12008,
"message": "围栏超过创建个数",
"result": null
}
删除平台围栏
接口说明
删除平台围栏信息
请求URL
本接口通用参数里面method的值为jimi.open.plat.fence.delete
HTTP请求方式
POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| fence_id | String | 是 | 无 | 围栏ID |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
正确返回示例:
{
"code": 0,
"message": "成功",
"result": null
}
错误返回示例:
{
"code": 12012,
"message": "删除围栏失败",
"result": null
}
查询平台围栏
接口说明
查询平台围栏信息
请求URL
本接口通用参数里面method的值为jimi.open.plat.fence.query
HTTP请求方式
GET
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 设备号 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备imei号 |
| fenceName | String | 围栏名称 |
| fenceShape | String | 围栏形状(只能为circle——圆) |
| status | String | in-进围栏,out-出围栏,all-进出都有 |
| lng | double | 经度与地图类型对应的经度 |
| lat | double | 纬度与地图类型对应的纬度 |
| gpsLng | double | 经度原始GPS经度坐标 |
| gpsLat | double | 纬度原始GPS纬度坐标 |
| radius | double | 围栏半径(200~999900;单位:米) |
| mapType | String | 地图类型(baidu/google) |
| scale | int | 缩放级别(3~19) |
| fenceId | int | 围栏ID |
正确返回示例:
{
"code":0,
"data":[
{
"imei":"201902270000991",
"fenceName":"20190404135126",
"fenceShape":"circle",
"status":"",
"lng":113.92678,
"lat":22.594122,
"gpsLng":22.5876611571396,
"gpsLat":113.92075500939703,
"radius":400,
"mapType":"baidu",
"scale":16,
"fenceId":"f6f725bc7582417c94a53fd87f46a70a"
},
{
"imei":"201902270000991",
"fenceName":"大家围栏",
"fenceShape":"circle",
"status":"",
"lng":114.03696,
"lat":22.616546,
"gpsLng":22.609745442778124,
"gpsLat":114.03099923044476,
"radius":200,
"mapType":"baidu",
"scale":3,
"fenceId":"61fc1f44ad2d414c9c9d3cd5cf7ba3c5"
}
],
"msg":"success"
}
wifi、基站定位解析接口
接口说明
按用户名下总设备数(按每10次/天/设备,包含下级所有子账户)总数配置限额。
wifi、基站定位解析接口,相同设备10秒只能调1次,接口返回的坐标系为WGS84
请求URL
本接口通用参数里面 method的值为jimi.lbs.address.get
HTTP请求方式
GET/POST
请求参数
(1)通用参数
参见:通用参数
(2)私有参数
| 参数名 | 参数类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
| access_token | String | 是 | 访问令牌,表明其是一个合法第三方 | |
| imei | String | 是 | 无 | 设备Imei号 |
| lbs | String | 否 | 无 | (wifi和LBS至少一项) LBS信息组(mcc,mnc,lac,cell,rssi)最多7个,每组五项,每一项不能为空,顺序不能改变 MCC移动国家代码,中国460 MNC移动网络码,移动0 LAC基站分区信息, 2312 23222 CELL基站编码23222 RSSI信号量-70 |
| wifi | String | 否 | 无 | (wifi和LBS至少一项) mac1,rssi1| mac2,rssi2 mac地址,没有中间的冒号,大小写不敏感, rssi信号强度 |
返回值
| 参数 | 类型 | 描述 |
|---|---|---|
| code | Int | 返回码: 0: 正确返回 其它: 失败。参考错误码说明 |
| message | String | 如果code不为0,会有相应的错误信息提示 |
| result | String | 返回的数据 |
result参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
| lng | String | 经度(WGS84坐标系) |
| lat | String | 纬度(WGS84坐标系) |
| accuracy | String | 精准度,值越大越好 |
正确返回示例:
{
"code": 0,
"message": "success",
"result": {
"lat": 40.65615416521587,
"lng": 109.89894039833524,
"accuracy": 0
}
}
错误返回示例:
{"code":xxx,"message":"非法设备"}
消息推送接口
接口说明
第三方平台提供已经调通的消息接收的url地址发给对接人员,几米平台调用该url请求发送数据
消息服务列表
| 消息服务 | 描述 |
|---|---|
| jimi.push.device.alarm | 设备告警数据 |
推送的内容如下:
| 参数 | 类型 | 描述 |
|---|---|---|
| msgType | String | 消息类型,对应消息服务列表 |
| data | String | 消息内容,具体内容与msgType对应 |
告警推送 (jimi.push.device.alarm)
推送策略:当告警推送失败时,会将失败告警记录下,第二天上午9点定时重推一次,如果还是失败则丢弃。
推送的告警属性如下:
| 参数 | 类型 | 描述 |
|---|---|---|
| imei | String | 设备imei |
| deviceName | String | 设备名称 |
| alarmType | String | 告警类型 |
| alarmName | String | 告警名称 |
| lat | String | 纬度(WGS84坐标系) |
| lng | String | 经度(WGS84坐标系) |
| alarmTime | String | 告警时间,格式(yyyy-MM-dd HH:mm:ss) |
| address | String | 告警地址(未解析成功时返回null) |
消息示例:
参数示例:
"msgType": "jimi.push.device.alarm",
"data": {
"imei": "868120145233604",
"deviceName": "868120145233604",
"alarmType": "2",
"alarmName": "断电报警",
"lat": 40.65615416521587,
"lng": 109.89894039833524,
"alarmTime": "2017-05-08 12:00:00",
"address": "北京市xxx路"
}
附:设备告警类型
| 参数 | 描述 |
|---|---|
| 1 | SOS求救 |
| 2 | 断电报警 |
| 3 | 震动报警 |
| 4 | 进入电子围栏(终端) |
| 5 | 离开电子围栏(终端) |
| 6 | 超速报警 |
| 9 | 位移报警 |
| 10 | 进卫星盲区报警 |
| 11 | 出卫星盲区报警 |
| 12 | 开机报警 |
| 13 | 卫星第一次定位报警 |
| 14 | 外电低电报警 |
| 15 | 外电低电保护报警 |
| 16 | 换卡报警 |
| 17 | 关机报警 |
| 18 | 外电低电保护后飞行模式报警 |
| 19 | 拆卸报警 |
| 20 | 门报警 |
| 22 | 声控报警 |
| 23 | 伪基站报警 |
| 24 | 开盖报警 |
| 25 | 内部电池低电报警 |
| 32 | 进入深度睡眠报警 |
| 37 | 光感报警 |
| 45 | 脱落报警 |
| 50 | 拔出报警 |
| 60 | 盗车报警 |
| 61 | 非法启动报警 |
| 90 | 低电报警 |
| 128 | 后视镜震动报警 |
| 129 | 超流量告警 |
| 135 | 超速报警(DVR) |
| 144 | 急加速告警 |
| 145 | 急减速告警 |
| 146 | 急转弯告警 |
| 147 | 撞车告警 |
| 192 | 非法移动告警 |
| 194 | 后备电池电量不足告警 |
| 195 | 越界告警 |
| 1001 | ACC关闭 |
| 1002 | ACC开启 |
| 1003 | 离线告警 |
| 1004 | 停留告警 |
| 1005 | 逗留告警 |
| 1006 | 进入围栏 |
| 1007 | 离开围栏 |
| 1008 | 长时间不进围栏 |
| 1009 | 长时间不出围栏 |
| 1010 | 黑车围栏告警 |
| 1011 | 超速报警(平台) |
| 1012 | 风险点告警 |