获取手表数据

如何开发云端API

您需要开发一个Web API程序,使用http协议。部署您的API程序后,您应该有一个API的地址(URL),这将是设备上传数据的地址。这个API接收手表上传的数据,解析后根据您的业务需求决定怎么处理数据。这个API的开发请参考我们提供的API示例程序,示例程序下载链接在下面提供。编译示例程序部署到您的服务器,即可接受手表上传数据。

API示例程序

Java版本API(springboot): Java示例下载

Golang版本API(echo): Go示例下载

python版本API(flask): python示例下载

c#版本API(asp.net): c#示例下载

php版本API(lumen): php示例下载

API示例程序包括三个API,1. 设备上传健康数据的,2. 设备上传报警的, 3. 上传SOS报警和通话记录。 设备只会调这三个API上传设备数据,这三个API的路径必须 是/pb/upload,/alarm/upload,/call_log/upload结尾,前面路径一致,只能是http://开头,暂时不支持https://,如:

http://xxx.dev.com/4g/pb/upload
http://xxx.dev.com/4g/alarm/upload
http://xxx.dev.com/4g/call_log/upload

有的手表可能支持https,具体请询问相关人员``

重要注意事项

设备上传数据的实际mime类型是application/octet-stream,但Http Header里面设置的Content-Type是 application/x-www-form-urlencoded,所以如果您的API程序用的Web框架(如springboot)会强制检查Http Header 里面设置的Content-Type和数据的格式是否一致,那么解析http内容会出错。如果您无法修改这个逻辑,需要配置一个web服务器, 如nginx/apache,修改转发到这个API URL的请求Content-Type为application/octet-stream。以我们提供的API示例程序来说, Java(springboot)示例程序需要配置web服务器修改Content-Type,其他版本示例程序不需要。 api开发的一些技术问题请进一步参考这个文档 apifaq

上传数据格式

上传数据格式包是埃微自定义格式,具体如下

header

field

type

notation

prefix

uint8[2]

数据包标识,固定为0x4454

length

uint16

数据(payload)长度

crc

uint16

payload的crc校验码

opt

uint16

payload协议所属的数据协议编码

payload

data

uint8[]

数据内容,protobuf生成

opt定义您会用到的有:

  • 0x80 所有健康数据

  • 0x0A 当前步数/距离/卡路里;GNSS数据

  • 0x12 设备警报

设备上传的数据是一个或多个数据包前后拼接构成的。数据用小端模式。

数据定义proto文件下载:

proto文件

proto文件只是用来生成protobuf类型代码的,这里面只有少数是您会用到的,具体会用到的数据类型和含义请参考sample api数据解析部分

测试您的API

访问测试工具: API测试 测试地址请填您的/pb/upload地址,如http://xxx.dev.com/4g/pb/upload

成功

成功

失败

失败

这个测试工具是根据我们的手表接受的API返回协议测试,正常情况下,API应返回0x00

修改手表上传数据地址

部署好您的API后,需要修改手表上传数据地址到您的API地址,我们提供了Android app做地址修改,app通过蓝牙连接手表,写入上传地址,app下载地址: app

app使用说明: app手册

app操作视频: app视频

如何给手表发送指令

指令下发可以访问entservice服务,entservice服务参考文档- entservice