ESP8266
一.簡介
今天給大家說一下各個語言助手來控制ESP8266來點燈,這是我們用的還是blinker平臺,前面有寫過關于小愛同學點燈的文章,今天說一下小度和天貓精靈的控制
二.程式
1.小愛同學
- 頭檔案的宣告
#define BLINKER_MIOT_LIGHT
- 初始化
BlinkerMIOT.attachPowerState(miotPowerState); //小愛語音操作注冊函式
- 函式實作,這里我以點燈為例
//小愛電源類回呼
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();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
2.天貓精靈
- 頭檔案的宣告
#define BLINKER_ALIGENIE_LIGHT //設定天貓燈類別庫
- 初始化
BlinkerAliGenie.attachPowerState(aligeniePowerState); //天貓語音操作注冊函式
- 函式實作,這里我以點燈為例
//天貓精靈電源類回呼
void aligeniePowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerAliGenie.powerState("on");
BlinkerAliGenie.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerAliGenie.powerState("off");
BlinkerAliGenie.print();
}
}
3.小度
- 頭檔案的宣告
#define BLINKER_DUEROS_LIGHT //設定小度燈類別庫
- 初始化
BlinkerDuerOS.attachPowerState(duerPowerState); //小度語音操作注冊函式
- 函式實作,這里我以點燈為例
//小度電源類回呼
void duerPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerDuerOS.powerState("on");
BlinkerDuerOS.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerDuerOS.powerState("off");
BlinkerDuerOS.print();
}
}
三.合成
大家可以根據自己的需求來添加程式,我將三種控制合成一個程式
#define BLINKER_PRINT Serial //用于打開串口
#define BLINKER_WIFI //用于指定設備接入方式 wifi 接入
#define BLINKER_MIOT_LIGHT //設定小愛同學控制為語音控制燈設備
#define BLINKER_DUEROS_LIGHT //設定小度燈類別庫
#define BLINKER_ALIGENIE_LIGHT //設定天貓燈類別庫
#include <Blinker.h>
char auth[] = "a3c11b64eb38"; //上一步中在app中獲取到的Secret Key(新建設備的秘鑰)
char ssid[] = "ZHAI"; //你的WiFi熱點名稱
char pswd[] = "123456789"; //你的WiFi密碼
BlinkerButton Button1("btn-abc"); //btn-abc 名稱要和app新建組件一致
// app 端按下按鍵即會執行該函式 回呼函式
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state=="on") {
digitalWrite(LED_BUILTIN, LOW);
// 反饋開關狀態
Button1.print("on");
} else if(state=="off"){
digitalWrite(LED_BUILTIN, HIGH);
// 反饋開關狀態
Button1.print("off");
}
}
//小愛電源類回呼
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();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
//小度電源類回呼
void duerPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerDuerOS.powerState("on");
BlinkerDuerOS.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerDuerOS.powerState("off");
BlinkerDuerOS.print();
}
}
//天貓精靈電源類回呼
void aligeniePowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);
BlinkerAliGenie.powerState("on");
BlinkerAliGenie.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerAliGenie.powerState("off");
BlinkerAliGenie.print();
}
}
void setup() {
// 初始化串口,并開啟除錯資訊
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial); //串口列印除錯資訊
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT); //LED_BUILTIN 宏就是開發板指示燈的io口
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback); //系結按鍵執行回呼函式
BlinkerDuerOS.attachPowerState(duerPowerState); //小度語音操作注冊函式
BlinkerMIOT.attachPowerState(miotPowerState); //小愛語音操作注冊函式
BlinkerAliGenie.attachPowerState(aligeniePowerState); //天貓語音操作注冊函式
}
void loop() {
Blinker.run(); /*每次運行都會將設備收到的資料進行一次決議,
在使用WiFi接入時,該陳述句也負責保持網路連接*/
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/244743.html
標籤:其他
上一篇:CubeIDE V1.5.0學習筆記(一)——更換韌體庫的路徑
下一篇:我的第一篇CSDN博客
