如果使用 ESP8266 接入 Blinker

* 请确保安装了 2.7.4 或更新的 ESP8266/Arduino 支持包。

* https://github.com/esp8266/Arduino/releases

库文件下载

https://github.com/blinker-iot/blinker-library/archive/master.zip

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET   //小爱同学配置电源类设备的包
#include <Blinker.h>

char auth[] = "f9********d3";//点灯科技的秘钥
char ssid[] = "CMCC";//你家的Wifi名字
char pswd[] = "*************";//你家的wifi密码

BlinkerButton BtnPow("btn-pow"); //定义点灯科技自定义按钮键名
int GPIO = 0; //继电器数字端口,8266只有数字端口0

//主程序
void setup(){   
  //初始化串口
  Serial.begin(115200);
  BLINKER_DEBUG.stream(Serial);
  //定义输出模式
  pinMode(GPIO, OUTPUT);
  digitalWrite(GPIO, HIGH);
  //初始化blinker
  Blinker.begin(auth, ssid, pswd);
  //blinker数据接收
  Blinker.attachData(dataRead);
  //按键回调
  BtnPow.attach(btnPowCallback);
  //小爱同学反馈信息,调用设备查询函数,查询设备开关机状态
  BlinkerMIOT.attachQuery(miotQuery);  
  //小爱同学反馈信息,小爱控制开关机操作
  BlinkerMIOT.attachPowerState(miotPowerState);
}

//主循环,循环运行blinker
void loop(){
  Blinker.run();
}

//自定义小爱同学电源类操作的回调函数
void miotPowerState(const String & state){    
  BLINKER_LOG("XiaoAi Set Power State: ", state);
  //开启
  if (state == BLINKER_CMD_ON){  
    digitalWrite(GPIO, LOW);
    //更新状态
    BlinkerMIOT.powerState("on");
    BlinkerMIOT.print();
  // 关闭
  }else if (state == BLINKER_CMD_OFF){ 
    digitalWrite(GPIO, HIGH);
    //更新状态
    BlinkerMIOT.powerState("off");
    BlinkerMIOT.print();
  }
}

//自定义小爱同学状态查询的回调函数
void miotQuery(int32_t queryCode){
  BLINKER_LOG("XiaoAi Query codes: ", queryCode);
  switch (queryCode){
    //小爱查询全部内容
    case BLINKER_CMD_QUERY_ALL_NUMBER :
      BLINKER_LOG("MIOT Query All");
      BlinkerMIOT.powerState(digitalRead(GPIO) ? "off" : "on");
      BlinkerMIOT.print();
      break;
    //小爱同学查询插座状态
    case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
      BLINKER_LOG("MIOT Query Power State");
      BlinkerMIOT.powerState(digitalRead(GPIO) ? "off" : "on");
      BlinkerMIOT.print();
      break;
    default :
      BlinkerMIOT.powerState(digitalRead(GPIO) ? "off" : "on");
      BlinkerMIOT.print();
      break;
  }
}

//如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data){
  //读取字符串,打印
  BLINKER_LOG("Blinker ReadString: ", data);
  //起刷新作用
  Blinker.vibrate();
  //获取到系统运行的时间
  uint32_t BlinkerTime = millis();
  //打印出来
  Blinker.print("millis", BlinkerTime);
}

//点灯App内控制按键触发
void btnPowCallback(const String & state){
  BLINKER_LOG("App Set Power State: ", state);
  digitalWrite(GPIO, !digitalRead(GPIO));
}

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐