发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名

AliOS Things 3.0应用笔记:支付宝小程序设备控制(附源码)

2019-10-16 14:00:39  388 物联网 小程序 iot AliOSThings 阿里云
分享
2
本帖最后由 阿里云AIoT 于 2019-10-16 14:08 编辑




成果展示(视频链接
架构图

技术栈拆解
  • 小程序服务端(源码)。
  • 支付宝小程序端(源码)。
  • 设备端,基于AliOS Things 3.0(源码)。

设备端设备端运行AliOS Things 3.0,方便快速的就能接入到阿里云IoT平台。
支付宝小程序端
支付宝小程序主要功能是显示前端控制界面,通过https api控制设备属性。扫码体验小程序(小程序已上线,支付宝首页搜索 “xw智能灯” 也能打开小程序):
服务端小程序服务端主要是为小程序提供API SaaS服务,同时通过OpenAPI SDK对接阿里云IoT平台。
一、创建产品首先需要在阿里云物联网平台创建产品创建设备,获取到设备的三元组(设备密钥)才能让设备端接入物联网平台上。
创建产品
登录到阿里云物联网平台,进入到产品管理页,点击创建产品,所属分类中选择智能生活 / 电工照明 / 灯,其他选项默认即可,点击确定创建产品:
进入到产品详情页可以看到如下产品信息:

添加功能本示例用到了RGB灯,所以需要在产品中添加RGB属性,进入到产品详情页 > 功能定义 > 添加功能:


功能选择RGB调色属性,点击确认添加:

添加设备
进入设备管理页,选择你的产品,然后点击添加设备即可添加测试设备,添加完成之后会显示该设备的三元组(密钥):
至此就完成本示例物联网平台上的产品创建。
二、设备端开发准备工作接线图
接线方式如下:
[td]
nodemcu引脚RGB灯引脚
GPIO12Blue (蓝色灯引脚)
GPIO13Green(绿色灯引脚)
GPIO15Red (红色灯引脚)
使用vscode打开nodemcu_demo源码。

源码目录
  1. .
  2. ├── Config.in
  3. ├── README.md
  4. ├── aos.mk
  5. ├── app_main.c                          # 功能逻辑代码
  6. ├── k_app_config.h
  7. ├── linkkit_client.c                    # Linkkit API封装
  8. └── linkkit_client.h
复制代码
配置更改AOS_SDK_PATH路径
  • 编辑 .aos:

  1. AOS_SDK_PATH=/Users/xxw/workspace/github/AliOS-Things
  2. DEPENDENCIES=
  3. MD5SUM_HEADER=a1a4b53ab917fb4a6cb08289b6007fe0
复制代码
更改 /Users/xxw/workspace/github/AliOS-Things 为你的AliOS-Things源码路径。
  • 编辑 Config.in:

  1. ......
  2. config AOS_SDK_PATH
  3.     string
  4.     default "/Users/xxw/workspace/github/AliOS-Things"
  5. ......
复制代码
更改 /Users/xxw/workspace/github/AliOS-Things 为你的AliOS-Things源码路径。
更改设备认证信息
更改源码app_main.c中的四元组:PRODUCT_KEY、PRODUCT_SECRET、DEVICE_NAME、DEVICE_SECRET为你的设备四元组:
  1. #define PRODUCT_KEY "<product_key>"
  2. #define PRODUCT_SECRET "<product_secret>"
  3. #define DEVICE_NAME "<device_name>"
  4. #define DEVICE_SECRET "<device_secret>"
复制代码
更改wIFi信息
更改源码app_main.c中的WIFI_SSID、WIFI_PASSWD为你的路由器(网关)信息:
  1. #define WIFI_SSID "aiot"
  2. #define WIFI_PASSWD "12345678"
复制代码
运行更改完成后,即可编译并烧录到nodemcu中。
启动nodeMCU后,nodeMCU会自动连接指定的wifi,三色灯显示蓝色代表连接wifi成功,显示红色代表连接阿里云IoT平台成功。
在阿里云物联网云端可以看到设备是否上线,也可以使用在线调试功能控制nudeMCU的颜色。
三、小程序端开发
小程序和服务端之间的交互API请参考本文档中的其他 > API接口说明
准备工作源码目录
  1. xwColorLight
  2. ├── README.md               # 使用说明
  3. ├── app.acss
  4. ├── app.js                  # 小程序入口
  5. ├── app.json                # 小程序整体配置
  6. ├── asset                   # 资源文件,包括使用的图片资源、字体资源
  7. ├── package.json
  8. ├── pages
  9. │   ├── index               # 设备控制页面
  10. │   └── lights              # 设备选择页面
  11. └── utils
  12.     └── device_api.js       # 服务端api操作接口
复制代码
配置安装依赖打开源码的时候,IDE会提示安装依赖,点击确定安装依赖:


更改参数更改utils/device_api.js中的defaultServerURL为你的服务器API地址(服务端本地调试时,地址为http://localhost:7001/api/device)、更改defaultProductKey、defaultDeviceName为你的设备product key 和 device name:
  1. const defaultServerURL = '<your-domain>';
  2. const defaultProductKey = '<product-key>';
  3. const defaultDeviceName = '<device-name>';
复制代码

运行

四、服务端开发
介绍本示例通过openAPI接口对接阿里云物联网平台,阿里云物联网平台提供的云端API文档可以参考:云端开发指南 >API列表,也可以进入OpenAPI Explorer对openAPI接口进行可视化调试。
本服务端向小程序端提供的API接口说明请参考本文档中的其他 > API接口说明
需要了解egg.js请参考eggjs官方文档。

准备工作如果需要部署到线上或者上线小程序,还需要准备:
  • ECS或者公网可访问的服务器。
  • 有效域名(已备案)。
  • SSL证书。

申请加入阿里巴巴小程序繁星计划,可以免费试用ECS和其他的小程序服务,物联网平台本身对新账号有两个月的试用服务。
源码目录
  1. xwColorLight-server
  2. ├── README.md                 # 说明文档
  3. ├── app
  4. │   ├── controller
  5. │   │   └── home.js           # API接口实现
  6. │   ├── router.js             # API路由
  7. │   └── service
  8. │       └── aliyunIoT.js      # OpenAPI接口
  9. ├── config
  10. │   ├── config.default.js     # 全局配置
  11. │   └── plugin.js
  12. ├── package.json
  13. └── test
复制代码
配置更改app/service/aliyunIoT.js中config变量的accessKey,accessSecret、endPoint、regionId。
详细说明请参考阿里云物联网平台 > 调用API

  1. const config = {
  2.   accessKey: '<access-key>',
  3.   accessSecret: '<access-secret>',
  4.   endPoint: 'https://iot.cn-shanghai.aliyuncs.com',
  5.   apiVersion: '2018-01-20',
  6.   regionId: 'cn-shanghai',
  7. };
复制代码
accessKey和accessSecret
accessKey和accessSecret是阿里云颁发给用户的访问服务所用的密钥,
登录阿里云控制台,将光标移至账号头像上,然后单击accesskeys,跳转至用户信息管理页,即可创建和查看AccessKey。阿里云控制台的访问控制机制具体请参考什么是访问控制阿里云物联网平台 > 子账号访问
endPoint和regionId阿里云物联网平台有多个地域,不同地域有不同的数据中心,详情请查看:地域和可用区

运行
  1. $ npm i
  2. $ npm run dev
  3. $ open http://localhost:7001
复制代码
浏览器中打开http://localhost:7001 ,会出现如下介绍界面:

使用REST API测试工具可以测试API接口是否有效:


本示例用的REST api测试工具为insomnia
部署如果要把该服务端工程部署上线,使用如下命令
  1. $ npm start
  2. $ npm stop
复制代码
其他API接口说明本示例提供如下的API接口供小程序访问:

获取设备状态定义
GET /api/device/status
参数[td]
参数类型说明
product_keyString必填,设备pk
device_nameString必填,设备名称
返回[td]
参数类型说明
msgString描述请求结果的产生原因,success成功,其他为失败
statusString设备状态,可能值为:ONLINE、OFFLINE、INACTIVE、DISABLED
示例
请求:
  1. http://localhost:7001/api/device/status?product_key=xxxxxxxxxx&device_name=nodemcu_01
复制代码
返回
  1. code: 200
  2. {
  3.     "msg": "success",
  4.     "status": "INACTIVE"
  5. }
复制代码
获取设备列表定义GET /api/device/list
参数[td]
参数类型说明
product_keyString必填,设备pk
page_sizeInteger必填,指定返回结果中每页显示的记录数量,最大值是50。默认值是10
current_pageInteger必填,指定显示返回结果中的第几页的内容。默认值是1
返回[td]
参数类型说明
msgString描述请求结果的产生原因,success成功,其他为失败
dataObject设备列表
示例请求:
  1. http://localhost:7001/api/device/list?product_key=xxxxxxxxxx&page_size=10¤t_page=1
复制代码
返回
  1. code: 200
  2. {
  3.     "msg": "success",
  4.     "data": {
  5.         "DeviceInfo": [
  6.             {
  7.                 ......
  8.             },
  9.             {
  10.                 ......
  11.             }
  12.         ]
  13.     }
  14. }
复制代码
获取设备属性定义GET /api/device/props
参数[td]
参数类型说明
product_keyString必填,设备pk
device_nameString必填,设备名称
返回[td]
参数类型说明
msgString描述请求结果的产生原因,success成功,其他为失败
propsObject设备属性
示例
请求:
  1. http://localhost:7001/api/device/props?product_key=xxxxxxxxxx&device_name=nodemcu_01
复制代码
返回
  1. code: 200
复制代码
  1. {
  2.     "msg": "success",
  3.     "props": "{\"RGBColor\":{\"Red\":0,\"Green\":255,\"Blue\":0}}"
  4. }
复制代码
设置设备属性定义POST /api/device/props
参数[td]
参数类型说明
product_keyString必填,设备pk
device_nameString必填,设备名称
itemsString需要设置的属性,需要是JSON字符串
返回[td]
参数类型说明
msgString描述请求结果的产生原因,success成功,其他为失败
示例请求:
  1. http://localhost:7001/api/device/props
复制代码
请求参数:
  1. {
  2.     "product_key": "xxxxxxxxxx",
  3.     "device_name": "nodemcu_01",
  4.     "items": "{\"RGBColor\":{\"Red\":0,\"Green\":255,\"Blue\":0}}"
  5. }
复制代码
返回
  1. code: 200
复制代码
  1. {
  2.     "msg": "success"
  3. }
复制代码




































阿里云AIoT 2019-11-6 10:52:29
AliOS Things 3.0 进阶实践:支付宝小程序控制设备
时间:11月14日下午 预计15点开始
分享人:夏晓文,阿里云资深工程师,AliOS Things研发团队成员
我要进群开直播:https://dwz.cn/AVt8S1NL
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表