硬件:haas510 (2.0版本),USB串口
软件:win7 x64,vscode
目录
1.在阿里云物联网平台注册产品和设备
2.编写设备上云源代码
3.烧录程序到开发板
4.运行效果
5.关于HaaS
1.在阿里云物联网平台注册产品和设备
注册产品和设备是为了做本文介绍的实验,获取一个云平台的虚拟的设备的“三元组”数据。
如果您已经有了注册好的设备,可以直接用自己的设备来实验,从而跳过这一步。
按照下图所示,新增一个产品。联网方式选择蜂窝。不过根据实验,即使选择wifi,对操作也没有影响。
创建成功后,这个“智能灯”还不具有任何属性,比如它连个开关也没有,更别说是色彩了。
可以编辑草稿,添加想要的功能。
添加一个自定义的开关
为了做其他实验,我们新增一个备注属性
接下来发布上线,上线之后就可以添加很多具备这两个属性的设备了。一个产品是一类设备的统称。
新增一个设备light001,那么这个设备就自动具有主灯开关和备注2个属性。
点击进入设备详情页,然后查看三元组数据
三元组数据是三个字符串,长度不同。可以一键复制,将这三个字符串记下来。
复制后的数据是json格式的,可以用在很多地方。
2.编写设备上云源代码
haas系列硬件离开alios things物联网操作系统的支持,就与普通的物联网模块毫无差别。
比如510开发板,采用的是移远的EC600S模组。基于这种模组的各种类型的开发板或者模块五花八门。开发模式也多种多样,假如模组内置的是移远官方固件的话,可以支持AT指令开发。例如要想连接阿里云物联网平台,您就需要使用一个MCU通过UART发送若干个UART指令来告诉这个模组连接物联网平台。
我们注意到,EC600S模组本身就具有MCU功能,那么何苦再加一个MCU发送指令来实现联网的功能呢?能不能用它本身实现联网和具体功能的实现?
阿里云haas已经为我们准备好了。
例如haas510,我们可以将它看做是一块内置了JavaScript引擎,还内置了阿里云物联网操作系统的具备二次开发功能的开发板。
通过vscode即可非常方便地对它进行编程。
假如我们想用510连接阿里云,仅仅需要20余行代码(这中间还保留着必要的注释)就可以实现。
上云的过程是阿里云的固件自动适配的,无须像AT指令那样,还要关注每一步是否应答了成功的指令。
代码如下
var iot = require('iot');
var network = require('network');
var net = network.openNetWorkClient();
/* 设备三元组信息获取请参考common目录下的iot组件说明 */
var productKey = 'gc4XXXXXnjX';
var deviceName = 'light001';
var deviceSecret = 'b25XXXXXXXXXXXXXXXXXXXXXXXXXXXXe6db';
// 构建物联网连接实例
var device;
net.on('connect', function () {
device = iot.device({
productKey: productKey,
deviceName: deviceName,
deviceSecret: deviceSecret,
region: 'cn-shanghai',
success: function () {
console.log('iot: [success] connect');
},
fail: function () {
console.log('iot: [failed] connect');
}
});
})
3.烧录程序到开发板
连接硬件。使用2个USB串口的目的是一个烧录,一个观察调试信息。
详细的过程可以参考文章,烧录的操作是通过vscode实现的。
阿里云开发板vscode开发环境搭建https://blog.csdn.net/youngwah292/article/details/120356887?spm=1001.2014.3001.5501
出现下图的界面就烧录成功了。
4.运行效果
经过前面的步骤,一个极简代码上云的物联网设备就做好了。
烧录(或者叫做推送)之后,我们登录阿里云物联网平台,就可以看到设备成功在线。
怎么样简单吧?!!
下面对比一下EC600S使用AT指令使设备在线的复杂步骤。可以看到每一步都需要观察模块是否返回来正确的信息,例如是否返回了“OK”。假如我们每发送一个AT指令都采用“延时”再发送下一条指令的形式来使设备在线,那么后果将是不稳定和不可控。我亲自做了实验,有的时候(例如网络信号弱),真的有这种尽管发送AT指令正确,但是不能成功与云平台连接的情况发生。这样对比,就能看出来haas的过人之处了。因为它对阿里云无线网平台是“自适应”的。
我们还可以通过调试串口可以观察一下调试信息。
当然这只是辅助措施,当设备成功在线后,看不看调试信息都行。
如果后续开发其他功能时,借助调试串口可以弥补JavaScript不能单步调试的不足,使我们可以迅速定位故障,使用haas快速实现产品原型,抢占先机。
5.关于HaaS
在物联网方案多样化与场景碎片化等大背景下,基于阿里云物联网数亿设备落地经验,阿里云物联网团队推出了HaaS这个加速AIoT中小开发者的创新平台。HaaS(Hardware as a service)硬件即服务。通过向用户提供物联网场景中的的标准硬件以及嵌入到硬件中的软件驱动及功能模块,为用户提供物联网设备高效开发服务。旨在帮助AIoT中小开发者聚焦业务,能做到低门槛快速组装软硬件积木,实现设备安全上云,加速AIoT创新迭代。
HaaS设备端搭载阿里IoT团队全面开源的物联网操作系统AliOS Things。AliOS Things 是面向AIoT 领域的、高可伸缩的物联网统一操作系统。致力于搭建云端一体化 IoT 基础设备。具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云IoT平台,可广泛应用在智能家居、智慧城市、工业、新出行等领域。