ESP8266连接天猫精灵(一)

您所在的位置:网站首页 了天猫精灵 ESP8266连接天猫精灵(一)

ESP8266连接天猫精灵(一)

2024-07-11 16:39| 来源: 网络整理| 查看: 265

背景

 

接触天猫精灵后,就想作一些小东西能接入天猫精灵。查看官网的文档后,选择了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进行开关控制和亮度调节。

基本功能设置完成。

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3