摘要:本篇文章将前期几个专题综合起来,基于阿里云HaaS100的新固件设计制作一个智能灯。这个智能灯由云平台、手机APP端和设备端组成,基本上涵盖了一个物联网小项目所需的主要步骤。

目录

1.在阿里云物联网平台注册设备

2.编写HaaS100轻应用并烧录

3.使用IoT Studio设计控制移动端页面

4.使用android studio设计安卓APP

5.测试

6.结论

参考文章:

1.初学者入门阿里云Haas100开发板基本步骤

2.阿里云haas100开发板源代码适配python3.7版本的方法

3.阿里云HaaS100物联网开发板学习笔记(一)硬件资源介绍

4.阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来

5.阿里云HaaS100物联网开发板学习笔记(三)轻应用初步--用js让小灯闪烁起来

6.阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

7.阿里云HaaS100物联网开发板学习笔记(五)推送js代码的步骤--基于更新过的固件

8.什么是阿里云amp工具?

9.如何在阿里云物联网平台新增一个设备

10.物联网控制APP入门专题(一)---做物联网APP的几个模式简介

11.物联网控制APP入门专题(二)---阿里云iot studio移动可视化功能基本操作

12.物联网控制APP入门专题(三)---使用第三方平台将网页打包成APP

13.物联网控制APP入门专题(四)---使用android studio制作一个控制页面的APP框架

15.物联网控制APP入门专题(五)---使用android studio直接编写物联网控制APP


硬件平台:HaaS100。

软件平台:win7 x64,amp-win,notepad++,vscode,IoT Studio

1.在阿里云物联网平台注册设备

详细步骤轻参考:如何在阿里云物联网平台新增一个设备

注意“产品”和“设备”的区别,新增产品时,会设置这一类产品的“属性”,在这类产品下新增“设备”,不管新增多少,都具有相同的“产品属性”。“设备”新增成功后,就有了设备“三元组”,在调试生活物联网的设备时,有时用到的是“四元组”。不管怎样,这几个字符串代表的是一个专门设备的“身份证”,有了“身份证”,才能证明这个世界上只有一个“我”,才能在江湖上合法行走对吧。

特别说明,阿里云生活物联网平台(飞燕平台)注册的新设备,在阿里云物联网平台上也可以查看并管理。

2.编写HaaS100轻应用并烧录

有了阿里云物联网平台的虚拟“物”---设备,就需要在现实世界里,做一个真正的设备,让它跟阿里云上的设备对应起来。

为了让真实设备和阿里云虚拟设备对应起来,有几个前提条件需要具备:一是可以联网,不管是wifi还是gprs;二是遵守相同的通信规则,阿里云采用的是mqtt(事实上IBM当年也没想到这个东东能成为今日物联网真正意义上的国际标准);三是遵守一定的加密规则,MQTT客户端是有一定的加密规则的,用来确保物联网设备(并不是一个简单的小灯,有可能是大型机械上的控制设备)的安全可靠性;四是拥有相同的“属性”,比如虚拟设备有“开关”属性,这个真实设备也必须有对应的“开关”响应程序;五是具有和虚拟设备相同的“身份证”----也就是三元组或者四元组数据。

实现以上这5点,可以通过很多种硬件来实现。本文以超级方便的HaaS100物联网开发板为基础,采用“轻应用”方式来开发。

轻应用是阿里云物联网团队开发的一种物联网开发技术,可以用JavaScript来开发。

轻应用源代码由两个文件组成,app.js和app.json。js文件是业务逻辑入口,可以理解为源代码;json文件是全局配置,可以理解为硬件资源配置,采用的是流行的json格式。

本文轻应用的js文件源代码如下:

/* iot - 阿里云IoT连接平台连接组件示例,产品功能定义:* [功能类型] ------ [功能名称] ------ [标志符] ------ [数据类型]*   属性            主灯开关        LightSwitch      bool (0-关闭 1-开启) *   服务            开关翻转     ToggleLightSwitch   -*   事件            故障上报           Error         参数标志符:ErrorCode* */var iot = require('iot');
var network = require('network');
var gpio = require('gpio');
var net = network.openNetWorkClient();var productKey = 'a19x7NT4nEn';
var deviceName = 'haas-ltv1';
var deviceSecret = 'e22735c2d28da99c1c9b85**********';var lightSwitch = 0;var led1 = gpio.open({id: 'LED3',success: function() {console.log('gpio: open led success')},fail: function() {console.log('gpio: open led failed')}});var device;function createDevice() {device = iot.device({productKey: productKey,deviceName: deviceName,deviceSecret: deviceSecret,region: 'cn-shanghai',success: function () {console.log('connect success');onConnect();},fail: function () {console.log('connect failed');}});device.on('connect', function () {console.log('(re)connected');});/* 网络断开事件 */device.on('disconnect', function () {console.log('disconnect ');});/* 关闭连接事件 */device.on('close', function () {console.log('iot client just closed');});/* 发生错误事件 */device.on('error', function (err) {console.log('error ' + err);});/* 云端设置属性事件 */device.on('props', function (payload) {console.log('cloud req data is ', payload);console.log('LightSwitch ', payload.LightSwitch ? 'ON' : 'OFF');/**/if (payload.LightSwitch == 1) {led1.writeValue(1);device.postProps({payload: {LightSwitch: 1}})}if (payload.LightSwitch == 0) {led1.writeValue(0);device.postProps({payload: {LightSwitch: 0}})} });/* 云端下发服务事件 */device.on('service', function (id, payload) {console.log('received cloud serviceid is ' + id);console.log('received cloud req_data is ' + payload);});
}function onConnect() {setInterval(function () {/** post properties *//*device.postProps({payload: {LightSwitch: 0},success: function () {console.log('postProps success');},fail: function () {console.log('postProps failed');}});*//** post events *//*device.postEvent({id: 'Error',params: {ErrorCode: 'error'},success: function () {console.log('postEvent success');},fail: function () {console.log('postEvent failed');}});*/}, 3000);
}var status = net.getStatus();if (status == 'disconnect') {net.on('connect', function () {console.log('========wifi connected========');createDevice();});
} else {createDevice();
}net.connect({ssid: 'xiao****',password: 'li*****'
});

特别提醒,请采用合适的编辑软件进行编辑,并确保文件编码格式为UTF-8。选错了可能运行不成功的。。。

本文轻应用的json文件代码如下:

{"version": "1.0.0","io": {"LED3": {"type": "GPIO","port": 36,"dir": "output","pull": "pulldown"
}},"debugLevel": "ERROR"}

源代码编辑之后,使用amp工具进行推送。

具体步骤请参考:阿里云HaaS100物联网开发板学习笔记(五)推送js代码的步骤--基于更新过的固件

下载好amp-win工具之后,可以通过vscode调用teminal来操作,比win7下的命令行操作更便捷。

3.使用IoT Studio设计控制移动端页面

一个没有手机端应用的物联网设备是不完整的。阿里云物联网平台提供了移动可视化操作功能,也就是IoT studio的“移动可视化”。

几个月前,这个功能还支持在线生成app安装包,后来这个功能改版了,当前的版本支持生成的是“页面版”的app,发布成功之后,可以通过第三方或者是自己用android studio编写一个app框架,让这个框架打开就是设计的页面就行了。

具体步骤可以参考

物联网控制APP入门专题(二)---阿里云iot studio移动可视化功能基本操作

下图为一个设计过程的截图,iot studio移动可视化开发以一种近乎零代码的方式提供了移动APP的设计。目前该功能处于公测状态,有些功能有限制。

这个页面如果发布的话,需要域名公网IP才能够正常访问。在iot studio中添加域名(要求已经备案成功,这个过程比较慢,可能需要20天左右),点击发布即可。

这种开发方式有个好处,只需要在iot studio里面对页面进行修改,点击发布,再访问这个页面就成了最新的页面。

4.使用android studio设计安卓APP

阿里云物联网iot studio移动可视化开发的呈现形式只是一个可以通过域名访问的页面,比如下图中,页面上有一个开关控件,点击这个控件,就能控制HaaS100设备,打开或者关闭开发板上的指定LED灯。通过手机浏览器访问这个页面,就可以实现对现实设备的控制,不过这种方式不太适合真正项目开发。

要想真正实现以APP方式控制物联网设备,可以将这个页面通过第三方平台打包成APK安装包,如果会android studio的话,也可以自己编写框架。

这种框架式的APP理论上安装之后就不用升级了---只需要更新页面,发布后,下次打开就自动呈现最新的页面。APP说到底就是一个固定地址的浏览器。

具体步骤可以参考下面两篇文章。

物联网控制APP入门专题(三)---使用第三方平台将网页打包成APP

物联网控制APP入门专题(四)---使用android studio制作一个控制页面的APP框架

5.测试

测试的目的是通过手机APP控制HaaS100开发板上LED3的亮起和熄灭。对应的属性是“LightSwitch”。

经过测试,可以通过手机APP打开和关闭LED3。

6.结论

阿里云HaaS100物联网开发板是一个很不错的板子,适合初学者,也适合专业开发者。板子做工也很好,有些wifi项目可以直接固定到目标外壳中使用,电源很稳定,能够长期工作。本文通过一个简单的案例,讲解了如何一步步做出可以通过手机APP控制的物联网智能灯。看似简单,其实还需要大家认真克服开发过程中每个可能遇到的困难才行。一旦掌握,将成为开发利器。

下面是一些基本操作的详细步骤介绍,适合入门,有基础的可以直接略过。

1.初学者入门阿里云Haas100开发板基本步骤

2.阿里云haas100开发板源代码适配python3.7版本的方法

3.阿里云HaaS100物联网开发板学习笔记(一)硬件资源介绍

4.阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来

5.阿里云HaaS100物联网开发板学习笔记(三)轻应用初步--用js让小灯闪烁起来

6.阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

7.阿里云HaaS100物联网开发板学习笔记(五)推送js代码的步骤--基于更新过的固件

8.什么是阿里云amp工具?

9.如何在阿里云物联网平台新增一个设备

10.物联网控制APP入门专题(一)---做物联网APP的几个模式简介

11.物联网控制APP入门专题(二)---阿里云iot studio移动可视化功能基本操作

12.物联网控制APP入门专题(三)---使用第三方平台将网页打包成APP

13.物联网控制APP入门专题(四)---使用android studio制作一个控制页面的APP框架

15.物联网控制APP入门专题(五)---使用android studio直接编写物联网控制APP

欢迎抛转

阿里云HaaS100物联网开发板学习笔记(六)做个智能灯---一个完整的开发例子相关推荐

  1. 阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来

    摘要:无论是哪种开发板,要想开发特定的功能,必先从GPIO开始,HaaS100开发也是一样.如果仅仅利用HaaS100的联网功能,那简直是太浪费了.HaaS100拥有其他开发板所具备的所有的功能,比如 ...

  2. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

    摘要:本篇文章讲解如何使用JavaScript"轻应用"连接阿里云物联网平台并上报一个数据.仍然延续前几篇文章的结构,从安装软件环境开始讲,以使零基础的同学看了本篇文章之后,也能够 ...

  3. 阿里云HaaS100物联网开发板学习笔记(三)轻应用初步--用js让小灯闪烁起来

    摘要:能让JavaScript应用运行在haas100开发板上,这实在是太酷了,这种方式被阿里云称之为"轻应用".本文带各位从零开始,先了解啥是轻应用,然后搭建环境,再一步步将一个 ...

  4. HaaS600物联网开发板学习笔记(二)---轻应用方式让LED闪烁起来

    摘要:轻应用开发非常方便快捷,gitee上的例程也都是基于HaaS600的,所以,拿HaaS600来逐个测试例程,学习轻应用开发和物联网应用是最合适的.本文介绍一下HaaS600如何使用轻应用来开发. ...

  5. HaaS600物联网开发板学习笔记(一)---开发板硬件资源

    摘要:2020年9月阿里云HaaS100物联网开发板发布,紧接着600开发板也发布了.二者不同之处有很多,最明显的是100是wifi联网,600是gprs联网,也就是"wifi和插卡&quo ...

  6. “物联网开发实战”学习笔记-(四)智能音箱制作和语音控制

    "物联网开发实战"学习笔记-(四)智能音箱制作和语音控制 这次来造一个属于自己的智能音箱,这里详细介绍了智能音箱的语音控制的实现. 智能音箱的技术架构 智能音箱主要涉及拾音.前端信 ...

  7. 涂鸦LZ201-CN开发板学习笔记(一)

    涂鸦LZ201-CN开发板学习笔记(一) 前言 一.引出 二.准备流程 1.购买开发板 2.创建产品 (1)创建产品 (2)功能定义 (3)设备交互 (4)硬件开发 3.检查开发板 第一步: 第二步: ...

  8. 阿里云趣味视觉AI训练营学习笔记Day 5

    阿里云趣味视觉AI训练营学习笔记Day 5 学习目标 学习内容 前言 一.创建人像卡通化应用 二.应用配置 三.后端服务开发部署 四.小程序前端开发 阿里云高校计划,陪伴两千多所高校在校生云上实践.云 ...

  9. iTOP-RK3568开发板学习笔记(1)编译+烧录系统

    迅为 RK3568 开发板学习笔记 文章目录 准备开发环境 复制 Linux SDK 编译 Buildroot 烧录固件 准备开发环境 将 ITOP-RK3568 资料包中的虚拟机开发环境解压到自己的 ...

最新文章

  1. 程序设计基本概念(2)-2.19
  2. 仅仅是又多了一本设计书吗 《软件框架设计的艺术》序
  3. 你的画像是怎么来的?推荐系统是如何找到相似用户的?
  4. 线性代数:第三章 矩阵的初等变换与线性方程组(1)矩阵的初等变换 矩阵的秩
  5. Java 洛谷 P2141 珠心算测验
  6. 堆排序分析(大根堆为例,由小到大排序)
  7. Repeater嵌套绑定
  8. 工厂方法源码解析(jdk+logback)
  9. JQuery delegate多次绑定的解决办法
  10. socket用起始码分割_常用条码Code128码及EAN13码的介绍
  11. Java(六)字符串,StringBuilder,String操作,格式化输出
  12. SpringBoot2.1.5 (35)---安全
  13. 【kafka】Kafka Consumer 中的心跳线程有什么作用?
  14. 最长单调递增子序列 [转]
  15. python复习题答案_python的复习题和答案合集
  16. leetcode621 贪心:任务安排
  17. 使用TortoiseSVN下载source force的源代码
  18. Python飞机大战代码
  19. 机器学习、计算机视觉神犇/大牛主页
  20. 会员权益HTML,会员权益

热门文章

  1. 仿新浪微博的插入#话题#
  2. 某App逆向分析,破解提交参数
  3. Linux下的常用编程工具初探
  4. 练习6-3 英文字母替换加密(大小写转换+后移1位) (15 分)
  5. 线性探测法和平方探测法 - 哈希表 - 完整代码
  6. YOLOv5-网络结构
  7. 石墨笔记, Onenote 和 Effie 哪个适合单口或脱口秀作者?
  8. 图片服务器 imgproxy 入门教程--实现图片实时裁剪/压缩/处理等操作
  9. Java+MySQL基于ssm的物理竞赛管理系统 开题 论文
  10. 【从饮水机到名人堂之c语言】操作符详解(1)