摘要:本篇文章讲解如何使用JavaScript“轻应用”连接阿里云物联网平台并上报一个数据。仍然延续前几篇文章的结构,从安装软件环境开始讲,以使零基础的同学看了本篇文章之后,也能够知道每一步该如何做。
目录
实验目的
1 HaaS100轻应用固件操作步骤
2.阿里云生活物联网平台新增测试设备步骤
2.1 新建项目
2.2 新建产品
2.3 功能定义
2.4 支付
2.5 查看云端设备“三元素”
3.传输javascript程序到HaaS100开发板
3.1 下载amp工具
3.2 连接USB串口模块
3.3 修改app.js和app.json文件。
3.4 编译程序
4.查看物联网云平台日志
5.结论
硬件:HaaS100物联网开发板
软件:amp-win(命令行版),aos-cube(命令行版),win7 x64系统
实验目的
使用“轻应用”方式编程实现HaaS100开发板向阿里云物联网平台上报属性。下图是上报成功之后的日志截屏。
1 HaaS100轻应用固件操作步骤
下面这6个步骤的目的是搭建编程环境开始烧录支撑“轻应用”运行的固件,这个固件通过HaaS100自带的USB串口(就是板子左上角那个Micro USB接口)烧录的。
具体有以下几步,详细请参考链接:阿里云HaaS100物联网开发板学习笔记(三)轻应用初步--用js让小灯闪烁起来
1.1 搭建aos-cube编程环境
1.2 了解一下轻应用运行模式
1.3 使用aos-cube编译轻应用运行固件
1.4 烧录到HaaS100开发板中
烧录成功的标志是将GPIO47引脚与3.3V短接,按下复位键(短键柄)之后,双排指示灯中的LED2间歇性双闪。
此时开发板就处于等待接收js程序的状态。
到这一步之后,先不用着急编写js程序,因为云平台上没有准备好,需要进行一些设置才能让“云”和“板”成功通信。
2.阿里云生活物联网平台新增测试设备步骤
在阿里云生活物联网平台新增一个测试设备,那么在云端就有了一个HaaS100开发板对应的“物”,这个“物”,有若干个属性,当HaaS100开发板向上报送一个属性的时候,云端的“物”就做了相应的数据改变。
下面看一下具体的步骤:
2.1 新建项目
我们首先登陆“阿里云生活物联网平台”,新增一个项目,名字根据需要自己定,比如这里起个名字“haas生活测试”。
在写这篇文章期间,生活物联网平台改版了!!!看样子跟阿里云物联网平台合二为一了。
选择工作台,进入物联网设备管理
2.2 新建产品
品类选择电工照明---灯
节点类型选择直连设备,联网方式选择wifi,数据格式选择ICA标准数据格式。
确认之后,提示可以添加设备了。也就是说,你定义了自己的产品,但是还没有为真正的产品在云端建立一个“影子”。
2.3 功能定义
选择“前往定义物模型”。
功能定义就是让云端的“物”具有和现实物联网产品相同的功能描述,并且对各个属性进行命名。比如“灯”就可以有模式、亮度、类型、甚至颜色等属性。
如果您的产品具有更多的属性和功能,可以自定义添加相应的功能。
本步骤不做任何更改,只是为了测试用。
然后添加设备。在产品中选择下拉自己想添加的设备类型,如果你选择什么设备,那么这个设备就具有了上述的功能定义。
2.4 支付
每个云平台上的“物”,就如同真实世界中的“物”一样,是具有价值属性的,每个“物”也是需要支付一定的货款的。
通过购买界面进行购买,支付即可,如果大批量使用,请参加阿里正在进行的企业优惠推广活动。
2.5 查看云端设备“三元素”
云端设备,也就是“物”,有一个数字“身份证”,这个证件有3个信息,分别是ProductKey,DeviceName和DeviceSecret,就好像是一个人有地址、姓名和身份证号码一样。不过,为了通信安全,物联网数据传输都采用加密传输,这个身份证号是经过加密的。
可以通过选择设备页的“查看”来查看这张身份证的信息。
可以看到下列3个重要参数,分别是ProductKey,DeviceName和DeviceSecret。
在阿里云物联网平台登记这张“身份证”之后,只允许也拥有这张身份证的设备与之对应起来。所以一定程度上来说,阿里云物联网平台上设置的“物”,其实就像是现实世界中的设备在云端的“影子”一样。
记住这张“身份证”,接下来,将3个关键信息烧录在物联网开发板内部,那么这张开发板就与阿里云物联网平台的“影子”对应起来了。
那么怎么样将身份证烧录进开发板呢?请看下一步。
3.传输javascript程序到HaaS100开发板
在没有javascript“轻应用”开发模式之前,需要搭建比较复杂的编译和支持环境,想实现这个看似简单的步骤,需要大量的时间和经验。
可以看看https://blog.csdn.net/youngwah292/article/details/104124314了解MQTT的一些知识以及复杂的中间过程。
现在,这一切简单起来了。
上一篇文章详细介绍了如何用命令行版的amp工具将js程序传输到开发板。可以参考链接https://blog.csdn.net/youngwah292/article/details/109540717
本篇文章只介绍基本的步骤,默认大家已经掌握了amp工具的使用方法。
3.1 下载amp工具
请点击下方蓝色字体下载。或者通过阿里云官方文档点击下载,下载后解压到我的文档目录下。C:\Users\Administrator\amp-win
阿里云官方推荐轻应用命令行工具
3.2 连接USB串口模块
按照下图所示将线接好
实物连接图如下:
连接好开发板之后,“轻应用”的准备工作就完成了,下面开始编写“轻应用”程序
3.3 修改app.js和app.json文件。
“轻应用”的源代码分布在两个文件中。
在C:\Users\Administrator\amp-win\app目录下的app.js和app.json。
这个程序就是提供联网和报送属性功能的,app.js就是javascript源文件。
app.js文件代码如下
var iot = require('iot');
var network = require('network');
var net = network.openNetWorkClient();
//下面这些就是阿里云生活物联网平台注册的“灯”的“身份证”信息
var productKey = 'a19xxxxxxxx';
var deviceName = 'haas-ltv1';
var deviceSecret = 'e22735xxxxxxxxxxxxxxxxxxxxxcc2';
var device;
function createDevice() {
device = iot.device({
productKey: productKey,
deviceName: deviceName,
deviceSecret: deviceSecret,
region: 'cn-shanghai',
success: function () {
console.log('iot: [success] connect');
onConnect();
},
fail: function () {
console.log('iot: [failed] connect');
}
});
device.on('connect', function () {
console.log('iot: [success] iot.on(\'connect\')');
});
device.on('disconnect', function () {
console.log('iot: [success] iot.on(\'disconnect\')');
});
device.on('close', function () {
console.log('iot: [success] iot.on(\'close\')');
});
device.on('error', function (err) {
throw new Error('iot: [failed] iot.on(\'error\') ' + err);
});
device.on('props', function (payload) {
console.log('iot: [success] iot.on(\'props\'), payload: ' + JSON.stringify(payload));
});
device.on('service', function (id, payload) {
console.log('iot: [success] iot.on(\'service\'), id: ' + id + ', payload: ' + JSON.stringify(payload));
});
}
var lightSwitch = 0;
function onConnect() {
lightSwitch = 1 - lightSwitch;
device.postProps({
payload: {
LightSwitch: 'lightSwitch'
},
success: function () {
console.log('iot: [success] iot.postProps');
},
fail: function () {
console.log('iot: [failed] iot.postProps');
}
});
device.postEvent({
id: 'Error',
params: {
ErrorCode: 0
},
success: function () {
console.log('iot: [success] iot.postEvent');
},
fail: function () {
console.log('iot: [failed] iot.postEvent');
}
});
}
var status = net.getStatus();
console.log('net status is: ' + status);
if (status == 'connect') {
createDevice();
} else {
net.on('connect', function () {
createDevice();
});
}
//下面的ssid和password就是你要连接的wifi用户名和密码,手机怎么连上的,你就怎么填
net.connect({
ssid:'TP-LINK_3XXB',
password:'zXX000XXX'
});
注意,文件的末尾添加了自己的wifi信息,这样的话,烧录完成之后,就可以立即联网了。
文件的顶端部分,写了三个关键参数,就是“身份证”信息。
app.json文件比较简单,仅有几句话。
{
"version": "1.0.0",
"io": {},
"debugLevel": "DEBUG"
}
3.4 编译程序
编译“轻应用”程序需要用到amp软件。这种软件是通过命令行形式调用的。
在3.1步已经下载并解压amp工具到了C:\Users\Administrator\amp-win文件夹下,amp工具就是下图中红框选中的这个。它不能被双击直接打开,需要cmd进入命令行再运行它。
打开windows命令行
使用cd命令进入amp工具
然后查看串口,注意是两个串口,选择与USB串口对应的那个
用到的两条指令分别是:
第一条指令是显示当前的串口号
amp seriallist
第二条指令是用USB串口对应的串口号进行烧录
amp serialput app com14
烧录时,需要确认LED灯是否间歇性双闪,如果没有,请确认GPIO47是否于3.3V短接,如果短接了,那么就再按下复位键。
只有LED灯间歇性双闪,才能确定“轻应用”固件已经成功运行起来了,这样才能等待js程序的到来。
当出现如下的界面时,就证明烧录成功了。
烧写成功后,断开GPIO47与3.3V之间的连接,让开发板处于正常运行状态,然后按一次复位按键,这个程序就运行起来了。
经过了这一系列步骤,程序就运行起来,但是怎么样确认它成功与阿里云物联网平台成功通信呢?还需要登录后台看日志。
4.查看物联网云平台日志
最近生活物联网平台改版了,参考下面的图示,选择物联网设备管理。
选择设备菜单,可以看到设计的产品已经在线了。
查看日志,可以看到从设备到云端的消息了。
查看详情,可以更加详细地观察发送过来的消息。
5.结论
HaaS100开发板是通过wifi联网的,采用“轻应用”的方式进行开发,可以更加快速高效。
本篇文章撰写期间,生活物联网平台改版了。看样子与物联网平台整合到了一块,界面更加统一,也更加便于操作。
还有彩蛋,以后找时间写一下。