代碼地址以下:<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大師代發,拒絕轉載,轉載須要做者受權