小愛同學喫灰很久了,一直想接入小愛來控制些智能硬件,無奈小米的IOT開放平臺只對企業用戶開放。最近研究了點燈科技的物聯網平臺,軟件硬件支持非常豐富,關鍵對於愛好者有免費的版本可以使用,愛了愛了有木有?本篇分享下如何通過Blinker平臺接入小愛同學,進而控制聯網的ESP8266點燈。
1. 硬件部分
我使用瞭如下圖所示ESP8266開發板,其實就是板載了8266最小系統和USB轉串口部分。淘寶上很多,大的區別可能就是串口芯片有CH340和CP2102之分吧。
ESP8266模塊板載了LED燈,連接在GPIO2上,GPIO2輸出高電平燈熄滅,輸出低電平燈點亮,就來控制它吧。
2. 平臺部分
在小愛同學APP中智能家居設備需要從米家APP中添加。所以,這兩個APP提前下載註冊好。這裏重點說下Blinker APP。
- 從官網下載Blinker,支持安卓和蘋果版本,選擇你喜歡的對應下載,並進行註冊。
- 點擊添加設備,選擇Diy設備中的Arduino,選擇WiFi接入。會得到唯一的密鑰,這個很重要,後面需要在代碼中添加。
- 返回設備列表頁,點擊添加的設備圖標進入設備控制面板。可點擊右上角進行編輯,這裏的設備名最好用中文,後面用小愛進行控制的時候,你對它說英文,它可能聽不懂哈。
3. 軟件部分
- 安裝ESP8266開發板擴展
- 啓動Arduino IDE,單擊「文件」—「首選項」,在附加開發板管理網址中輸入如下網址:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 單擊「工具」—「開發板」—「開發板管理器」,在搜索欄輸入"esp8266",找到開發板進行安裝,如下圖安裝完成。
這個過程如果你網絡不夠科學的話,可能無法完成,官方提供了離線安裝方式,可點擊查看。
- 安裝blinker Arduino庫
點擊下載庫,將下載好的blinker庫解壓到 我的電腦>文檔>Arduino>libraries 文件夾中。
- 程序下載
Blinker官方提供了小愛同學的接入流程,以RGB燈的控制爲例,介紹了小愛同學的各操作接口,具體可參照官方介紹。
我在這裏做了簡化,只用來控制燈的亮滅,只用了電源類操作接口和設備查詢接口。其實就是實現兩個回調函數,當接收到小愛同學的命令,會對應進入回調函數去操作硬件。
代碼如下,代碼中的auth、ssid、pswd要填入實際的值。
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#include <Blinker.h>
char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID or name";
char pswd[] = "Your WiFi network WPA password or WEP key";
bool ledState;
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
uint32_t BlinkerTime = millis();
Blinker.print("millis", BlinkerTime);
}
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
ledState = true;
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
ledState = false;
}
}
void miotQuery(int32_t queryCode)
{
BLINKER_LOG("MIOT Query codes: ", queryCode);
switch (queryCode)
{
case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
BLINKER_LOG("MIOT Query Power State");
BlinkerMIOT.powerState(ledState ? "on" : "off");
BlinkerMIOT.print();
break;
default :
BlinkerMIOT.powerState(ledState ? "on" : "off");
BlinkerMIOT.print();
break;
}
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
BlinkerMIOT.attachPowerState(miotPowerState);
BlinkerMIOT.attachQuery(miotQuery);
}
void loop()
{
Blinker.run();
}
選擇開發板類型和實際端口號,進行程序下載。
4. 綁定小愛
- 下載好程序後,復位開發板,然後在Blinker APP中會看到添加的設備已經現在在線了。
- 進入米家APP,點擊「我的」—「其他平臺設備」,添加點燈科技,進入後,點擊同步設備,就會看到在Blinker中創建的設備。
- 前面綁定成功後,小愛同學中就會出現綁定的設備了。
試着對小愛說:“打開燈”、“關閉燈”、“燈的狀態”,可能網絡不好會有些延遲,不過想要的控制已經實現了。你也可以嘗試去控制些別的設備了。
關注公衆號「TonyCode」,後臺回覆“小愛”,獲取文中代碼及文件。