天猫精灵对接AliOS ESP32 设备

1. 介绍

IoT物联网变得越来越火热, 智能家居已经走入家庭. 智能设备,如灯, 开关, 空调, 温湿度传感器, 风扇, 扫地机器人都可以通过智能音箱来控制.
极大方便了我们日常的生活和智能家居控制管理. 针对IoT市场, Alibaba提供了完善的生态系统, 包括AliOS Things针对终端设备, 含有Link Kit SDK
来连接阿里云IoT物联网平台-智能生活开放平台. 同时允许天猫精灵无缝连接, 通过语音来控制智能设备.
在本文, 我们利用ESP32的平台来跑AliOS, 连接到阿里云IoT物联网平台, 通过阿里巴巴的云智能App来控制灯的开/关, 然后绑定天猫精灵,使得我
们能够通过语音来控制灯的开/关和了解灯的状态.

2. 安装AliOS Things Studio

阿里巴巴提供了详细的文档介绍如何安装开发环境, 下载AliOS Things的代码, 编译示例代码, 下载代码到目标板. ESP32 devkitc是AliOS Things
支持一款开发板. 详细介绍可以参看此网址 AliOS Things Studio.

3. Link Kit SDK介绍

Link Kit SDK是阿里云提供给设备厂商并通过该SDK将设备安全接入到阿里云IoT物联网平台, 从而设备可以被阿里云IoT平台控制, 同样可以被阿里
云的App, 或者天猫精灵控制. 详细介绍可以参看此网址设备接入Link Kit SDK
AliOS 已经包含Link Kit SDK, 我们可以直接生成示例代码.

4. 编译运行Linkkit的示例代码

打开Visual Studio Code, 点击下方工具栏红色方框中的编译选项, 输入linkkitapp选择示例代码按回车, 再输入esp32devkitc选择开发平台再回车.
点击编译按钮生成烧录文件, 再点击烧录. 在这里它会每次提示你选择串口, 如果觉得烦就直接修改\AliOS-Things\build\site_scons\upload\esp32.json,
将"@PORT@“修改成你的串口号比如"COM11”.
点击串口工具图标观察输出, 如果有看到设备反复重启, 应该是没有烧录正确, 可以通过ESP32原厂的烧录工具来验证.
对此过程有疑问的可以参考网址AliOS Things Studio

5. 在阿里云物联网平台建立设备

我们需要在阿里云物联网平台建立设备, 生成product key, device key等信息, 并把信息加入到Linkkit的示例代码中, 双方才可以建立连接.
阿里云IoT提供两个云服务平台:生活物联网平台 和 物联网管理平台, 其中生活物联网平台, 提供设备端的SDK, 公版App, 开发门槛较低, 我们这里采用的就
是这个平台.
进入生活物联网平台

  • 首先创建产品, 我们选择灯的产品, 选项都默认, 这个灯只具有开关功能. 创建完后, 在右侧的基本信息中, 把Product Secret的值拷贝下来.
  • 设备调试, 选择认证模组/芯片里面没有ESP32, 我们选择最后一个品牌,型号不限. 在这里我们可以添加测试设备, 生成 Product Key,
    Device Name, DeviceSecret等信息用于调试.
  • 人机交互, 这一步可以下载公版App, 并可生成产品配网二维码, 用App扫描此二维码即可添加设备.
  • 产品发布, 在这一步可以发布产品, 购买激活码并分配给产品, 我们就可以在App里面找到我们自定义的产品.在这里点击量产管理, 选择量产记录,
    找到你已经发布的设备,点击查看, 在弹出窗口下载激活码, 在一个excel文件里包含了Product key, Device Name 和 Device Secret.

6. 定制linkkitapp的代码

a. app\example\linkkitapp\linkkit_example_solo.c

i. 用生活物联网平台得到的产品信息更新如下宏定义.

#define PRODUCT_KEY "a1X2bEnP82z"
#define PRODUCT_SECRET "7jluWm1zql7bt8qK"
#define DEVICE_NAME "test_06"
#define DEVICE_SECRET "wQ1xOzFH3kLdjCTLfi8Xbw4otRz0lHoq"

ii. 添加GPIO18初始化设置

gpio_dev_t led;
#define GPIO_LED_IO 18void init_gpio(void)
{led.port = GPIO_LED_IO;led.config = OUTPUT_PUSH_PULL;hal_gpio_init(&led);
}int linkkit_main(void *paras)
{/* Adding GPIO initialization at beginning of linkkit_main() */init_gpio(); …
}

iii. 添加处理LED on/off的代码
在处理阿里云发送过来的JSON格式的命令处理函数添加对LightSwitch的处理

static int thing_prop_changed(const void *thing_id, const char *property,void *ctx)
{if (strstr(property, "HSVColor") != 0) {…else if (strstr(property, "LightSwitch") != 0) {int sw_on = 0xFF;linkkit_get_value(linkkit_method_get_property_value, thing_id,property, &sw_on, &value_str);if (value_str) {free(value_str);value_str = NULL;}if (sw_on == 1) {hal_gpio_output_high(&led);}if (sw_on == 0) {hal_gpio_output_low(&led);}}

b. app\example\linkkitapp\app_entry.c

设备端和App有个配网过程, 首先App加入到一个WiFi网络内, 它会把WiFi的SSID和密码通过组播的UDP传输方式发送给设备, 设备加入WiFi后和App
建立匹配, 并注册信息到阿里云. 以后App可通过阿里云对灯设备进行控制.
设备配网的起始函数是do_awss_active(), 原代码中要等一个按键事件才开始配网. 我们可以添加一个2秒定时器来自动运行配网.

static void app_delayed_action(void *arg)
{do_awss_active();
}int application_start(int argc, char **argv)
{…aos_post_delayed_action(2000, app_delayed_action, NULL); aos_loop_run();return 0;
}

c. 编译linkkit app并下载到ESP板子上.

7. 云智能App和设备配网

  • 打开云智能App, 选择扫描, 扫描生活物联网平台上人机交互阶段生成的二维码, 输入WiFi网络的SSID和密码,开始扫描设备.
  • 复位ESP32板子,2秒后开始接收App发送过来的SSID和密码.
  • 配网成功, 云智能App显现设备列表, 点击设备进入控制界面, 可以控制设备的灯的on/off

8. 天猫精灵语音控制灯

  • 安装天猫精灵App, 并用淘宝账户登陆
  • 在云智能App中选择"我的"->“第三方服务”, 选择天猫精灵. 点击绑定账号, 登陆同一个淘宝账号. 灯设备出现在可控设备列表里面.
  • 在天猫精灵App里面, 找到你的灯, 分配好名字, 如书房的灯.
  • 对天猫精灵说"打开书房的灯", 灯开; “关闭书房的灯”, 灯灭; “现在灯是开的么?”, 回答"现在灯处于关闭状态"

天猫精灵对接AliOS ESP32 设备相关推荐

  1. (8)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接3

    导航链接 (1)香橙派+apache2与php+天猫精灵=自建平台语音支持--前言 (2)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派操作系统安装 (3)香橙派+apache2 ...

  2. (6)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接1

    导航链接 (1)香橙派+apache2与php+天猫精灵=自建平台语音支持--前言 (2)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派操作系统安装 (3)香橙派+apache2 ...

  3. (11)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接6

    导航链接 (1)香橙派+apache2与php+天猫精灵=自建平台语音支持--前言 (2)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派操作系统安装 (3)香橙派+apache2 ...

  4. 毕业设计--20200228--内网搭建domoticz系统 frp内网穿透实现天猫精灵控制内网设备

    记录一下三天的成果. 花费了3天的时间 我在树莓派上面搭建了一个domoticz 的智能家居系统 然后利用frp 去实现将本地的内网地址 穿透到 公网上面的 阿里云的个人服务器的8080 端口, 最终 ...

  5. 天猫精灵对接智能设备

    why to do: 我之前一直很喜欢智能家居,可惜的是现在市场上成品的智能家居实在是太贵了,屌丝的码农是在背不起每月高额的房贷和装修费用的基础上,再买成品的智能设备(像某米那样一个智能开关,竟然卖那 ...

  6. 天猫精灵对接php源码,天猫精灵对接3 (具体代码实现)

    1.有什么协议问题,请先看对接文档 2.基础流程请看上一篇文章,已经讲得比较详细了. 3.代码写得渣,有什么可以优化的地方麻烦提一下,喷我也没啥用. 运行(调试)流程: 本机测试(内网模拟授权流程): ...

  7. 2018个人年度总结:我是如何从嵌入式开发到服务器开发对接天猫精灵、小爱智能音箱服务器!懵懂 | 奋斗 | 进阶 | 信心

    文章目录 一.个人总结? 二.步入职场那些事. 2.1 大学项目引起兴趣. 2.2 第一次面试. 二.职业发展的奠基石------ 机智云. 三.嵌入式开发.移动开发.服务器开发. 3.1.嵌入式开发 ...

  8. 分享篇--esp32直连天猫精灵

    今天给大家分享怎么用ESP32直连天猫精灵 启明云端ESP32开发板直连天猫精灵 第一步:环境搭建 1. 阿里物联网 SDK https://github.com/espressif/esp-ali- ...

  9. java对接天猫精灵语音助手实现对公司其下的智能设备进行控制(附上源码)

    java对接天猫精灵语音助手实现对公司其下的智能设备进行控制 前言当初刚来广州 公司上一任java已经离职半年 ,项目已经跑不动了,才招人的,所以我获得的是一个连跑都跑不起来的项目源码并且对项目一无所 ...

最新文章

  1. 用纸作出来的艺术品 漂亮!
  2. 笔记: 环境 - Postgre从安装到使用
  3. matlab xlsread参数_利用MATLAB批量完成科研数据处理
  4. html js 控制span值,根据显示/隐藏span标签/ Javascript组设置span文本?
  5. Day7 子类调用父类的方法supper 绑定方法与非绑定方法
  6. 软件实施提升效率的五个工具
  7. eclipse字体颜色设置
  8. p标签里文字不换行,以省略号结束
  9. CSDN:如何获得C币
  10. oracle可以导出mdf,sql数据库导出mdf
  11. 南昌大学大一C语言程序试卷,南昌大学C语言题库
  12. HLW8032做220V电量采集方案测试
  13. 如何使用 VNC 远程访问树莓派
  14. “落子无悔,抉择本身就是向前”——2022年度总结
  15. html div缩放
  16. IDEA开发常用便捷插件
  17. 开发Python用什么工具好?
  18. 牛奶食疗可治多种疾病(图)
  19. 索尼xz Android 内存,索尼XZ2 Compect 简单上手体验,不算好看但...还行?
  20. 打上花火计算机音乐,【ff14诗人演奏】打上花火完整音符和弦版

热门文章

  1. 前端优化常用技术心得
  2. 浅谈ToB市场精细化运营
  3. java全选如何实现,checkbox全选实现
  4. android手机内存创建文件夹,Android在内存问题中创建文件夹
  5. 物联网、智慧城市、增强现实(AR)与虚拟现实(VR)、区块链技术、语音识别、人工智能、数字汇流是大数据未来应用的七大发展方向
  6. HTML颜色代码表(全)
  7. 华为数通方向--HCIA-Datacom基本知识点简单总结
  8. 服务器提示位置不可用 拒绝访问,Win10纯净版系统提示位置不可用拒绝访问怎么办...
  9. 哔哩哔哩在港溢价发行:上市材料出错被批评,暗盘已破发
  10. 计算机学院班群头像,【北工大表白墙】计算机类18级3班孙宇辰同学,你是广袤沙漠里的盐。...