ESP8266+点灯科技+小爱同学
小白教程
小爱同学语音可控制5灯,点灯科技可控11灯
关注西瓜视频——小灏搞搞阵实验室,有小白教程
话不多说直接上码
#define BLINKER_WIFI
#define BLINKER_MIOT_MULTI_OUTLET //设置为小爱多个插座的模式
#include <Blinker.h>
char i;
char auth[] = "93ddf3f2XXX"; //填上刚刚记下来的密钥
char ssid[] = "xxxX"; //填上你家WiFi名字
char pswd[] = "LGH12"; //填上你家WiFi密码
bool oState[11] = { false };
//io口定义
int kg1=D1;
int kg2=D2;
int kg3=D3;
int kg4=D4;
int kg5=D5;
int kg6=D6;
int kg7=D7;
int kg8=D8;
int kg9=D9;
int kg10=D10;
int kg11=D0;
int sj=1000;//延迟时间
//****新建组件对象****
BlinkerButton Button1("btn-kg1"); //设置app按键的键名
BlinkerButton Button2("btn-kg2"); //设置app按键的
BlinkerButton Button3("btn-kg3"); //设置app按键的键名
BlinkerButton Button4("btn-kg4"); //设置app按键的键名
BlinkerButton Button5("btn-kg5"); //设置app按键的键名
BlinkerButton Button6("btn-kg6"); //设置app按键的键名
BlinkerButton Button7("btn-kg7"); //设置app按键的键名
BlinkerButton Button8("btn-kg8"); //设置app按键的键名
BlinkerButton Button9("btn-kg9"); //设置app按键的键名
BlinkerButton Button10("btn-kg10"); //设置app按键的键名
BlinkerButton Button11("btn-kg11"); //设置app按键的键名
void miotPowerState(const String & state, uint8_t num)
{
BLINKER_LOG("need set outlet: ", num, ", power state: ", state);
i=0; //初始化 重要!!
if(num==1)
{
i=D1;
}
else if(num==2)
{
i=D2;
}
else if(num==3)
{
i=D5;
}
else if(num==4)
{
i=D4;
}
else if(num==5)
{
i=D3;
}
else if(num==6)
{
i=D6;
}
else if(num==7)
{
i=D7;
}
else if(num==8)
{
i=D8;
}
else if(num==9)
{
i=D9;
}
else if(num==10)
{
i=D10;
}
else if(num==11)
{
i=D0;
}
if (state == BLINKER_CMD_ON)
{
digitalWrite(i, HIGH);
BlinkerMIOT.powerState("on", num);
BlinkerMIOT.print();
oState[num] = true;
}
else if (state == BLINKER_CMD_OFF)
{
digitalWrite(i, LOW);
BlinkerMIOT.powerState("off", num);
BlinkerMIOT.print();
oState[num] = false;
if (num == 0)
{
for (uint8_t o_num = 0; o_num <12; o_num++)
{
oState[o_num] = false;
}
}
}
}
void button1_callback(const String & state) {
BLINKER_LOG("1#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg1, HIGH);
Button1.color("#FF0000"); //2#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button1.text("已开灯");
Button1.print("on");
BLINKER_LOG ("1#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg1, LOW);
// 反馈开关状态
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("#FF0000"); //2#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button2.text("已开灯");
Button2.print("on");
BLINKER_LOG ("2#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg2, LOW);
// 反馈开关状态
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("#FF0000"); //3#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button3.text("已开灯");
Button3.print("on");
BLINKER_LOG ("3#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg3, LOW);
// 反馈开关状态
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("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button4.text("已开灯");
Button4.print("on");
BLINKER_LOG ("4#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg4, LOW);
// 反馈开关状态
Button4.text("已关灯");
Button4.print("off");
BLINKER_LOG ("4#灯已关灯off");
}
}
void button5_callback(const String & state) {
BLINKER_LOG("5#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg5, HIGH);
Button5.color("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button5.text("已开灯");
Button5.print("on");
BLINKER_LOG ("5#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg5, LOW);
// 反馈开关状态
Button5.text("已关灯");
Button5.print("off");
BLINKER_LOG ("5#灯已关灯off");
}
}
void button6_callback(const String & state) {
BLINKER_LOG("6#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg6, HIGH);
Button6.color("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button6.text("已开灯");
Button6.print("on");
BLINKER_LOG ("6#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg6, LOW);
// 反馈开关状态
Button6.text("已关灯");
Button6.print("off");
BLINKER_LOG ("6#灯已关灯off");
}
}
void button7_callback(const String & state) {
BLINKER_LOG("7#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg7, HIGH);
Button7.color("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button7.text("已开灯");
Button7.print("on");
BLINKER_LOG ("7#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg7, LOW);
// 反馈开关状态
Button7.text("已关灯");
Button7.print("off");
BLINKER_LOG ("7#灯已关灯off");
}
}
void button8_callback(const String & state) {
BLINKER_LOG("8#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg8, HIGH);
Button8.color("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button8.text("已开灯");
Button8.print("on");
BLINKER_LOG ("8#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg8, LOW);
// 反馈开关状态
Button8.text("已关灯");
Button8.print("off");
BLINKER_LOG ("8#灯已关灯off");
}
}
void button9_callback(const String & state) {
BLINKER_LOG("9#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg9, HIGH);
Button9.color("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button9.text("已开灯");
Button9.print("on");
BLINKER_LOG ("7#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg9, LOW);
// 反馈开关状态
Button9.text("已关灯");
Button9.print("off");
BLINKER_LOG ("7#灯已关灯off");
}
}
void button10_callback(const String & state) {
BLINKER_LOG("10#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg10, HIGH);
Button10.color("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button10.text("已开灯");
Button10.print("on");
BLINKER_LOG ("10#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg10, LOW);
// 反馈开关状态
Button10.text("已关灯");
Button10.print("off");
BLINKER_LOG ("10#灯已关灯off");
}
}
void button11_callback(const String & state) {
BLINKER_LOG("11#灯,状态: ", state);
if (state=="on") {
digitalWrite(kg11, HIGH);
Button11.color("#FF0000"); //4#按钮按下时,app按键颜色状态显示是红色
// 反馈开关状态
Button11.text("已开灯");
Button11.print("on");
BLINKER_LOG ("11#灯已开灯on"); //串口打印
} else if(state=="off"){
digitalWrite(kg11, LOW);
// 反馈开关状态
Button11.text("已关灯");
Button11.print("off");
BLINKER_LOG ("11#灯已关灯off");
}
}
void miotQuery(int32_t queryCode, uint8_t num)
{
BLINKER_LOG("AliGenie Query outlet: ", num,", codes: ", queryCode);
switch (queryCode)
{
case BLINKER_CMD_QUERY_ALL_NUMBER :
BLINKER_LOG("MIOT Query All");
BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
BlinkerMIOT.print();
break;
case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
BLINKER_LOG("MIOT Query Power State");
BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
BlinkerMIOT.print();
break;
default :
BlinkerMIOT.powerState(oState[num] ? "on" : "off", num);
BlinkerMIOT.print();
break;
}
}
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
Blinker.vibrate();
uint32_t BlinkerTime = millis();
Blinker.print("millis", BlinkerTime);
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
pinMode(D1, OUTPUT);
digitalWrite(D1, LOW);
pinMode(D2, OUTPUT);
digitalWrite(D2, LOW);
pinMode(D3, OUTPUT);
digitalWrite(D3, LOW);
pinMode(D4, OUTPUT);
digitalWrite(D4, LOW);
pinMode(D5, OUTPUT);
digitalWrite(D5, LOW);
pinMode(D6, OUTPUT);
digitalWrite(D6, LOW);
pinMode(D7, OUTPUT);
digitalWrite(D7, LOW);
pinMode(D8, OUTPUT);
digitalWrite(D8, LOW);
pinMode(D9, OUTPUT);
digitalWrite(D9, LOW);
pinMode(D10, OUTPUT);
digitalWrite(D10, LOW);
pinMode(D0, OUTPUT);
digitalWrite(D0, LOW);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
BlinkerMIOT.attachPowerState(miotPowerState);
BlinkerMIOT.attachQuery(miotQuery);
//****app关联函数****
//app上操作必须的注册回调函数关联按键名“Button1-Button4”和判断程序“button1_callback"
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Button3.attach(button3_callback);
Button4.attach(button4_callback);
Button5.attach(button5_callback);
Button6.attach(button6_callback);
Button7.attach(button7_callback);
Button8.attach(button8_callback);
Button9.attach(button9_callback);
Button10.attach(button10_callback);
Button11.attach(button11_callback);
}
void loop()
{
Blinker.run();
}