Arduino使用ESP8266+点灯科技+小爱音响实现语音控制开关
·
如果使用 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));
}
更多推荐
已为社区贡献5条内容
所有评论(0)