备案 控制台
开发者社区 物联网 文章 正文

AliOS Things 3.0应用笔记:支付宝小程序设备控制 - 全栈开发(附全部源码)

简介: 通过支付宝小程序即控制IoT设备

目录

  • 应用演示
  • 架构图
  • 技术栈拆解

    • 设备端
    • 支付宝小程序端
    • 服务端
  • 一、创建产品

    • 创建产品
    • 添加功能
    • 添加设备
  • 二、设备端开发

    • 准备工作
    • 源码目录
    • 配置
    • 运行
  • 三、小程序端开发

    • 准备工作
    • 源码目录
    • 配置
    • 运行
  • 四、服务端开发

    • 介绍
    • 准备工作
    • 源码目录
    • 配置
    • 运行
    • 部署
  • 其他

    • API接口说明

      • 获取设备状态
      • 获取设备列表
      • 获取设备属性
      • 设置设备属性
  • 结语

应用演示

通过支付宝小程序即可控制设备端。

点击观看 视频演示。

架构图

|480x480|center

技术栈拆解

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

设备端

设备端运行 AliOS Things 3.0,方便快速的就能接入到阿里云IoT平台。

支付宝小程序端

支付宝小程序主要功能是显示前端控制界面,通过https api控制设备属性。扫码体验小程序(小程序已上线,支付宝首页搜索 “xw智能灯” 也能打开小程序):


图片名称

服务端

小程序服务端主要是为小程序提供API SaaS服务,同时通过OpenAPI SDK对接阿里云IoT平台。

一、创建产品

首先需要在 阿里云物联网平台上 创建产品, 创建设备,获取到设备的三元组(设备密钥)才能让设备端接入物联网平台上。

创建产品

登录到 阿里云物联网平台,进入到产品管理页,点击创建产品,所属分类中选择智能生活 / 电工照明 / ,其他选项默认即可,点击确定创建产品:


图片名称

进入到产品详情页可以看到如下产品信息:

添加功能

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

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


图片名称

添加设备

进入设备管理页,选择你的产品,然后点击添加设备即可添加测试设备,添加完成之后会显示该设备的三元组(密钥):

至此就完成本示例物联网平台上的产品创建。

二、设备端开发

准备工作

  • AliOS Things环境安装,参考 AliOS-Things-Environment-Setup。
  • AliOS Things 3.0应用开发环境搭建,参考 AliOS Things 3.0 应用开发指南。
  • 准备nodemcu和RGB灯。
  • 下载 设备端应用开发源码。

接线图


图片名称

接线方式如下:

nodemcu引脚 RGB灯引脚
GPIO12 Blue (蓝色灯引脚)
GPIO13 Green(绿色灯引脚)
GPIO15 Red (红色灯引脚)

使用vscode打开nodemcu_demo源码。

源码目录

.
├── Config.in
├── README.md
├── aos.mk
├── app_main.c                          # 功能逻辑代码
├── k_app_config.h
├── linkkit_client.c                    # Linkkit API封装
└── linkkit_client.h

配置

更改AOS_SDK_PATH路径

  • 编辑 .aos:
AOS_SDK_PATH=/Users/xxw/workspace/github/AliOS-Things
DEPENDENCIES=
MD5SUM_HEADER=a1a4b53ab917fb4a6cb08289b6007fe0

更改 /Users/xxw/workspace/github/AliOS-Things 为你的AliOS-Things源码路径。

  • 编辑 Config.in:
......
config AOS_SDK_PATH
    string
    default "/Users/xxw/workspace/github/AliOS-Things"
......

更改 /Users/xxw/workspace/github/AliOS-Things 为你的AliOS-Things源码路径。

windows用户的路径示例为:C:/workspace/github/AliOS-Things,注意路径中用的是斜杠/,不是反斜杠\

更改设备认证信息

更改源码app_main.c中的四元组:PRODUCT_KEYPRODUCT_SECRETDEVICE_NAMEDEVICE_SECRET为你的设备四元组:

#define PRODUCT_KEY "<product_key>"
#define PRODUCT_SECRET "<product_secret>"
#define DEVICE_NAME "<device_name>"
#define DEVICE_SECRET "<device_secret>"

更改wifi信息

更改源码app_main.c中的WIFI_SSIDWIFI_PASSWD为你的路由器(网关)信息:

#define WIFI_SSID "aiot"
#define WIFI_PASSWD "12345678"

运行

更改完成后,即可编译并烧录到nodemcu中。

启动nodeMCU后,nodeMCU会自动连接指定的wifi,三色灯显示蓝色代表连接wifi成功,显示红色代表连接阿里云IoT平台成功。

在阿里云物联网云端可以看到设备是否上线,也可以使用 在线调试功能控制nudeMCU的颜色。

三、小程序端开发

小程序和服务端之间的交互API请参考本文档中的 其他 > API接口说明。

准备工作

  • 了解支付宝小程序开发流程: 支付宝小程序快速开始。
  • 下载 小程序开发工具。
  • 下载 小程序源码。

源码目录

xwColorLight
├── README.md               # 使用说明
├── app.acss
├── app.js                  # 小程序入口
├── app.json                # 小程序整体配置
├── asset                   # 资源文件,包括使用的图片资源、字体资源
├── package.json
├── pages
│   ├── index               # 设备控制页面
│   └── lights              # 设备选择页面
└── utils
    └── device_api.js       # 服务端api操作接口

配置

安装依赖

打开源码的时候,IDE会提示安装依赖,点击确定安装依赖:

更改参数

更改utils/device_api.js中的defaultServerURL为你的服务器API地址(服务端本地调试时,地址为http://localhost:7001/api/device)、更改defaultProductKeydefaultDeviceName为你的设备product keydevice name

const defaultServerURL = '<your-domain>';
const defaultProductKey = '<product-key>';
const defaultDeviceName = '<device-name>';

运行


图片名称

四、服务端开发

介绍

本示例通过openAPI接口对接阿里云物联网平台,阿里云物联网平台提供的云端API文档可以参考: 云端开发指南 > API列表,也可以进入 OpenAPI Explorer 对openAPI接口进行可视化调试。

本服务端向小程序端提供的API接口说明请参考本文档中的 其他 > API接口说明。

需要了解egg.js请参考 eggjs官方文档。

准备工作

  • 安装 nodeJS。
  • 下载小程序 服务端源码。

如果需要部署到线上或者上线小程序,还需要准备:

  • ECS或者公网可访问的服务器。
  • 有效域名(已备案)。
  • SSL证书。

申请加入 阿里巴巴小程序繁星计划,可以免费试用ECS和其他的小程序服务。

源码目录

xwColorLight-server
├── README.md                 # 说明文档
├── app
│   ├── controller
│   │   └── home.js           # API接口实现
│   ├── router.js             # API路由
│   └── service
│       └── aliyunIoT.js      # OpenAPI接口
├── config
│   ├── config.default.js     # 全局配置
│   └── plugin.js
├── package.json
└── test

配置

更改app/service/aliyunIoT.jsconfig变量的accessKeyaccessSecretendPointregionId

详细说明请参考 阿里云物联网平台 > 调用API。

const config = {
  accessKey: '<access-key>',
  accessSecret: '<access-secret>',
  endPoint: 'https://iot.cn-shanghai.aliyuncs.com',
  apiVersion: '2018-01-20',
  regionId: 'cn-shanghai',
};

accessKeyaccessSecret

accessKeyaccessSecret是阿里云颁发给用户的访问服务所用的密钥,
登录阿里云控制台,将光标移至账号头像上,然后单击accesskeys,跳转至用户信息管理页,即可创建和查看AccessKey。阿里云控制台的访问控制机制具体请参考 什么是访问控制和 阿里云物联网平台 > 子账号访问。

endPointregionId

阿里云物联网平台有多个地域,不同地域有不同的数据中心,详情请查看: 地域和可用区。

运行

$ npm i
$ npm run dev
$ open http://localhost:7001

浏览器中打开 http://localhost:7001 ,会出现如下介绍界面:

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

本示例用的REST api测试工具为 insomnia。

部署

如果要把该服务端工程部署上线,使用如下命令:

$ npm start
$ npm stop

其他

API接口说明

本示例提供如下的API接口供小程序访问:

  • 获取设备状态
  • 获取设备列表
  • 获取设备属性
  • 设置设备属性

获取设备状态

定义

GET /api/device/status

参数
参数 类型 说明
product_key String 必填,设备pk
device_name String 必填,设备名称
返回
参数 类型 说明
msg String 描述请求结果的产生原因,success成功,其他为失败
status String 设备状态,可能值为:ONLINEOFFLINEINACTIVEDISABLED
示例

请求:

http://localhost:7001/api/device/status?product_key=xxxxxxxxxx&device_name=nodemcu_01

返回

code: 200
{
    "msg": "success",
    "status": "INACTIVE"
}

获取设备列表

定义

GET /api/device/list

参数
参数 类型 说明
product_key String 必填,设备pk
page_size Integer 必填,指定返回结果中每页显示的记录数量,最大值是50。默认值是10
current_page Integer 必填,指定显示返回结果中的第几页的内容。默认值是1
返回
参数 类型 说明
msg String 描述请求结果的产生原因,success成功,其他为失败
data Object 设备列表
示例

请求:

http://localhost:7001/api/device/list?product_key=xxxxxxxxxx&page_size=10&current_page=1

返回

code: 200
{
    "msg": "success",
    "data": {
        "DeviceInfo": [
            {
                ......
            },
            {
                ......
            }
        ]
    }
}

获取设备属性

定义

GET /api/device/props

参数
参数 类型 说明
product_key String 必填,设备pk
device_name String 必填,设备名称
返回
参数 类型 说明
msg String 描述请求结果的产生原因,success成功,其他为失败
props Object 设备属性
示例

请求:

http://localhost:7001/api/device/props?product_key=xxxxxxxxxx&device_name=nodemcu_01

返回

code: 200
{
    "msg": "success",
    "props": "{\"RGBColor\":{\"Red\":0,\"Green\":255,\"Blue\":0}}"
}

设置设备属性

定义

POST /api/device/props

参数
参数 类型 说明
product_key String 必填,设备pk
device_name String 必填,设备名称
items String 需要设置的属性,需要是JSON字符串
返回
参数 类型 说明
msg String 描述请求结果的产生原因,success成功,其他为失败
示例

请求:

http://localhost:7001/api/device/props

请求参数:

{
    "product_key": "xxxxxxxxxx",
    "device_name": "nodemcu_01",
    "items": "{\"RGBColor\":{\"Red\":0,\"Green\":255,\"Blue\":0}}"
}

返回

code: 200
{
    "msg": "success"
}

结语

GitHub丨 加入钉钉群交流丨 给AliOS Tings 3.0 一颗STAR丨 获取整套阿里云AIoT技术/产品

AliOS Things 近期内容集锦(更新中···)


相关开发者交流钉钉群
AliOS Things 3.0
image.png

支付宝小程序
image.png

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
智能计算灵骏
目录
相关文章
八音盒coding
|
1天前
|
JavaScript Java 测试技术
基于微信小程序的中国各地美食推荐平台的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的中国各地美食推荐平台的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
10 0
八音盒coding
|
1天前
|
JavaScript Java 测试技术
基于微信小程序点餐系统的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序点餐系统的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
7 0
八音盒coding
|
1天前
|
JavaScript Java 测试技术
基于微信小程序的疫苗预约网站系统的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的疫苗预约网站系统的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
7 0
八音盒coding
|
1天前
|
JavaScript Java 测试技术
基于微信小程序的医院挂号预约系统的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的医院挂号预约系统的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
9 0
八音盒coding
|
1天前
|
JavaScript Java 测试技术
基于微信小程序的校园二手交易平台的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的校园二手交易平台的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
7 0
八音盒coding
|
1天前
|
JavaScript Java 测试技术
基于微信小程序高校订餐系统的的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序高校订餐系统的的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
5 0
八音盒coding
|
1天前
|
JavaScript Java 测试技术
基于微信小程序的校园综合服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的校园综合服务平台的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
6 0
八音盒coding
|
1天前
|
小程序 JavaScript Java
基于微信小程序的外卖小程序的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的外卖小程序的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
6 0
八音盒coding
|
1天前
|
JavaScript Java 测试技术
基于微信小程序的外卖点餐系统的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的外卖点餐系统的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
4 0
八音盒coding
|
1天前
|
小程序 JavaScript Java
基于微信小程序的垃圾分类小程序的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的垃圾分类小程序的设计与实现(源码+lw+部署文档+讲解等)
八音盒coding
5 0

物联网

热门文章

最新文章

  • 1
    IoT SaaS加速器——助力阿尔茨海默病人护理
  • 2
    物联网发展的三大编程语言
  • 3
    PostgreSQL "物联网"应用 - 1 实时流式数据处理案例(万亿每天)
  • 4
    AIoT设备上云最佳实践集锦【持续更新,建议收藏】
  • 5
    基于Zero-Ice搭建的物联网监控平台
  • 6
    AliOS Things开发:让你的开发板支持AliOS Studio烧录
  • 7
    一个简单算法可以帮助物联网,金融 用户 节约98%的数据存储成本 (PostgreSQL,Greenplum帮你做到)
  • 8
    旋转门数据压缩算法在PostgreSQL中的实现 - 流式压缩在物联网、监控、传感器等场景的应用
  • 9
    阿里云物联网平台数据转发到表格存储(Table Store)示例参考
  • 10
    【阿里云IoT+YF3300】1.时代大背景下的阿里云IoT物联网的现状和未来
  • 1
    看我如何让手机秒变扫码枪
    31
  • 2
    格式化后的SD卡照片还能恢复吗?
    10
  • 3
    Ubuntu 24.04 LTS系统安装Cockpit-Podman过程步骤
    35
  • 4
    美国高防云服务器能防御哪些攻击? - 蓝易云
    37
  • 5
    外贸网站如何选择服务器
    33
  • 6
    回顾计算机运行中发生的事情
    53
  • 7
    关于北斗车联网窘境与现状
    32
  • 8
    异步编程中你需要知道的 指令、响应,同步原语 和 使用时注意事项
    43
  • 9
    js用Date对象处理时间
    30
  • 10
    如何解决电子墨水屏标签的误唤醒和吵醒问题?
    37
  • 相关课程

    更多
  • IoT小程序框架课程
  • AliOS Things物联网开发教程
  • 物联网平台开发全栈教程
  • Cloud Toolkit 开发部署效率提升神器
  • 基于STM32的端到端物联网全栈开发
  • Serverless开发速查手册
  • 相关电子书

    更多
  • 《云市场-小程序》
  • 数字乡村建设方案
  • mPaaS 小程序新品发布
  • 相关实验场景

    更多
  • 1分钟SAE部署PHP商城小程序
  • 使用ROS一键部署2048小游戏
  • 搭建微信小程序(AMD 8代)
  • Gazebo环境下基于ROS和OpenCV的阿克曼小车多车跟随
  • Gazebo环境下基于ROS和OpenCV的阿克曼小车综合实验
  • 语言入门-1:环境构建
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    深圳SEO优化公司渭南百度网站优化排名哪家好锦州百度网站优化价格贺州网站优化排名日照网页设计多少钱扬州网站搜索优化哪家好唐山如何制作网站多少钱合肥百度网站优化排名价格宜宾关键词按天计费公司莆田百度网站优化排名推荐商丘网站优化按天计费报价济宁网站设计公司吉祥百姓网标王推广公司日照高端网站设计价格那曲优秀网站设计价格光明百度关键词包年推广多少钱徐州网站推广系统哪家好德阳企业网站建设价格威海网站开发哪家好贵港关键词排名包年推广公司酒泉优化多少钱营口高端网站设计哪家好阳江建站推荐铜川推广网站多少钱铜川seo网站优化价格眉山seo网站优化公司松原网站优化推广哪家好云浮关键词按天收费新余百度网站优化排名多少钱湛江建站通辽模板推广价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化