代码地址以下:<br>http://www.demodashi.com/demo/12178.htmlhtml
最近的天猫精灵火热朝天,双十一仅仅99块就抱回家!这门博文,涉及到绝大部分的接入阿里智能的商业者,<font color=red>为了隐私,我必需要把某些图片的信息隐藏 !可是我会把整个过程给须要的人理顺 一下,毫不是为了凑人气而写。git
智能硬件模组、阿里智能云、阿里智能 APP,阿里智能生活事业部为厂商提供一站式设备智能化解决方案。github
<font color=black> 申请接入阿里智能平台的模组必要要有阿里智能官方的认证!不然不容许接入!已经过认证的模组列表:点击查看json
<font color=black> 乐鑫官网已经给出了接入阿里智能的Demo点击查看,咱们开发者不需本身搭建框架,只需关注上发逻辑和下发逻辑处理便可,这个和机智云的一站式开发同样的道理!数据结构
<font color=black> 因为指定的操做是 freertos ,并不是 nons ,因此本博文的工程,不能直接导入就编译,我的最好的方法就是Windows平台搭建Linux虚拟机导入8266的系统,进行编译。app
<font color=black>成功上架的产品,都可被天猫精灵语音控制,不论是哪一个厂商的设备,只有接入阿里智能,均可以实现语音控制、设备联动控制,并且APP控制都是已经自动生成,无需投入成本再次开发!框架
<img src="https://github.com/xuhongv/StudyInEsp8266/raw/master/12_Esp8266-Alink_OneLED/docs/readme_image/alink_description.png" width="800" />函数
一、怎么签定协议?签约详情点击:点击查看ui
二、怎么建立产品?产品注册,产品注册是设备上云的必要过程,任何一款产品在上云以前必须完成在平台的注册。<font color=red>本博客由于就控制一盏灯,因此咱们只需选择基础属性就能够了,即开关灯!lua
esp8266@esp8266-VirtualBox:~$ ./mount.sh [sudo] password for esp8266: esp8266@esp8266-VirtualBox:~$ cd /home/esp8266/Share/esp8266-alink-v1.0-master esp8266@esp8266-VirtualBox:~/Share/esp8266-alink-v1.0-master$
export SDK_PATH=/home/esp8266/Share/esp8266-alink-v1.0-master/esp8266-rtos-sdk export BIN_PATH=/home/esp8266/Share/esp8266-alink-v1.0-master/bin
在阿里智能的产品详情有个“TRD表下载”,下载设备 TRD 表格后 ,并将相应信息修改 user_config.h 下相应的宏定义便可,系统会调用alink_init()传入产品注册的信息,注册事件回调函数
#define DEV_NAME "ALINKTEST" #define DEV_BRAND "espressif" #define DEV_CATEGORY "LIVING" #define DEV_TYPE "LIGHT" #define DEV_MANUFACTURE "ALINKTEST" #define DEV_MODEL "ALINKTEST_LIVING_LIGHT_SMARTLED" /* key/secret */ #define ALINK_KEY "ljB6vqoLzmP8fGkE6pon" #define ALINK_SECRET "YJJZjytOCXDhtQqip4EjWbhR95zTgI92RVjzjyZF" /* sandbox key/secret */ #define ALINK_KEY_SANDBOX "dpZZEpm9eBfqzK7yVeLq" #define ALINK_SECRET_SANDBOX "THnfRRsU5vu6g6m9X6uFyAjUWflgZ0iyGjdEneKm" /* device hardware information */ #define DEV_SN "1234567890" #define DEV_VERSION "1.0.0" /* device MAC addr and chip ID, should acquired by call functions */ #define DEV_MAC "" #define DEV_CHIPID ""
static alink_err_t proactive_report_data() { char *up_cmd = alink_malloc(ALINK_DATA_LEN); char *buffer_tmp = NULL; buffer_tmp = up_cmd; buffer_tmp += sprintf(buffer_tmp, "{"); if (switchOpenOff == 1) { buffer_tmp += sprintf(buffer_tmp, "\"Switch\": { \"value\": \"%d\" },", 1); } else { buffer_tmp += sprintf(buffer_tmp, "\"Switch\": { \"value\": \"%d\" },",0); } buffer_tmp += sprintf(buffer_tmp, "\"ErrorCode\": { \"value\": \"%d\" }", 0); buffer_tmp += sprintf(buffer_tmp, "}"); ALINK_LOGE("up_cmd(json):%s", up_cmd); if (alink_write(up_cmd, strlen(up_cmd) + 1, CONFIG_WIFI_WAIT_TIME) < 0) { ALINK_LOGW("alink_write is error"); } alink_free(up_cmd); return ALINK_OK; }
void read_task_test(void *pvParameters) { while (1) { ALINK_LOGI("read down cmd param"); char *down_cmd = alink_malloc(ALINK_DATA_LEN); if (alink_read(down_cmd, ALINK_DATA_LEN, portMAX_DELAY) < 0) { ALINK_LOGW("alink_read is error"); continue; } ALINK_LOGE("down_cmd param(json):%s", down_cmd); json_value *jptr = json_parse(down_cmd, strlen(down_cmd)); //cJson库解析数据,无需理会 if (jptr) { device_data_parse(jptr, "Switch", &(virtual_device.Switch)); device_data_parse(jptr, "ErrorCode", &(virtual_device.ErrorCode)); //若是是1就,开灯;0就关灯;对应的led_on()在demo的led.c有,自行查询。 if (virtual_device.Switch == 1) { led_on(); switchOpenOff = 1; } else { led_off(); switchOpenOff = 0; } ALINK_LOGE( "read: OnOff_Power:%d, TimeDelay_PowerOff: %d, WorkMode_MasterLight: %d, free heap: %d\n", virtual_device.Switch, virtual_device.ErrorCode, system_get_free_heap_size()); } //读取了云端设备以后再次提交信息给云端 proactive_report_data(); alink_free(down_cmd); json_value_free(jptr); } }
7.编译程序,烧录固件。
虚拟机控制台写上 ./gen_misc.sh , 表示运行gen_misc.sh 配置文件,以后打印以下:恭喜,成功!
在Windows下,打开烧录软件,选择bin文件,注意bin文件都在共享目录刚刚那个编译工程的bin文件夹下面,对应的烧录地址见下面第二张图,波特率能够选择 152000:
八、工程目录说明:
若是要修改触发一键配网smartConfig方法,看 alink_key_trigger.c 文件。
esp8266-alink-v1.0 ├── bin // 存放生成的 bin 文件 ├── docs // demo 使用文档的图片 ├── driver // 按键驱动 ├── esp8266-rtos-sdk // ESP8266 SDK ├── gen_misc.sh // 编译脚本 ├── include // 用户配置头文件 ├── Makefile // 经过 Makefile 来配置 ALINK 选项 ├── platforms // 平台相关文件 │ ├── alink // alink 相关 API │ │ ├── adaptation // ALINK 的底层适配 │ │ ├── application // ALINK 应用层 API 的封装 │ │ │ ├── esp_alink_data_transport.c // ALINK 数据传传输 │ │ │ ├── esp_alink_main.c // 链接 AP 、恢复出厂设置、事件回调函数 │ │ │ ├── esp_info_store.c // FLASH 的读写操做 │ │ │ └── Makefile │ │ ├── include │ │ │ ├── alink_adaptation.h // 应用层适配时定义的一些 API │ │ │ ├── alink_export.h // ALINK 官方提供的原生应用层 API │ │ │ ├── alink_export_rawdata.h // ALINK 官方提供的原生应用层 API │ │ │ ├── alink_json.h // ALINK 官方提供的原生 JSON API │ │ │ ├── esp_alink.h // 封装的应用层 API 使用说明及配置 │ │ │ ├── esp_alink_log.h // 定义了打印等级 │ │ │ └── esp_info_store.h // 信息存储 API 详解及 EXAMPLE │ │ ├── Makefile │ │ └── README.md │ └── Makefile ├── README.md // demo 使用文档 └── user // 用户相关文件 ├── alink_key_trigger.c // 按键触发函数 ├── ALINKTEST_LIVING_LIGHT_SMARTLED_LUA.lua // 透传示例使用的 LUA 脚本 ├── Makefile ├── sample_json.c // ALINK 非透传示例 ├── sample_passthrough.c // ALINK 透传示例 └── user_main.c // 用户程序入口
企业者的福音之8266接入阿里智能,点亮一盏灯。
代码地址以下:<br>http://www.demodashi.com/demo/12178.html
注:本文著做权归做者,由demo大师代发,拒绝转载,转载须要做者受权