最近开发完成了一款利用阿里云飞燕平台实现智能家居控制的APP项目,在实现的过程中有一些心得体会,把它总结记录下来,供自己和感兴趣的朋友日后参考。
先总体来说一下架构的事,飘易做的这款APP最终要控制的是家里的门窗,通过APP调用阿里云飞燕平台实现家里门窗的开、关、锁(支持百分比的开关),那这里就涉及到了硬件、平台、APP端。
硬件
硬件方面,智能设备需要上网,连接阿里云,那么就需要选择对应的上网模组,我们项目里选择了庆科的
EMW3080的wifi模组,EMW3080是单3.3V供电的、集成Wi-Fi和Cortex-M4F MCU的嵌入式Wi-Fi模块,最高支持133M主频和256K RAM,强大的浮点运算,分为A(硬件加密版)/B(标准版)2个版本。
我们选择的是 EMW3080(BP)标准版、PCB天线。
wifi模组选择之后,要对接的是控制门窗开关的电机厂商,电机的mcu需要和wifi模组进行对接,将阿里云平台的发送的指令执行下去,以及mcu需要将门窗的状态及时反馈给阿里云平台,这里涉及到的是硬件开发的事,咱略过不谈。
知识点:SecureCRT软件怎么刷飞燕平台的AT固件到设备里
如何通过模块用户串口,在boot模式下,烧录bin文件?
准备:
PC端安装软件:SecureCRT。
模块相关连线操作:模块上电,并通过“TTL转USB小板”,将用户串口接至PC端USB口,并打开该端口。
烧 all.bin:
1.用户串口,进boot模式,方法:boot拉低,按下RESET按键,波特率:921600bps
2.输入命令: 4 -dev 1 回车,菜单栏选择 Transfer -> Send ymodem,选择 all.bin, 更新即可。
3.调到产测模式,用户串口,921600bps,输入#,按下Reset按键,进QC log,确认固件版本及CRC值。
注意:银尔达小板,直接连接板上现成的usb接口(已经ttl转过了)。开发版大家可以买淘宝上的《银尔达EMW3080物联网WiFi核心板 USB转串口开发板2.4g无线模块》,链接就不放了,大家自行搜索吧,这家的技术支持还行。
知识点:如何利用格西烽火软件烧录设备四元组信息
TTL转USB小板(以下简称ttl板)rx接开发板的tx,ttl板tx接开发板的rx(交叉接线)
两种供电:
1,ttl板3.3v接开发板的3.3v,ttl板的gnd接开发板的gnd(地);
2,调试串口usb接电脑的usb;
波特率115200bps
文档:
链接2:http://docs.mxchip.com/#/docs/AT/2.%E6%8C%87%E4%BB%A4%E8%AF%B4%E6%98%8E?id=atilopstop
通过 AT 指令烧录至模组中,具体参见指令:AT+ILOPSET,需要设置的参数包括 :
AT+ILOPSET=<product_key>,<product_secret>,<device_secret>,<device_name>\r
平台
云端平台选择的是阿里云智能生活平台:https://living.aliyun.com/ 。除了阿里云的物联网平台,其实市面上还有挺多家其他的,比如机智云、百度天工智能物联网平台、腾讯QQ物联智能硬件开放平台、移动OneNET平台、京东智能云、庆科云FogCloud等,具体怎么选择,就要看项目的需求和甲方的意向了。
除了选择市面上常见的平台外,如果项目规模可控,我们还有其他的选择,可以自建云端,灵活性更高,但成本要略高的。
阿里云生活物联网平台的文档开发前一定要仔细的阅读:https://living.aliyun.com/doc#index.html(官网技术文档,一定要查看清楚)
阿里云平台架构如上图
需要留意的是阿里云在产品量产之后需要为每个产品购买一个设备激活码,费用是2.8元一个,按每台设备数收费(设备日均上下行消息数小于3000条)。
如果贵公司还需要用到阿里云的服务器,云数据库,Redis数据库,消息中间件,短信或者其它任何云产品,都可以先点击领取 阿里云专属内部优惠券 (很多人还不知道阿里云有内部代金券,领取可减免不少现金)
这个内部代金券是云产品通用红包,可以叠加官网常规优惠使用。这个代金券是新用户专享的,如果你还没有注册阿里云账号,可以先注册阿里云账号,然后再领取这个代金券。注册账号需要实名认证,请参考官方文档:阿里云账号注册流程说明
APP端开发
阿里云智能生活开放平台自带了免开发的公版APP,所有接入阿里云平台的设备厂商都可以共用这个APP,这个公版APP“智能家居”,不带特殊品牌。
公版APP用途:
- 适合对个性化和差异化要求较低的客户。该方案完全免开发,您只需进行硬件端的开发,无需开发云端、PC端或App端,即可快捷、低成本地交付一套完整解决方案。将该APP二维码直接印刷在商品说明书上,消费者即可直接扫码下载,快速使用您的智能设备。
- 用于调试设备、模组,在自己的品牌APP尚未完成前,可以验证设备的配网、控制、OTA链路是否正常。
自有品牌APP(需开发):
- 适合希望定制化自己的品牌APP,自己去开发各种个性化功能和业务逻辑的客户。
其中物联的部分,可以基于平台提供的SDK、API和插件,对产品进行配网、控制和场景自动化配置。
我们在项目中选择的是自有品牌APP开发,因为客户需要定制较多个性化的界面。
在开发之前,下载官方提供的demo,是一个比较好的方式,当自己开发过程中遇到一些门槛的时候,看看demo的实现方式可以节省一些思考的时间。
本文重点说的也是APP开发过程中遇到的一些问题。
安卓版
首先需要集成的是安全图片,下载后的安全图片的文件名为 yw_1222_xxxx.jpg ,请放到工程根目录,如下图所示
1、安全图片,请放置于Android工程目录中的 res/drawable 下
2、签名配置, 因为 Android 端上,安全图片是需要和签名搭配使用的,所以要正确的配置签名:
android{
signingConfigs {
debug {
storeFile file("./debug.keystore")
storePassword '123456'
keyAlias 'android'
keyPassword '123456'
}
}
buildTypes{
debug {
signingConfig signingConfigs.debug
}
}
}
然后就是按部就班的集成各种SDK,下面的6个SDK是必须集成的:
- API 通道 SDK
- 长连接通道 SDK
- 账号及用户 SDK
- BoneMobile 容器 SDK
- 身份认证 SDK
- 配网 SDK
还有2个SDK是可选的,如果项目里用到就集成:
- 移动应用推送 SDK
- 设备模型 SDK
飘易就直接放出集成的实例代码,请留意我使用的是HTML 5+ SDK 离线打包的方式,就是把iot所有的功能封装成一个库,抛给上层的js调用(http://ask.dcloud.net.cn/article/103):
package com.plugin.ilop;
import ...
public class ilop extends StandardFeature
{
String TAG = "iLOP";
android.content.Context curContext;
private static final String app_key = "25263xxx";// 从飞燕平台获取
// 长连接通道使用的全局变量
IWebview pWebviewLong;
String CallBackIDLong;
public void onStart(Context pContext, Bundle pSavedInstanceState, String[] pRuntimeArgs) {
/**
* 如果需要在应用启动时进行初始化,可以继承这个方法,并在properties.xml文件的service节点添加扩展插件的注册即可触发onStart方法
* <service name="ilop" value="com.plugin.ilop.ilop"/>
* */
Log.w(TAG, "ilop onStart");
curContext = pContext;
// 阿里云sdk初始化
sdk_init();
}
// API通道SDK 初始化
private void api_init(){
// 初始化无线保镖
android.content.Context app = curContext;
try {