小愛同學控制ESP8266點燈

小愛同學喫灰很久了,一直想接入小愛來控制些智能硬件,無奈小米的IOT開放平臺只對企業用戶開放。最近研究了點燈科技的物聯網平臺,軟件硬件支持非常豐富,關鍵對於愛好者有免費的版本可以使用,愛了愛了有木有?本篇分享下如何通過Blinker平臺接入小愛同學,進而控制聯網的ESP8266點燈。

1. 硬件部分

我使用瞭如下圖所示ESP8266開發板,其實就是板載了8266最小系統和USB轉串口部分。淘寶上很多,大的區別可能就是串口芯片有CH340和CP2102之分吧。

ESP8266開發板

ESP8266模塊板載了LED燈,連接在GPIO2上,GPIO2輸出高電平燈熄滅,輸出低電平燈點亮,就來控制它吧。

2. 平臺部分

在小愛同學APP中智能家居設備需要從米家APP中添加。所以,這兩個APP提前下載註冊好。這裏重點說下Blinker APP。

  • 從官網下載Blinker,支持安卓和蘋果版本,選擇你喜歡的對應下載,並進行註冊。
  • 點擊添加設備,選擇Diy設備中的Arduino,選擇WiFi接入。會得到唯一的密鑰,這個很重要,後面需要在代碼中添加。

添加設備

  • 返回設備列表頁,點擊添加的設備圖標進入設備控制面板。可點擊右上角進行編輯,這裏的設備名最好用中文,後面用小愛進行控制的時候,你對它說英文,它可能聽不懂哈。

3. 軟件部分

  1. 安裝ESP8266開發板擴展
  • 啓動Arduino IDE,單擊「文件」—「首選項」,在附加開發板管理網址中輸入如下網址:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

添加開發板網址

  • 單擊「工具」—「開發板」—「開發板管理器」,在搜索欄輸入"esp8266",找到開發板進行安裝,如下圖安裝完成。

安裝8266開發板擴展

這個過程如果你網絡不夠科學的話,可能無法完成,官方提供了離線安裝方式,可點擊查看

  1. 安裝blinker Arduino庫

點擊下載庫,將下載好的blinker庫解壓到 我的電腦>文檔>Arduino>libraries 文件夾中。

  1. 程序下載

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();
}

選擇開發板類型和實際端口號,進行程序下載。

選擇8266開發板

4. 綁定小愛

  • 下載好程序後,復位開發板,然後在Blinker APP中會看到添加的設備已經現在在線了。

在線設備

  • 進入米家APP,點擊「我的」—「其他平臺設備」,添加點燈科技,進入後,點擊同步設備,就會看到在Blinker中創建的設備。

添加同步設備

  • 前面綁定成功後,小愛同學中就會出現綁定的設備了。

綁定成功

試着對小愛說:“打開燈”、“關閉燈”、“燈的狀態”,可能網絡不好會有些延遲,不過想要的控制已經實現了。你也可以嘗試去控制些別的設備了。


關注公衆號「TonyCode」,後臺回覆“小愛”,獲取文中代碼及文件。

TonyCode

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章