简介
这里先给开发者介绍一个完整的demo,包括硬件模块,后端服务,app程序以及console操作等,并介绍完整的操作流程,让你对AbleCloud能提供的功能有一个比较全面的了解。本文结尾处,我们同时提供各模块demo的源代码下载,在你了解了demo的功能后,可以根据自己的兴趣扩展demo的功能。 AbleCloud的宗旨是为了让你能尽量简单快捷的开启硬件的云端智慧,通过本demo,你会觉得通过AbleCloud开发一套智能硬件系统不再复杂、麻烦,而是变得轻松有趣。
注:本篇不介绍具体的功能开发,各模块的开发手册可参考具体的说明文档.
场景介绍
本示例场景有一智能灯,可以通过手机端向云端发消息远程控制灯的开/关,云端服务把这些APP发来的控制行为记录到AbleCloud提供的云存储中。同时,智能灯也可能由用户通过机械开关起停,智能灯将这类开/关事件也主动汇报到服务端,我们写的服务程序将主动汇报开/关数据也存到云存储中。所有存储在云存储中的数据,可提供给APP查询,比如可用于统计用户的作息习惯等。
环境搭建
为了便于你快速感受AbleCloud提供的服务,迅速将该demo运行起来,先给大家来介绍下软硬件环境设置。
固件环境
软件环境
配置项 | 说明 |
---|---|
SecureCRT | 串口调试工具 |
IAR7.30 | Demo固件开发环境 |
ICDI驱动包 | ARM开发板驱动 |
CP210XUSB转串口驱动 | WIFI开发板驱动 |
硬件环境
硬件环境提供两种wifi方案,一种是MT7681的方案,一种是汉枫的方案
- MT7681方案
配置项 | 说明 |
---|---|
EK-TM4C123GXL | ARM开发板型号 |
LH 781 | WIFI开发板型号 |
- 汉枫方案
配置项 | 说明 |
---|---|
EK-TM4C123GXL | ARM开发板型号 |
LPB 100 | WIFI开发板型号 |
硬件连接
- ARM板卡
ARM引脚 | 说明 |
---|---|
SW1 | 指示灯开关 |
SW2 | WIFI密码复位按键 |
RESET | ARM开发板驱动 |
PB0 | UART_RX |
PB1 | UART_TX |
D1 | 指示灯 |
Debug | 调试口、Stellaris串口 |
Power_Select | 电源开关,debug:on,device: off |
- MT7681开发板
引脚和接口 | 说明 |
---|---|
HW_RST | 串口调试工具 |
CN1 | 电源、CP210X USB转串口 |
R15 | UART_TX连接ARM PB0 |
R41 | UART_RX连接ARM PB1 |
- 汉枫开发板
引脚和接口 | 说明 |
---|---|
RS232 | 串口调试 |
DC5-18V | 电源 |
UART0_TX | UART_TX连接ARM PB0 |
UART0_RX | UART_RX连接ARM PB1 |
Reboot | 复位 |
Reload | Wifi密码重置 |
4(标号见开发板背面) | 连接ARM板的GND |
注:当APP配置无线路由器密码到WIFI模块成功,ARM串口会打印 Wifi Connect!当WIFI模块连接云端成功,会在ARM串口打印Cloud Connect!
当首次使用时,需要进行wifi密码重置,使用MT7681时,请按arm开发板上的sw2进行密码重置,使用汉枫方案时,使用汉枫开发板上的Reload按键进行密码重置
后端服务环境
AbleCloud目前提供JAVA版后端服务开发框架,因此用户自定义服务也需用JAVA开发。IDE用你熟悉的即可,比如Eclipse,Intellij等。本demo源码工程为Intellij建立,并采用maven编译打包。
软件环境
本demo服务端开发编译依赖软件如下,请下载并安装好:
软件 | 下载地址 | 说明 |
---|---|---|
JDK | JDK1.7官网下载 | 需要JDK 1.7,并设置好环境变量PATH 和JAVA_HOME |
Maven | Maven官网下载 | Maven3.x以上,解压下载包,阅读README.txt 安装 |
Intellij | Intellij官网下载 | 下载Java IDE |
服务运行
按照如下步骤,即可运行服务,强烈建议用IDE重新编译工程,并通过单元测试后再将服务发布到AbleCloud的测试平台。
- 下载AbleCloud服务框架:从AbleCloud官网下载服务框架发布zip包并解压;
- 下载demo的源码:从本文结尾下载链接下载demo服务源码zip包;
- 用Intellij编译demo:用Intellij打开源码工程,并用命令
mvn package
编译、单测demo工程; - 打包demo服务:如果上一步没有错误,则将编译好的demo服务jar包放入下载并解压的AbleCloud服务框架的lib文件夹中,重新将AbleCloud服务框架打包成zip包,可起名为demo.zip,DemoService.zip等任何你喜欢的名字。
- 在console平台发布demo:则可以在console平台发布产品,细节见下文。
注:本demo服务提供的可执行zip包,不用任何修改,即可在AbleCloud平台发布运行。但强烈建议根据源码重新编译,这样能进一步了解后端服务开发流程。服务开发具体流程参见开发环境设置章节
APP环境
文档细节正在更新中,敬请等待,目前下载demo的APK安装即可运行,并直观感受本demo功能。
使用流程
1. 注册开发者
当你刚拿到开发板,服务程序等时,还不能直接使用,需要你在AbleCloud的console上申请注册开发者,我们的工作人员会第一时间处理你的申请,并将注册结果信息反馈给你。具体参见申请域名章节。
注:demo只能在AbleCloud的测试环境运行。
2. 创建产品(工程)
- 产品:一种功能独立的设备可称为一个产品,比如空气净化器起名为
aircleaner
,智能灯为light
等,创建产品时要指定子域名。 - 子域:即sub-domain,和产品对应的唯一标识,子域在创建产品时指定,便于开发自定义Web服务发现和多个Web服务的管理。
用申请好的开发者帐号登录console。该demo需要在console上创建,这里创建产品为light
。
注:在AbleCloud中,创建产品时自动创建子域,因此无需单独创建子域。同一主域下的后端服务,可跨子域访问控制设备。
3. 烧制域id和设备id
登录console后,在产品管理页可以查看到你的域名、域id等信息。设备物理id为16字节acsii字符,默认为16个'1',即字符串“1111111111111111”
。打开固件demo工程里的ac_cfg.h文件,将上述申请到的主域id更新到MAJOR_DOMAIN_ID,子域id更新到SUB_DOMAIN_ID,设备物理id更新到DEVICE_ID。用IAR MAKE并DOWNLOAD到ARM板卡中。
注:这三个变量均是宏定义,其中设备物理id为8字节字符串,主域id和子域id为整数。
4. 创建数据集
后端服务会将智能灯的开/关事件存储到AbleCloud提供的云存储中,在数据存储前,需要你在console上创建数据集(类似于数据库的表格)。具体参见创建数据集章节。
数据集格式如下:
-
分区key:即entity group key
key type deviceId 整型 -
主键:即primary key
key type deviceId 整型 time 整型
注:由于分区key是主键的一部分,在console上创建数据集时,只需要创建所有的主键,并标注
deviceId
为分区键。
5. 上线后端服务
下载ablelcoud提供服务框架zip包AbleCloud-framework-1.0.0.zip
并解压,修改配置文件config/cloudservice-conf.xml
的内容,只需要修改如下配置项:
<developer>
<id>2</id>
</developer>
<authentication>
<access-key>1ce883b840f00fef8086d214e6455f58</access-key>
<secret-key>15ffa41c403a46ae80dffffdc4277a09</secret-key>
<timeout>300</timeout>
</authentication>
<service>
<major-domain>ablecloud</major-domain>
<sub-domain>test</sub-domain>
</service>
修改developer.id
为你注册的开发者id(登录后可在个人信息页查看)。修改ak/sk为你开发者帐号的ak/sk,修改service.major-domain
为注册成功时AbleCloud分配的主域名,修改service.sub-domain
为你创建的子域名(demo服务程序所属的子域名),我们提供的demo后端服务便属于该子域。
注:如果创建产品时,产品子域名为
test
,则sub-domain
配置项无需修改。以上配置项信息,都可以在你登录console后查看。
下载demo演示源码包DemoService.src.zip
并解压,用Intellij打开demo工程,在Intellij中maven package命令编译并执行单元测试,如果没有错误,则在demo工程主目录下会生成target\lib
目录,编译好后的demo服务jar包DemoService-1.0.0.jar
便位于该目录中。拷贝DemoService-1.0.0.jar
到解压后AbleCloud发布的框架的lib目录中。体流程参见开发环境设置章节
配置项修改好后,再将修改后的config目录、lib目录、start.sh打包成zip包,在console上发布并上线该演示程序。具体参见服务管理章节。上线成功后,该demo程序便运行在AbleCloud提供的后端云平台上。
6. APP控制
经过前面的环境搭建小节以及以上步骤,我们的硬件设备(智能灯)、后端服务都已经准备好了。剩下的就是通过手机来控制我们的这款智能灯,直观的感受本demo的完整功能。
7. 通过本地命令行控制
因为AbleCloud可以通过云端控制智能设备,因此在开发测试过程中不用APP,也可以发送命令给后端服务,后端服务实现对设备的远程控制。可以用任何能发HTTP POST请求的客户端工具发送命令,这里以linux下的curl为例,发送对demo的智能灯控制命令如下:
curl -v -X POST -H “Content-Type:application/x-zc-object” -H “X-Zc-Major-Domain:ablecloud” -H “X-Zc-Sub-Domain:test” -H “X-Zc-Developer-Id:2” -H “X-Zc-Access-Key:1ce883b840f00fef8086d214e6455f58” -H “X-Zc-Timestamp:1417606141” -H “X-Zc-Timeout:6000000” -H “X-Zc-Nonce:exzabc9xy10a2cb3” -H “X-Zc-Developer-Signature:ae8ee047980c628eb70f05af70922964ce8c7a287359188a00669b7bd079e059” -d ‘{“deviceId”:1,”action”:”on”}’ http://test.ablecloud.cn:5000/DemoService/v1/controlLight
其中-d
指定的参数即为具体的控制消息内容:发往设备id为1的等,on
表示开灯,off
表示关灯。HTTP头域中的X-Zc-Major-Domain
、X-Zc-Sub-Domain
、X-Zc-Developer-Id
、X-Zc-Access-Key
、X-Zc-Developer-Signature
这几项,各厂商/开发者有所不同,具体请登录console查看。
注:如果用于测试的账号是开发者,则在构造http请求的时候,需要如下三个头域:X-Zc-Developer-Id、X-Zc-Access-Key、X-Zc-Developer-Signature。如果用于测试的账号是普通用户,则如下需要如下两个头域:X-Zc-User-Id、X-Zc-User-Signature。
扩展功能
下载各模块源码,并参见各部分的开发手册进行功能扩展。
下载链接
- 可执行程序
可执行程序 | 下载地址 | 说明 |
---|---|---|
后端服务 | DemoService.zip | |
Android APP | demo.apk |
- 源码
源码 | 下载地址 | 说明 |
---|---|---|
MCU固件 | firmware.src.zip | |
后端服务源码 | DemoService.src.zip, ablecloud-framework-1.0.2.zip | |
Android APP源码 | demo.src.zip |
注:现在MCU固件没有提供bin文件,需要用户通过IAR编译源码并烧制到MCU中。