#define BLINKER_WIFI
#define BLINKER_PRINT Serial
#define BLINKER_MIOT_MULTI_OUTLET
#include <Blinker.h>
 
//****wifi、设备的定义****
char auth[] = "a5c17ee24a10";
char ssid[] = "CMCC-Richie";
char pswd[] = "wlq@3210";

//io口定义
int kg1=D8;
int kg2=D7;
int kg3=D6;
int kg4=D5;
int sj=1000;//延迟时间
int x=D9;//定义状态反馈口

//****新建组件对象****
BlinkerButton Button1("btn-kg1"); //设置app按键的键名
BlinkerButton Button2("btn-kg2"); //设置app按键的键名
BlinkerButton Button3("btn-kg3"); //设置app按键的键名
BlinkerButton Button4("btn-kg4");  //设置app按键的键名

// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("1#灯,状态: ", state);
    if (state=="on") {
        digitalWrite(LED_BUILTIN, LOW);
         digitalWrite(kg1, HIGH);
          Button1.color("#00FF00");   //1#按钮按下时,app按键颜色状态显示是绿色
        // 反馈开关状态
        Button1.text("已开灯");
        Button1.print("on");
        BLINKER_LOG ("1#灯已开灯on");  //串口打印
    } else if(state=="off"){
        digitalWrite(LED_BUILTIN, HIGH);
        digitalWrite(kg1, LOW);
        Button1.color("#000000");  ////2#按钮没有按下时,app按键颜色状态显示是黑色
               // 反馈开关状态
        Button1.text("已关灯");
        Button1.print("off");
        BLINKER_LOG ("1#灯已关灯off");
    }
}

void button2_callback(const String & state) {
    BLINKER_LOG("2#灯,状态: ", state);
    if (state=="on") {
         digitalWrite(kg2, HIGH);
         Button2.color("#00FF00");   //2#按钮按下时,app按键颜色状态显示是绿色
        // 反馈开关状态
        Button2.text("已开灯");
        Button2.print("on");
        BLINKER_LOG ("2#灯已开灯on");  //串口打印
    } else if(state=="off"){
         digitalWrite(kg2, LOW);
         Button2.color("#000000");  //2#按钮没有按下时,app按键颜色状态显示是黑色
        // 反馈开关状态
        Button2.text("已关灯");
        Button2.print("off");
        BLINKER_LOG ("2#灯已关灯off");
    }
}

void button3_callback(const String & state) {
    BLINKER_LOG("3#锁,状态: ", state);
    if (state=="on") {
         digitalWrite(kg3, HIGH);
         Button3.color("#00FF00");   //3#按钮按下时,app按键颜色状态显示是绿色
        // 反馈开关状态
        Button3.text("已开锁");
        Button3.print("on");
        BLINKER_LOG ("3#锁已开锁on");  //串口打印
        Blinker.delay(500);//延时0.5秒
        digitalWrite(kg3, LOW);
         Button3.color("#000000");  //3#按钮没有按下时,app按键颜色状态显示是黑色
        // 反馈开关状态
        Button3.text("已关锁");
        Button3.print("off");
        BLINKER_LOG ("3#锁已关灯off");
    } else if(state=="off"){
         digitalWrite(kg3, LOW);
         Button3.color("#000000");  //3#按钮没有按下时,app按键颜色状态显示是黑色
        // 反馈开关状态
        Button3.text("已关锁");
        Button3.print("off");
        BLINKER_LOG ("3#锁已关锁off");
    }
}

void button4_callback(const String & state) {
    BLINKER_LOG("4#锁,状态: ", state);
    if (state=="on") {
         digitalWrite(kg4, HIGH);
         Button4.color("#00FF00");   //4#按钮按下时,app按键颜色状态显示是绿色
        // 反馈开关状态
        Button4.text("已开锁");
        Button4.print("on");
        BLINKER_LOG ("4#锁已开锁on");  //串口打印
        Blinker.delay(500);//延时0.5秒
        digitalWrite(kg4, LOW);
        Button4.color("#000000");  //4#按钮没有按下时,app按键颜色状态显示是黑色
        // 反馈开关状态
        Button4.text("已关锁");
        Button4.print("off");
        BLINKER_LOG ("4#锁已关锁off");
    } else if(state=="off"){
        digitalWrite(kg4, LOW);
        Button4.color("#000000");  //4#按钮没有按下时,app按键颜色状态显示是黑色
        // 反馈开关状态
        Button4.text("已关锁");
        Button4.print("off");
        BLINKER_LOG ("4#锁已关锁off");
    }
}

void setup() {
// ****初始化串口
  Serial.begin(115200);
  BLINKER_DEBUG.stream(Serial);
  //**** 初始化有LED的IO
  pinMode(kg1, OUTPUT);
  digitalWrite(kg1, LOW);              //io口初始化为低电平
  pinMode(kg2, OUTPUT);
  digitalWrite(kg2, LOW);              //io口初始化为低电平
  pinMode(kg3, OUTPUT);
  digitalWrite(kg3, LOW);              //io口初始化为低电平
  pinMode(kg4, OUTPUT);
  digitalWrite(kg4, LOW);              //io口初始化为低电平
  pinMode(x,INPUT);
  pinMode(D3,OUTPUT);
  // ****初始化blinker
  Blinker.begin(auth, ssid, pswd);
  
 //****app关联函数****
//app上操作必须的注册回调函数关联按键名“Button1-Button4”和判断程序“button1_callback"
  Button1.attach(button1_callback); 
  Button2.attach(button2_callback); 
  Button3.attach(button3_callback);
  Button4.attach(button4_callback); 

}

void loop() 
{
  Blinker.run();


if (digitalRead (x)==HIGH)   //读取x的电平是否为高
{      
 digitalWrite(D3,HIGH);  //设置D3口为高电平
 Button3.color("#FF0000");   //3#app按键颜色状态显示是红色
        Button3.text("已开锁");
        Button3.print("off");  //如设为on则该情况下不能开锁
        BLINKER_LOG ("3#锁已开锁on");  //串口打印
        Blinker.wechat("门锁已开");
}
     else
{      
digitalWrite(D3,LOW);
Button3.color("#000000"); //3#app按键颜色状态显示是黑色
       Button3.text("已关锁");
        Button3.print("off");
        BLINKER_LOG ("3#锁已关锁off");
}
}     

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注