Esp8266-01s通過Blinker平臺(tái)遠(yuǎn)程控制電腦的開關(guān)機(jī)

前言

? ? 前些年買了一板e(cuò)sp8266 01s共6枚泻拦,通過blinker平臺(tái)復(fù)刻了點(diǎn)亮led燈項(xiàng)目慰技,通過綁定米家設(shè)備秤掌,可以用小愛同學(xué)進(jìn)行語音控制led燈的開關(guān)、顏色以及亮度等等舔糖。同時(shí)也可以通過Home Assistant homekit 對(duì)其設(shè)備進(jìn)行控制(這個(gè)實(shí)現(xiàn)控制過程比較復(fù)雜锅移,折騰要有耐心n,n)嘶是。物聯(lián)網(wǎng)模塊加一個(gè)繼電器行拢,再通過云平臺(tái)獲取的key綁定設(shè)備,就可以實(shí)現(xiàn)對(duì)各種家電器的遠(yuǎn)程開關(guān)控制落包。本章就粗略講述一下我是如何通過esp8266 01s加上繼電器實(shí)現(xiàn)遠(yuǎn)程電腦開機(jī)部蛇!

  • 準(zhǔn)備模塊

? USB固件刷寫器和esp8266 01s及繼電器、杜邦線

esp8266 01s+固件刷寫器
esp8266+繼電器
  • 燒錄代碼

?? 實(shí)例代碼

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include <Blinker.h>

char auth[] = "***"; //云平臺(tái)獲取的key
char ssid[] = "***"; //WiFi名稱
char pswd[] = "***"; // WiFi密碼
int GPIO = 0;
bool oState = false;

BlinkerButton Button1("switch"); //創(chuàng)建按鈕組件咐蝇,數(shù)據(jù)鍵

void button1_callback(const String & state)
{
  BLINKER_LOG("get button state: ", state);
  if (state == BLINKER_CMD_BUTTON_TAP) {//響應(yīng)短按
    if (digitalRead(LED_BUILTIN) == HIGH) { //若電腦是關(guān)閉狀態(tài)(電腦沒有通過APP啟動(dòng))
      digitalWrite(LED_BUILTIN, LOW);
      digitalWrite(GPIO, HIGH);
      BLINKER_LOG("Button tap!");
      Blinker.delay(150);
      digitalWrite(GPIO, LOW);
      Button1.color("#FFC800");
      Button1.text("運(yùn)行中");
      Button1.print();
    }
  }
  else if (state == BLINKER_CMD_BUTTON_PRESSUP) {//響應(yīng)長按

    if (digitalRead(LED_BUILTIN) == LOW) { //若電腦是開啟狀態(tài)(電腦通過APP啟動(dòng))
      digitalWrite(GPIO, HIGH);//繼電器接通
      BLINKER_LOG("Button pressed!");
      Blinker.delay(5000);
      digitalWrite(LED_BUILTIN, HIGH);//eps-01s燈滅
      digitalWrite(GPIO, LOW);//5秒后繼電器斷開涯鲁,相當(dāng)于長按電腦開機(jī)鍵5秒
      Button1.color("#CCCCCC");
      Button1.text("已關(guān)閉");
      Button1.print();
    }
    else { //關(guān)閉狀態(tài)時(shí)LED_BUILTIN為高電平,不亮
      Button1.text("沒開機(jī)");//按鍵提示“沒開機(jī)”
      Button1.print();
      Blinker.delay(3000);
      Button1.color("#CCCCCC");
      Button1.text("已關(guān)閉");//“沒開機(jī)”變更為“已關(guān)閉”
      Button1.print();
    }
  }
}
void miotPowerState(const String & state, uint8_t num)
{
  BLINKER_LOG("need set power state: ", state);
  if (state == BLINKER_CMD_ON) {
    digitalWrite(LED_BUILTIN, LOW);
    digitalWrite(GPIO, HIGH);
    Blinker.delay(150);
    digitalWrite(GPIO, LOW);
    BlinkerMIOT.powerState("on");
    BlinkerMIOT.print();
    oState = true;
  }
  else if (state == BLINKER_CMD_OFF) {
    digitalWrite(GPIO, HIGH);
    Blinker.delay(5000);//改成100-300有序,響應(yīng)短按關(guān)機(jī)抹腿,需配合電腦電源鍵策略,默認(rèn)策略可行旭寿;而且數(shù)值2000以上警绩,小愛會(huì)提示出問題(會(huì)響應(yīng)關(guān)機(jī)動(dòng)作)
    digitalWrite(LED_BUILTIN, HIGH);
    digitalWrite(GPIO, LOW);
    BlinkerMIOT.powerState("off");
    BlinkerMIOT.print();
    oState = false;
  }
}

void miotQuery(int32_t queryCode)//完全復(fù)制來的,寫上盅称,免得串口測試時(shí)一直提示沒有…
{
  BLINKER_LOG("MIOT Query codes: ", queryCode);

  switch (queryCode)
  {
    case BLINKER_CMD_QUERY_ALL_NUMBER :
      BLINKER_LOG("MIOT Query All");
      BlinkerMIOT.powerState(oState ? "on" : "off");
      BlinkerMIOT.print();
      break;
    case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
      BLINKER_LOG("MIOT Query Power State");
      BlinkerMIOT.powerState(oState ? "on" : "off");
      BlinkerMIOT.print();
      break;
    default :
      BlinkerMIOT.powerState(oState ? "on" : "off");
      BlinkerMIOT.print();
      break;
  }
}

void setup()
{
  Serial.begin(115200);
  BLINKER_DEBUG.stream(Serial);

  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);//這塊esp8266(指示燈)默認(rèn)高電平關(guān)閉狀態(tài)
  pinMode(GPIO, OUTPUT);
  digitalWrite(GPIO, LOW); //繼電器(指示燈)默認(rèn)低電平關(guān)閉狀態(tài)

  Blinker.begin(auth, ssid, pswd);
  BlinkerMIOT.attachPowerState(miotPowerState);
  BlinkerMIOT.attachQuery(miotQuery);
  Button1.attach(button1_callback);
//  Button2.attach(button2_callback);
  Blinker.attachHeartbeat(heartbeat);
}

void loop()
{
  Blinker.run();
} 

?在Arduino IDE中導(dǎo)入blinker庫肩祥,以及開發(fā)板e(cuò)ps8266的庫后室,然后把代碼編譯上傳至esp8266 01s,具體細(xì)節(jié)就不展示了

char auth[] = "平臺(tái)獲取的密匙";
char ssid[] = "WiFi名稱";
char pswd[] = "WiFi密碼";
注意以上三行代碼必須修改為正確信息混狠,不然設(shè)備會(huì)不在線岸霹,沒辦法進(jìn)行下一步測試。
BlinkerButton Button1("自定義按鍵數(shù)據(jù)");
自定義按鈕鍵值将饺,一定要和app上的鍵值一致贡避,不然沒有反應(yīng)

  • 上電測驗(yàn)


????點(diǎn)擊按鈕運(yùn)行正常

  • 連接線路

set1

????從主機(jī)電源中接線給繼電器模塊供電。

set2

????繼電器的COM和NC口引出導(dǎo)線接入主板上的powersw針腳予弧,其中分線接入了主機(jī)箱的開機(jī)鍵刮吧,這樣就不影響主機(jī)自帶的實(shí)體開機(jī)鍵的使用

  • 成果展示


?使用小愛同學(xué)成功控制電腦開機(jī)!

  • 結(jié)語

?????最后在測試過程中發(fā)現(xiàn)掖蛤,用blinker平臺(tái)App的點(diǎn)擊按鈕開機(jī)后杀捻,在電腦系統(tǒng)本身正常關(guān)機(jī)的前提下,App的按鈕會(huì)一直保持運(yùn)行中狀態(tài)坠七,導(dǎo)致blinker平臺(tái)的按鈕失效水醋,App上需要長按按鈕模擬關(guān)機(jī)再點(diǎn)擊按鈕才能正常開機(jī)旗笔,所以還是一裝到底彪置,對(duì)小愛同學(xué)說:“下班”,然后不需動(dòng)手即刻關(guān)閉電腦蝇恶!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拳魁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撮弧,更是在濱河造成了極大的恐慌潘懊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贿衍,死亡現(xiàn)場離奇詭異授舟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贸辈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門释树,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人擎淤,你說我怎么就攤上這事奢啥。” “怎么了嘴拢?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵桩盲,是天一觀的道長。 經(jīng)常有香客問我席吴,道長赌结,這世上最難降的妖魔是什么捞蛋? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮柬姚,結(jié)果婚禮上襟交,老公的妹妹穿的比我還像新娘。我一直安慰自己伤靠,他們只是感情好捣域,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宴合,像睡著了一般焕梅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卦洽,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天贞言,我揣著相機(jī)與錄音,去河邊找鬼阀蒂。 笑死该窗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚤霞。 我是一名探鬼主播酗失,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼昧绣!你這毒婦竟也來了规肴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤夜畴,失蹤者是張志新(化名)和其女友劉穎拖刃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贪绘,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兑牡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了税灌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片均函。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖垄琐,靈堂內(nèi)的尸體忽然破棺而出边酒,到底是詐尸還是另有隱情,我是刑警寧澤狸窘,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布墩朦,位于F島的核電站,受9級(jí)特大地震影響翻擒,放射性物質(zhì)發(fā)生泄漏氓涣。R本人自食惡果不足惜牛哺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劳吠。 院中可真熱鬧引润,春花似錦、人聲如沸痒玩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蠢古。三九已至奴曙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間草讶,已是汗流浹背洽糟。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堕战,地道東北人坤溃。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像嘱丢,于是被迫代替她去往敵國和親薪介。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355