ESP8266连接天猫精灵(一)
- 背景
接触天猫精灵后,就想作一些小东西能接入天猫精灵。查看官网的文档后,选择了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进行开关控制和亮度调节。
基本功能设置完成。
下一章为增加主动上报状态。
ESP8266连接天猫精灵(一)相关推荐
- stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备
stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备 博主还是菜鸟,只是这段时间DIY弄了这些东西,让同样喜欢动手的朋友有个参考,我这个开发超级简单, ...
- 【esp8266】③esp8266对接天猫精灵实现语音控制
源码github地址:https://github.com/linzhongpaihuai/smartplug ①烧录方法:https://blog.csdn.net/u010177891/artic ...
- 使用ESP8266接入“天猫精灵”控制七彩灯(WS2812)的颜色/亮度-开源
目录 `演示视频` 1.准备工作 1.1 `原理` 1.2 `使用的硬件以及硬件连接图` 1.3 `开发环境准备` `Arduino开发环境` `安装ESP8266的扩展` `安装blinker Ar ...
- NodeMCU连接天猫精灵第二集——开发环境、运行条件、工作代码(基于Blinker点灯科技)
NodeMCU连接天猫精灵第一集--硬件构架(基于Blinker点灯科技) 根据上面说的硬件部分已经搭建完成了,所以现在说一下软件开发,首先要有一个共识,NodeMCU是可以用Arduino IDE开 ...
- 人称小HomeKit的智汀,如何连接天猫精灵音箱?
如何连接天猫精灵 1.在智汀家庭云APP内完成产品联网配置 根据APP内引导完成设备联网配置 2.配置天猫精灵 (如果您已经配置好了天猫精灵,您可以跳过这一步) ① 下载并安装天猫精灵APP. ② 注 ...
- 【TB-02 Kit 蓝牙Mesh连接天猫精灵】 --AT固件适配任意设备(风扇空调饮水机)
摘要 这篇文章主要介绍了如何使用天猫精灵AT固件对接天猫精灵音箱,包括如何烧录三元组,解析串口数据,上报状态,解除绑定,与手机通信等等.硬件主要基于安信可TB-02 Kit开发板,采用的是泰凌微(Te ...
- TB-02_Kit 开发板连接天猫精灵
TB-02_Kit 开发板简介 Tb-02_Kit是安信可设计的一款蓝牙开发板,支持二次开发,串口烧录.除了基础蓝牙功能外,还支持BLE Mesh,可连接天猫精灵. 安信可串口烧录工具 TBXX_Fl ...
- 名派照明连接天猫精灵_统一的动态精灵照明
名派照明连接天猫精灵 Sprites in Daedalus make use of Unity's lighting system to appear with 3D-like properties ...
- 连接手表_FERACE手表新玩法:连接天猫精灵
天猫精灵! "懒鬼!该动动啦" FERACE手表只是适用于"抛开手机去运动"? 那怎么能成? 我们和大家一起不断探索新的玩法! FERACE飞锐思 连接天猫精灵 ...
- Esp8266对接天猫精灵控制RGB彩灯
一.代码获取编译 下载本工程 git clone https://github.com/espressif/esp-aliyun.git cd esp-aliyun 烧录三元组信息 文档烧录三元组 N ...
最新文章
- [MySQL]增加用户 授权 远程登录
- Mysql Select 语句中实现的判断
- eyoucmsPHP企业网站内容管理系统
- LeetCode 1748. 唯一元素的和
- Zookeeper Watcher(事件监听器)?
- android系统知识(8.0)---Android O 启动优化
- linux Audit 介绍【架构篇】
- gitlab中创建项目组及项目
- Socket长连接和短连接的区别
- 修改this指向的方法
- 23_STM32调试和下载:SW配置
- 全球AI技术开放日系列5(上海站):走进爱奇艺
- pytorch gpu版本安装
- 个人怎么制作微信小程序,微信小程序可以免费制作吗?微信小程序制作教程
- python的range函数用法和实例
- Zabbix-Linux-邮箱报警
- Linux磁盘管理练习题(习题+演示)
- 【以太网模块调试记录】ZLG EPORTM集成式RJ45调试记录(STM32/GD32)
- gaussdb 开源免费版本【包下载、安装部署】【01】
- 【GP】Greenplum入门解析(一)
热门文章
- Android ID谷歌认证,GSF ID KEY(谷歌服务框架ID)作为Android设备唯一标识符
- FC冒险岛java版_FC冒险岛全关卡版
- 话筒性能测试软件,LogiTech的话筒屏蔽性能测试方案
- ScreenToClient和ClientToScreen
- windows下载android源码
- sqlite3用法详解
- CS1.6自定义游戏中的H菜单和设置菜单,增加一键买枪功能
- 计算机软考软件设计师知识点:软件可行性研究报告
- 什么是消息队列(Message queue)
- 省份城市 mysql_省份城市数据库 mysql