简介

这里先给开发者介绍一个完整的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的方案,一种是汉枫的方案

配置项 说明
EK-TM4C123GXL ARM开发板型号
LH 781 WIFI开发板型号
配置项 说明
EK-TM4C123GXL ARM开发板型号
LPB 100 WIFI开发板型号

硬件连接

ARM引脚 说明
SW1 指示灯开关
SW2 WIFI密码复位按键
RESET ARM开发板驱动
PB0 UART_RX
PB1 UART_TX
D1 指示灯
Debug 调试口、Stellaris串口
Power_Select 电源开关,debug:on,device: off
引脚和接口 说明
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,并设置好环境变量PATHJAVA_HOME
Maven Maven官网下载 Maven3.x以上,解压下载包,阅读README.txt安装
Intellij Intellij官网下载 下载Java IDE

服务运行

按照如下步骤,即可运行服务,强烈建议用IDE重新编译工程,并通过单元测试后再将服务发布到AbleCloud的测试平台。

  1. 下载AbleCloud服务框架:从AbleCloud官网下载服务框架发布zip包并解压;
  2. 下载demo的源码:从本文结尾下载链接下载demo服务源码zip包;
  3. 用Intellij编译demo:用Intellij打开源码工程,并用命令mvn package编译、单测demo工程;
  4. 打包demo服务:如果上一步没有错误,则将编译好的demo服务jar包放入下载并解压的AbleCloud服务框架的lib文件夹中,重新将AbleCloud服务框架打包成zip包,可起名为demo.zip,DemoService.zip等任何你喜欢的名字。
  5. 在console平台发布demo:则可以在console平台发布产品,细节见下文。

注:本demo服务提供的可执行zip包,不用任何修改,即可在AbleCloud平台发布运行。但强烈建议根据源码重新编译,这样能进一步了解后端服务开发流程。服务开发具体流程参见开发环境设置章节

APP环境

文档细节正在更新中,敬请等待,目前下载demo的APK安装即可运行,并直观感受本demo功能。

使用流程

1. 注册开发者

当你刚拿到开发板,服务程序等时,还不能直接使用,需要你在AbleCloud的console上申请注册开发者,我们的工作人员会第一时间处理你的申请,并将注册结果信息反馈给你。具体参见申请域名章节。

注:demo只能在AbleCloud的测试环境运行。

2. 创建产品(工程)

用申请好的开发者帐号登录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是主键的一部分,在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-DomainX-Zc-Sub-DomainX-Zc-Developer-IdX-Zc-Access-KeyX-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.zipablecloud-framework-1.0.2.zip
Android APP源码 demo.src.zip

注:现在MCU固件没有提供bin文件,需要用户通过IAR编译源码并烧制到MCU中。