ESP8266连接天猫精灵(一)

  1. 背景

 

接触天猫精灵后,就想作一些小东西能接入天猫精灵。查看官网的文档后,选择了ESP系列,官方在文档中也比较推荐。读技术文档是个很难受的事情,容易犯困,最好有可以操作的设备。准备如下:

名称

规格

备注

ESP8266开发板

 

ESP官方有售

Linux系统电脑或可以安装虚拟机的Windows电脑

Linux系统使用Ubuntu

请按照官方指导安装环境https://github.com/espressif/esp-ali-smartliving

LED,电阻,导线若干

 

 

天猫精灵音响

 

任意类型

装有天猫精灵手机一台

 

 

 

1、准备环境注意事项

准备开发环境的过程有些麻烦,官方文档在指导中并没有特别详细。但是为了开发可以接入天猫精灵的环境,请务必使用Ubuntu系统,Windows系统可能编译不通过或者其他问题。官方在所有文档中都是使用的Ubuntu系统,建议安装64位系统。

准备环境的时候,需要首先下载ESP8266_RTOS_SDK(https://github.com/espressif/ESP8266_RTOS_SDK), 官方的适配ESP8266的版本是release v3.3,所以不要下载master版本或者下载后切换到v3.3版本。下载好v3.3版本后,先按照官方指导文档进行编译样例程序,然后下载到开发板上,试验是否可以下载,修改部分代码(增加日志),查看是否能烧录到开发板,查看是否可以顺利编译和下载新代码。

建议将export IDF_PATH="$HOME/esp/ESP8266_RTOS_SDK"写入到系统文件/etc/bash.bashrc中,后续系统启动后,该环境变量将自动生效。

 

然后下载esp-ali-smartliving(https://github.com/espressif/esp-ali-smartliving),按照官方指导编译和设置ali-smartliving-device-sdk-c,下载master版本即可。

下载完成后,需要设置环境变量export ALI_PATH="${your_path}/esp-ali-smartliving"

否则将编译失败。

完成了以上操作,才算万里长征第一步完成了。

如果使用对linux命令行使用不熟悉,可以在在linux系统里安装一个VSCODE,便于阅读和修改代码。VScode教程请自己找。

 

2、正餐

进入天猫精灵sdk的文件中($YOUR_HOME/esp-ali-smartliving/examples/solutions/smart_light),使用官方提供的样例程序智能灯,不用修改程序,直接编译然后下载,查看日志。

使用的EPS8266,该程序控制的是GPIO 0/2/4管脚控制灯的开关。

第一次编译下载到开发板,该板子没有进行初始化,应该是直接进入到等待配网环节。日志将打印“chan xx”等字样,这是系统等待配网。同时各个管脚控制的灯应该是处于点亮状态。

此时由于设备没有烧录三元组,即使通过天猫精灵也不能配网成功。

 

准备三元组

按照官方指导(https://help.aliyun.com/document_detail/178141.html?spm=a2c4g.11174283.6.570.2d197132EUPwMq),创建产品,此处文档建议创建“天猫精灵生态产品”,便于后续使用“零配”的配网方式。创建的产品请选择“电工照明->灯”类的

获取三元组信息后,请按照(https://github.com/espressif/esp-ali-smartliving/blob/master/config/mass_mfg/README.md)中指导进行修改配置文件,然后烧录到开发板中。

连接配网

在此过程之前,不需要修改任何代码。

烧录完程序和三元组信息,通过make monitor查看开发板输出的日志,等日志打印到“chan xx”时候,表示板子已经进入等待配网状态,可以通过语音控制天猫精灵“找队友/发现设备”功能,等天猫精灵提示发现了智能灯,只需语音控制“链接”后,天猫精灵将自动为其配网。

配网成功后,可以在APP上查看到有一个智能灯的设备。但是通过语音或者APP却不能控制灯的开关及亮度。原因是官方提供的例程中,参数和当前天猫精灵下发的参数不一样,估计该样例是以前对接旧的平台的参数。

 

在完成以上操作后,表示开发环境、开发板、系统工程等没有问题了。后续的事情就是修改软件代码和调试了。

修改代码

 

云端设置

修改代码前,为了便于调试,需要再阿里生活物联网平台修改该灯的部分参数。截图如下

将其他多余参数删除,仅留下开关和亮度的参数。对亮度brightness参数进行编辑,调整该参数的步长值,设置为1,这样可有100个亮度单位。

然后配置好人机交互后,进入设备调试页。云端设置完成。

 

设备端代码修改

 

设备端代码修改,需要修改两个文件lightbulb.c和linkkit_solo.c。

这两个文件,原有的代码,我将不修改,自己写新函数。

在lightbulb.c中增加设置powerstate的函数

/*** @brief set the powerstate of lightbulb*/int lightbulb_set_powerstate(bool value){ESP_LOGI(TAG, "lightbulb_set_powerstate : %s.", value == true ? "true" : "false");if (true == value){lightbulb_start();}else{lightbulb_stop();}return 0;}//封装启停灯的函数void lightbulb_stop(void){pwm_stop(0);s_on = false;}void lightbulb_start(void)
{pwm_start();s_on = true;}

启停代码请查看源代码,已经上传到git上

在linksol.c文件中,修改static int user_property_set_event_handler(const int devid, const char *request, const int request_len)函数。

 

static int user_property_set_event_handler(const int devid, const char *request, const int request_len){int res = 0;cJSON *root = NULL, *powerstate = NULL, *brightness = NULL;ESP_LOGI(TAG,"Property Set Received, Devid: %d, Request: %s", devid, request);if (!request) {return NULL_VALUE_ERROR;}/* Parse Root */root = cJSON_Parse(request);if (!root) {ESP_LOGI(TAG,"JSON Parse Error");return FAIL_RETURN;}/** Switch Lightbulb powerstate On/Off   */powerstate = cJSON_GetObjectItem(root, "powerstate");if (powerstate) {lightbulb_set_powerstate(powerstate->valueint);}/** set the lightbulb brightnees 1-100  **/brightness = cJSON_GetObjectItem(root, "brightness");if(brightness){lightbulb_set_brightness(brightness->valueint);}cJSON_Delete(root);res = IOT_Linkkit_Report(EXAMPLE_MASTER_DEVID, ITM_MSG_POST_PROPERTY,(unsigned char *)request, request_len);ESP_LOGI(TAG,"Post Property Message ID: %d", res);return SUCCESS_RETURN;}

源代码请从git获取。

该函数原有的代码已经被注释了。

此时可以重新编译,然后下载到开发板上,待设备连接到阿里云,可以通过天猫精灵或者APP进行开关控制和亮度调节。

基本功能设置完成。

下一章为增加主动上报状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/6317.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天猫精灵开发网关php开发,天猫精灵对接

天猫精灵对接 完整控制流程图 与天猫精灵对接后,终端用户可以通过对天猫精灵说出控制命令来调用云端的业务逻辑,最终将正确的操作反馈给用户。 流程图如下所示。 相关连接汇总 开发者网站:https://open.bot.tmall.com/account/login 添加新技…

Java实现天猫精灵与智能设备的对接

天猫精灵与公司智能设备的对接。刚接到这个任务的时候对于一个刚毕业一个月的应届生我来说,有点像巨石,不过经历了10多天的自己琢磨,还是终于把这个新东西搞出来了。楼主是学的java,但在查询相关文章的时候发现没有一篇是用java实…

esp8266对接天猫精灵 微信控制

首先注册账号采用贝壳物联的服务器 添加自己的接口 资料下载地址 链接:https://pan.baidu.com/s/13TWrygx8w6r6llGWlS3kQg 提取码:IH23 链接:https://pan.baidu.com/s/11irBUU56Ck_qceQNSJkNMw 提取码:llal 相关的修改在脚…

esp8266接入天猫精灵教程,附开源app控制

超简单,两步完事 第一步 下载程序到esp8266第二步 绑定天猫精灵第三步 (附)开源app控制 第一步 下载程序到esp8266 下载地址: 点击下载 本demo 是利用arduino IDE开发,关于arduino IDE 的ESP8266环境配置可参考:环境…

使用ESP8266通过Blinker平台接入天猫精灵控制电视/空调

目录 演示视频 1.准备工作1.1 原理1.2 使用的硬件以及硬件连接图1.3 开发环境准备 2.解码空调红外键值2.1 把ESP8266红外接收的实例,上传到NodeMCU中2.2 读取红外键值 3. 配置Blinker App的UI界面4.Arduino程序的编写4.1 控制逻辑4.2 新建一个Arduino程序&#xff0…

蓝牙mesh设备接入天猫精灵或者百度音响

天猫与百度双网关方案 验证双vendor 支持天猫精灵&百度 一、mesh配网协议(mesh provisioning) 1.1、Provisioning协议栈 1.2、PB-ADV (通过百度或天猫精灵音响直接配网) The PB-ADV bear用来传输Generic Provisioning PDUs类型,PB-AD…

国内就能用的Chat-GPT分享

人工智能在语音理解与交互的新里程碑 AI聊天平台 在人工智能(AI)领域,语言模型的发展日新月异。这其中,OpenAI所推出的GPT系列语言模型尤为显眼,尤其是其中的一员——ChatGPT,已经在人工智能的语言理解与…

速看!又一个 Redis 高危漏洞,可植入隐秘后门允许命令执行

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 被研究人员称之为Redigo的一种基于Go的新的恶意软件,它一直针对有CVE-2022-0543漏洞的Redis服务器并植入一个隐秘的后门允许命令执行。 CVE-2022-0543是Redis&#xff0…

嗖的一下!3分钟用ChatGPT生成海南旅游思维导图!

大家好,我是菜鸟哥! 五一长假即将来临,很多小伙伴都要准备出去玩了!旅游肯定要做攻略啊,比如热门的景点海南三亚,北京,上海,成都这些都是打卡的网红景点!小编比较喜欢去海…

【成为架构师课程系列】怎样进行概念架构(Conceptual Architecture)?

目录 前言 什么是概念架构 概念架构阶段的3个步骤 初步设计 高层分割 分层式概念服

【成为架构师课程系列】使用 Cache-Aside 模式将数据存储在缓存中( Using the Cache-Aside pattern to store data in the cache)

目录 前言 背景和问题 解决方案 问题和注意事项 何时使用此模式 例子 前言 按需将数据从数据存储加载到缓存中(Cache-Aside )。这种模式可以提高性能,还有助于保持缓存中保存的数据与底层数据存储中的数据之间的一致性。

ChatGPT Plus会员如何充值的问题

在这个高度信息化的时代,人工智能已经成为我们生活的一部分。 而ChatGPT更是凭借其高度驯化的对话式语言模型迅速收获了上亿的庞大客群。 今年3月,更先进更强大的GPT4.0官宣发布,强大功能更新的同时,客户需要支付一定订阅费用才…

基于hexo和aws云搭建个人博客,0基础0费用,有点豪横(2W字超详细图文教程)

这是篇概述文章,详细参考Hexo建站专栏 最近几个月一直在整理之前的技术笔记,目前虽在体系上还尚有欠缺,但内容方面整理的七七八八了,这些内容一部分记录在了云笔记中另一部分记录在了博客上。于是决定搭建一个个人的技术…

Linux 内核观测技术 eBPF 中文入门指南

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 很早前就想写一篇关于 eBPF 的文章,但是迟迟没有动手,这两天有点时间,所以就来写一篇。这文章主要还是简单的介绍 eBPF 是用来干什么的&#xff…

【AIGC使用教程】AutoGPT 安装使用完全教程

欢迎关注【AIGC使用教程】 专栏 【AIGC使用教程】SciSpace 论文阅读神器 【AIGC使用教程】Microsoft Edge/Bing Chat 注册使用完全指南 【AIGC使用教程】GitHub Copilot 免费注册及在 VS Code 中的安装使用 【AIGC使用教程】GitHub Copilot 免费注册及在 PyCharm 中的安装使用 …

上海亚商投顾:沪指放量大涨 券商等权重板块全线飙升

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日集体反弹,沪指、深成指单边拉升,午后均涨超2%,上证50大涨超2.7%&a…

上海亚商投顾:创业板指大涨近2% 电商概念再爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 沪指今日震荡反弹,创业板指高开高走,午后涨近2%,宁德时代盘中涨近4%。军工板块…

上海亚商投顾:沪指尾盘快速反弹微幅收跌 6G概念大涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日震荡调整,临近尾盘集体回升,石油、保险等权重蓝筹走低,上证50盘中…

ChatGPT网站源码V4.8.0+支持Ai绘画+支持用户套餐+好友邀请功能+管理后台+在线安装+一键在线更新+永久更新!

ChatGPT网站源码V4.8.0支持Ai绘画支持用户套餐好友邀请功能管理后台在线安装一键在线更新永久更新! 安装教程: 一台VPS服务器 服务器安装宝塔 解析域名,绑定服务器 上传系统程序至根目录 创建数据库 访问首页在线安装配置数据库 PHP版本选择:7.3 安装完成…

关于语言模型私有化部署的讨论 | AIGC实践

上周在与TC同行关于AIGC实践的线上交流中,大家普遍比较关心的一个实践切入点是:语言模型的私有化部署——简单来说,就是在企业内部,部署一个属于自己的“ChatGPT”,对于本行业/专业知识,以及企业独有的产品…