开发框架
名词解释
名称 | 含义 |
---|---|
UserApp | User Application,用户部署在嵌入式Linux设备上的应用程序,开发者自行实现的设备控制逻辑和业务逻辑 |
AcAPI | Ablecloud API,Ablecloud提供给开发者的API,供UserApp调用 |
设备应用开发框架
对于Linux设备,用户的应用程序通过调用Ablecloude的SDK实现与云端/移动端的通信,用户应用程序(UserApp)可以把Ablecloud的SDK看成一个联网模块(AC联网模块),二者处于同一个进程中:
在使用SDK开发时,软件逻辑分如下四个部分:
1. UserApp:用户应用程序。实现设备的控制过程,此部分由厂商自行实现。
2. AcAPI:Ablecloud为UserApp提供的API接口函数。负责用户控制逻辑与云端/APP之间的数据收发、协议报文的解析/组装等。
3. AC联网模块:Ablecloud提供的联网模块,包括硬件抽象层,云端协议层以及链路安全层。
4. AC Http OTA模块:Ablecloud提供的使用Http进行文件上传/下载的模块。
开发时,开发者只需要了解Ablecloud提供的API接口,剩下的就是用户自己的控制逻辑的开发。
下面首先介绍开发者需要掌握的基本概念,之后以功能为主体,结合场景叙述开发者如何通过调用Ablecloud的API实现各个功能。
基本概念
UserApp通过AC联网模块可以实现与云端/移动端之间的消息交互,开发者不需要关心交互的消息的完整格式,只需要掌握如下概念:
(1)消息构成
对开发者来说,设备与云端之间的消息由以下部分构成:
名称 | 作用 |
---|---|
MsgSN | 消息的序号(Msg Sequence Number),设备主动上报时填0;设备响应云端指令时必须填写对应的云端指令携带的MsgSN |
MsgCode | 标识payload的类型 |
Payloadlen | 消息携带的payload的长度,以字节为单位 |
payload | 消息体 |
(2)MsgCode
MsgCode用来标识设备与云端交互的消息类型,云端和设备端根据对应的MsgCode区分消息携带的payload的类型。
消息类型表(MsgCode)如下:
MsgCode | 消息类型 | 消息类型说明 |
---|---|---|
2 | AC_CODE_WIFI_CONNECTED | WiFi链接成功通知 |
3 | AC_CODE_WIFI_DISCONNECTED | WiFi断链通知 |
4 | AC_CODE_CLOUD_CONNECTED | 云端链接成功通知 |
5 | AC_CODE_CLOUD_DISCONNECTED | 云端链接断链通知 |
17 | ZC_CODE_OTA_BEGIN | MCU OTA开始通知 |
18 | ZC_CODE_OTA_FILE_BEGIN | MCU OTA文件传输开始通知 |
19 | ZC_CODE_OTA_FILE_CHUNK | MCU OTA文件块到达通知 |
20 | ZC_CODE_OTA_FILE_END | MCU OTA文件传输结束通知 |
21 | ZC_CODE_OTA_END | MCU OTA结束通知 |
64 | AC_EVENT_BASE | 设备自定义控制消息基址 |
(64,200) | AC_EVENT_CONTROL_AND_RESPONSE | 设备自定义,由服务或APP发给设备的控制消息以及设备的应答消息 |
[200,255] | AC_EVENT_DEVICE_REPORT | 设备自定义,设备上报信息 |
注意: 小于64的MsgCode是AC使用的消息码,开发者不能占用。[64,255]是提供给开发者的设备自定义消息码,开发者使用时需要遵守表中的规则,且要与移动端协商一致
(3)payload
是由MsgCode定义的消息类型的具体内容。payload的格式可以是二进制,也可以是JSON。
注意:
建议Linux设备开发者使用JSON格式
获取API接口详细信息
下面开发指导中用到的所有AC提供的用于Linux设备的API函数,其接口的详细信息请参阅Linux设备API参考手册