Wemos mini+點燈app+小米音箱控制室內燈

 Wemos mini+點燈app+小米音箱控制室內燈

思路

由於家裡使用小米音箱幾年下來,也買了一個智能插座,
並且使用小米手環,常常在外就能控制家電成了我在創
作的考量,在網路上偶然看到大陸有一款點燈App,它
有網站,並且有附很多的敎學,重點是它可以接入小米
音箱,所以我就試試做出一個室內燈來物聯一下。


比較可惜的是,現在大陸的網站都要實名制居多,所
以要透過大陸朋友的手機實名一下才能使用

成果

測試


使用app開燈


呼喚小愛開燈

材料

WEMOS D1 MINI
D1 MINI擴展繼電器
插頭式燈座
燈泡
交流110V轉直流5V變壓器模組
小米音箱
點燈App

流程圖


實作

改造插座

(預設是用D1 MINI擴展繼電器腳位輸出端才是在D5)
後記:因為我3D列印時沒有考慮到變壓器,所以下回再補上列印檔

設定BlinkerAPP



接線(圖片解析度的關係可能看不清楚,看上面改造插座圖,也是一樣的接線概念)



程式碼

要先去https://diandeng.tech/dev下載函式庫,用ArduinoIDE的匯入.ZIP的方式匯入

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

const char* auth = "b868-------";
const char* ssid = "19N_2F-2.4G";
//const char* ssid = "CTK";
const char* pswd = "c-----";

// 新建组件对象
BlinkerButton Button1("btn-room");//"btn=room"要跟手機app裡設的一樣

const int pin=5;

void miopowerState(const String&state){
  BLINKER_LOG("get powerstate state: ", state);
  if (state==BLINKER_CMD_ON){
      digitalWrite(LED_BUILTIN, LOW);
      digitalWrite(pin, HIGH);
      BlinkerMIOT.powerState("on");
      BlinkerMIOT.print();
  }else if (state==BLINKER_CMD_OFF){
      digitalWrite(LED_BUILTIN, HIGH);
      digitalWrite(pin, LOW);
      BlinkerMIOT.powerState("off");
      BlinkerMIOT.print();
  }
  if (digitalRead(pin)==HIGH){
    Button1.color("#FF0000");
    Button1.print("on");
  }else if (digitalRead(pin)==LOW){
    Button1.color("#FF8000");
    Button1.print("off");
  }
  Button1.print();
}

// 按下按键即会执行该函数
void button1_callback(const String&state){
  BLINKER_LOG("get powerstate state: ", state);
  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
  digitalWrite(pin, !digitalRead(pin));
  if (digitalRead(pin)==HIGH){
    Button1.color("#FF0000");
    Button1.print("on");
  }else if (digitalRead(pin)==LOW){
    Button1.color("#FF8000");
    Button1.print("off");
  }
  Button1.print();
}

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(pin, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
  digitalWrite(pin, LOW);
  // 初始化blinker
  Blinker.begin(auth, ssid, pswd);
  Button1.attach(button1_callback);
  BlinkerMIOT.attachPowerState(miopowerState);
}

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



留言

這個網誌中的熱門文章

Sonoff RF R2燒錄

ESP-01S燒錄固件