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进行开关控制和亮度调节。

基本功能设置完成。

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

ESP8266连接天猫精灵(一)相关推荐

  1. stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备

    stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备 博主还是菜鸟,只是这段时间DIY弄了这些东西,让同样喜欢动手的朋友有个参考,我这个开发超级简单, ...

  2. 【esp8266】③esp8266对接天猫精灵实现语音控制

    源码github地址:https://github.com/linzhongpaihuai/smartplug ①烧录方法:https://blog.csdn.net/u010177891/artic ...

  3. 使用ESP8266接入“天猫精灵”控制七彩灯(WS2812)的颜色/亮度-开源

    目录 `演示视频` 1.准备工作 1.1 `原理` 1.2 `使用的硬件以及硬件连接图` 1.3 `开发环境准备` `Arduino开发环境` `安装ESP8266的扩展` `安装blinker Ar ...

  4. NodeMCU连接天猫精灵第二集——开发环境、运行条件、工作代码(基于Blinker点灯科技)

    NodeMCU连接天猫精灵第一集--硬件构架(基于Blinker点灯科技) 根据上面说的硬件部分已经搭建完成了,所以现在说一下软件开发,首先要有一个共识,NodeMCU是可以用Arduino IDE开 ...

  5. 人称小HomeKit的智汀,如何连接天猫精灵音箱?

    如何连接天猫精灵 1.在智汀家庭云APP内完成产品联网配置 根据APP内引导完成设备联网配置 2.配置天猫精灵 (如果您已经配置好了天猫精灵,您可以跳过这一步) ① 下载并安装天猫精灵APP. ② 注 ...

  6. 【TB-02 Kit 蓝牙Mesh连接天猫精灵】 --AT固件适配任意设备(风扇空调饮水机)

    摘要 这篇文章主要介绍了如何使用天猫精灵AT固件对接天猫精灵音箱,包括如何烧录三元组,解析串口数据,上报状态,解除绑定,与手机通信等等.硬件主要基于安信可TB-02 Kit开发板,采用的是泰凌微(Te ...

  7. TB-02_Kit 开发板连接天猫精灵

    TB-02_Kit 开发板简介 Tb-02_Kit是安信可设计的一款蓝牙开发板,支持二次开发,串口烧录.除了基础蓝牙功能外,还支持BLE Mesh,可连接天猫精灵. 安信可串口烧录工具 TBXX_Fl ...

  8. 名派照明连接天猫精灵_统一的动态精灵照明

    名派照明连接天猫精灵 Sprites in Daedalus make use of Unity's lighting system to appear with 3D-like properties ...

  9. 连接手表_FERACE手表新玩法:连接天猫精灵

    天猫精灵! "懒鬼!该动动啦" FERACE手表只是适用于"抛开手机去运动"? 那怎么能成? 我们和大家一起不断探索新的玩法! FERACE飞锐思 连接天猫精灵 ...

  10. Esp8266对接天猫精灵控制RGB彩灯

    一.代码获取编译 下载本工程 git clone https://github.com/espressif/esp-aliyun.git cd esp-aliyun 烧录三元组信息 文档烧录三元组 N ...

最新文章

  1. [MySQL]增加用户 授权 远程登录
  2. Mysql Select 语句中实现的判断
  3. eyoucmsPHP企业网站内容管理系统
  4. LeetCode 1748. 唯一元素的和
  5. Zookeeper Watcher(事件监听器)?
  6. android系统知识(8.0)---Android O 启动优化
  7. linux Audit 介绍【架构篇】
  8. gitlab中创建项目组及项目
  9. Socket长连接和短连接的区别
  10. 修改this指向的方法
  11. 23_STM32调试和下载:SW配置
  12. 全球AI技术开放日系列5(上海站):走进爱奇艺
  13. pytorch gpu版本安装
  14. 个人怎么制作微信小程序,微信小程序可以免费制作吗?微信小程序制作教程
  15. python的range函数用法和实例
  16. Zabbix-Linux-邮箱报警
  17. Linux磁盘管理练习题(习题+演示)
  18. 【以太网模块调试记录】ZLG EPORTM集成式RJ45调试记录(STM32/GD32)
  19. gaussdb 开源免费版本【包下载、安装部署】【01】
  20. 【GP】Greenplum入门解析(一)

热门文章

  1. Android ID谷歌认证,GSF ID KEY(谷歌服务框架ID)作为Android设备唯一标识符
  2. FC冒险岛java版_FC冒险岛全关卡版
  3. 话筒性能测试软件,LogiTech的话筒屏蔽性能测试方案
  4. ScreenToClient和ClientToScreen
  5. windows下载android源码
  6. sqlite3用法详解
  7. CS1.6自定义游戏中的H菜单和设置菜单,增加一键买枪功能
  8. 计算机软考软件设计师知识点:软件可行性研究报告
  9. 什么是消息队列(Message queue)
  10. 省份城市 mysql_省份城市数据库 mysql