【基于ESP8266、点灯科技集小爱同学5灯语音控制、本地按键、无线按键、离线语音的灯光控制】

集小爱同学语音控制、本地按键、无线按键、离线语音的灯光控制


电路图
在这里插入图片描述
代码

#define BLINKER_WIFI
#define BLINKER_MIOT_MULTI_OUTLET    //设置为小爱多个插座的模式
#include <Blinker.h>
#define BLINKER_PRINT Serial       //串口协议库
#define BLINKER_WITHOUT_SSL
char i;
char auth[] = "xxx";  //填上刚刚记下来的密钥
/*******直连(直连时取消注释)*******/  
char ssid[] = "526"; //填上你家WiFi名字
char pswd[] = "XXXX"; //填上你家WiFi密码码
//定义本地开关信号
#define KG_1 5         //定义开关1信号接入GPIO5,D1         /控制D3  io3   0
#define KG_2 4         //定义开关2信号接入GPIO4,D2         /控制D5  io2   14
#define KG_3 2         //定义开关3信号接入GPIO2,D4         /控制D6  io1    12
#define KG_4 3          //定义开关4信号接入GPIO3,D9  RX  /控制D7    24    13  (GPIO15/D8持续低电平,后更改为GPIO3/RX接口)
#define KG_5 1         //定义开关3信号接入GPIO1 D10         /控制D8     23    15
bool oState[6] = { false };
//io口定义
int sj=1000;//延迟时间
int kg11=D0;
int kg3=D3;
int kg5=D5;
int kg6=D6;
int kg7=D7;
int kg8=D8;
//****新建组件对象****
BlinkerButton Button1("btn-kg1"); //设置app按键的键名
BlinkerButton Button3("btn-kg3"); //设置app按键的键名
BlinkerButton Button5("btn-kg5"); //设置app按键的键名
BlinkerButton Button6("btn-kg6"); //设置app按键的键名
BlinkerButton Button7("btn-kg7"); //设置app按键的键名
BlinkerButton Button8("btn-kg8"); //设置app按键的键名
BlinkerButton Button11("btn-kg11");  //设置app按键的键名
//反馈继电器状态函数
void RelayState(int num)
{switch(num){case 1:   //插座插孔一状态if(digitalRead(kg7)==HIGH){Button7.color("#FF0000");   //设置app按键是纯黄色,16进制颜色码Button7.text("插座1开");          //设置app按键注释“开”Button7.print("on");oState[1] = true;}else if(digitalRead(kg7)==LOW){Button7.text("插座1关");          //设置app按键注释“关”Button7.print("off");oState[1] = false;}break;case  2:if(digitalRead(kg6)==HIGH){Button6.color("#FF0000");   //设置app按键是纯黄色,16进制颜色码Button6.text("插座2开");          //设置app按键注释“开”Button6.print("on");oState[2] = true;}else if(digitalRead(kg6)==LOW){Button6.text("插座2关");          //设置app按键注释“关”Button6.print("off");oState[2] = false;}break;case  3:if(digitalRead(kg5)==HIGH){Button5.color("#FF0000");   //设置app按键是纯黄色,16进制颜色码Button5.text("插座3开");          //设置app按键注释“开”Button5.print("on");oState[3] = true;}else if(digitalRead(kg5)==LOW){Button5.text("插座3关");          //设置app按键注释“关”Button5.print("off");oState[3] = false;}break;case  4:if(digitalRead(kg11)==HIGH){Button11.color("#FF0000");   //设置app按键是纯黄色,16进制颜色码Button11.text("插座4开");          //设置app按键注释“开”Button11.print("on");oState[4] = true;}else if(digitalRead(kg11)==LOW){Button11.text("插座4关");          //设置app按键注释“关”Button11.print("off");oState[4] = false;}break;case  5:if(digitalRead(kg3)==HIGH){Button3.color("#FF0000");   //设置app按键是纯黄色,16进制颜色码Button3.text("插座4开");          //设置app按键注释“开”Button3.print("on");oState[5] = true;}else if(digitalRead(kg3)==LOW){Button3.text("插座4关");          //设置app按键注释“关”Button3.print("off");oState[5] = false;}break;default:break;}
}void miotPowerState(const String & state, uint8_t num)  
{BLINKER_LOG("need set outlet: ", num, ", power state: ", state); i=0;   //初始化  重要!!if(num==1){i=D7;         }else if(num==2){i=D6;}else if(num==3){i=D5;}else if(num==4){i=D0;}else if(num==5){i=D3;}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 heartbeat(){for(int i=0;i<5;i++){RelayState(i);}}//本地开关控制继电器程序void bdms(){if(digitalRead(KG_1)==LOW){digitalWrite(kg3, !digitalRead(kg3));//反馈继电器1状态RelayState(1);    //调用继电器反馈程序Blinker.delay(1000);    //必须加延时,否则灯一直切换状态}if(digitalRead(KG_2)==LOW){digitalWrite(kg5, !digitalRead(kg5));RelayState(2);    //调用继电器反馈程序Blinker.delay(1000); }if(digitalRead(KG_3)==LOW){digitalWrite(kg6, !digitalRead(kg6));RelayState(3);    //调用继电器反馈程序Blinker.delay(1000);}if(digitalRead(KG_4)==LOW){digitalWrite(kg7, !digitalRead(kg7));RelayState(4);    //调用继电器反馈程序Blinker.delay(1000);}if(digitalRead(KG_5)==LOW){digitalWrite(kg8, !digitalRead(kg8));RelayState(5);    //调用继电器反馈程序Blinker.delay(1000);}}void button1_callback(const String & state) {BLINKER_LOG("ALL#灯,状态: ", state);if (state=="on") {digitalWrite(kg3, HIGH );digitalWrite(kg5, HIGH );digitalWrite(kg6, HIGH );digitalWrite(kg7, HIGH );digitalWrite(kg8, HIGH );digitalWrite(kg11, HIGH );Button1.color("#FF0000");   //3#按钮按下时,app按键颜色状态显示是红色// 反馈开关状态Button1.text("已开灯");Button1.print("on");BLINKER_LOG ("ALL#灯已开灯on");  //串口打印} else if(state=="off"){digitalWrite(kg3, LOW);digitalWrite(kg5, LOW);digitalWrite(kg6, LOW);digitalWrite(kg7, LOW);digitalWrite(kg8, LOW);digitalWrite(kg11, LOW);// 反馈开关状态Button1.text("已关灯");Button1.print("off");BLINKER_LOG ("ALL#灯已关灯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 button8_callback(const String & state) {BLINKER_LOG("1#灯,状态: ", state);if (state=="on") {digitalWrite(kg8, HIGH);Button8.color("#FF0000");   //3#按钮按下时,app按键颜色状态显示是红色// 反馈开关状态Button8.text("已开灯");Button8.print("on");BLINKER_LOG ("1#灯已开灯on");  //串口打印} else if(state=="off"){digitalWrite(kg8, LOW);// 反馈开关状态Button8.text("已关灯");Button8.print("off");BLINKER_LOG ("3#灯已关灯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 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);BLINKER_DEBUG.debugAll();pinMode(D3, OUTPUT);pinMode(D5, OUTPUT);pinMode(D6, OUTPUT);pinMode(D7, OUTPUT);pinMode(D8, OUTPUT);pinMode(D8, OUTPUT);pinMode(D0, OUTPUT);digitalWrite(D3,  LOW);digitalWrite(D5,  LOW);digitalWrite(D6, LOW);digitalWrite(D7,  LOW);digitalWrite(D8,  LOW);digitalWrite(D0,  LOW);//初始化本地按键状态pinMode(KG_1, INPUT_PULLUP);   //本地开关输入上拉pinMode(KG_2, INPUT_PULLUP);   //本地开关输入上拉pinMode(KG_3, INPUT_PULLUP);   //本地开关输入上拉pinMode(KG_4, INPUT_PULLUP);   //本地开关输入上拉pinMode(KG_5, INPUT_PULLUP);   //本地开关输入上拉
/******** 直连(直连时 取消注释) ******/    Blinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);
/**************/    BlinkerMIOT.attachPowerState(miotPowerState);BlinkerMIOT.attachQuery(miotQuery);//****app关联函数****
//app上操作必须的注册回调函数关联按键名“Button1-Button4”和判断程序“button1_callback"Button1.attach(button1_callback); Button3.attach(button3_callback); Button5.attach(button5_callback); Button6.attach(button6_callback); Button7.attach(button7_callback);Button8.attach(button8_callback);Button11.attach(button11_callback);
}
void loop()
{bdms();           //本地开关模式Blinker.run();}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54212.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Blinker接入小爱同学做智能家居RGB灯

如果你有一部非小米手机&#xff0c;怎样连入米家&#xff0c;使用小爱同学语音控制家电呢 此文相关看不懂的知识点 1、esp8266无法下载程序&#xff1a;参考我的另外一篇文章 链接 2、非小米手机小爱同学语音接入 链接 实现功能 小爱同学语音控制客厅灯开关、模式切换、亮度…

chatgpt赋能python:用Python制作游戏

用Python制作游戏 游戏开发一直是计算机编程中最激动人心的领域之一。Python作为一种流行的编程语言&#xff0c;也可以用来制作游戏。在本文中&#xff0c;我们将介绍如何用Python制作游戏&#xff0c;并探讨用Python进行游戏开发的优点和局限性。 游戏开发的优点 Python作…

chatgpt赋能python:用Python编写游戏

用Python编写游戏 Python是一种用于编写各种应用程序的高级编程语言&#xff0c;它易于阅读和编写&#xff0c;并且在不同的操作系统中都具有广泛的使用。使用Python编写游戏可以使游戏开发人员轻松和快速地创建相当复杂的游戏&#xff0c;同时大幅度增强了游戏体验。 为什么…

chatgpt赋能python:Python怎么做3D游戏?

Python怎么做3D游戏? 随着游戏开发技术的不断更新和改进&#xff0c;Python也被越来越多的游戏开发者和爱好者所使用。事实上&#xff0c;Python可以进行3D游戏开发&#xff0c;并且其简单易学、离散记录和良好的结构化编程可以为游戏开发带来诸多便利。因此&#xff0c;本篇…

chatgpt赋能python:如何利用Python做游戏

如何利用Python做游戏 Python是一种流行的编程语言&#xff0c;可以用来做许多不同的事情&#xff0c;包括编写游戏。在这篇文章中&#xff0c;我们将讨论如何使用Python来制作游戏&#xff0c;并介绍如何优化您的游戏以提高搜索引擎排名。 Python中的游戏编程 Python不是专…

AIGC:OpenAI官方版AutoGPT简介

文章目录 [toc]简介一、聊天界面直接加购物车、发推特布洛克曼&#xff1a;是时候了解AGI了 简介 OpenAI官方AutoGPT&#xff0c;要来了&#xff01;就在AutoGPT项目破10万Star之际&#xff0c;OpenAI也放出重磅炸弹&#xff0c;由联合创始人格雷格布洛克曼&#xff08;Greg B…

销售人员必看的书推荐

一本好的有关销售技巧的书籍可以给销售人员指明方向&#xff0c;找到销售的精髓和正确的销售方法。那么怎样才算是一本好的销售书籍呢&#xff1f;都有哪些好的有关销售技巧的书籍呢&#xff1f;笔者凭借多年的销售经验和阅读经历选出了以下7本经典销售书籍&#xff0c;值得每个…

适合企业老板看的书推荐

老板就是一家企业的灵魂与精神领袖&#xff0c;老板的个人素质和能力大小直接决定一家企业最终能够走多远。 要想在这个变化莫测的竞争环境中拔得头筹&#xff0c;企业老板必须要通过大量的阅读来不断提升自己的管理技能与个人职业素养。商战宛如逆水行舟&#xff0c;不进则退…

经商必看的10本书籍推荐

1、《经理人参阅&#xff1a;商业模式与商业思维》 这本书被誉为商业模式的圣经。该书通过可视化工具&#xff0c;包括商业模式画布和价值主张画布&#xff0c;帮助企业家、创业者和经理人创造创新的商业模式。本书通过图表、图像和实例&#xff0c;详细讲解了商业模式的构建方…

投资类书籍推荐书单

这里分享一个我的投资类书籍的书单。书单不长&#xff0c;不过都是挺有特色、非常值得一读的书。大家有好的书籍也欢迎推荐&#xff0c;并简单写一下推荐理由哦。 其中有的书比较枯燥&#xff0c;有的相对容易读。 关于资产配置 《傻瓜式投资》 飞泥翱空 《不落俗套的成功》…

推荐给创业者看的书

如果你是一名创业者&#xff0c;或者准备创业的人&#xff0c;执行力很重要&#xff0c;下面我推荐几本创业者看的书&#xff0c;希望给大家带来帮助。 精益创业 《精益创业》是创业管理领域的重磅之作&#xff0c;也绝对有潜质经受时间的考验&#xff0c;成为创业管理的经典图…

值得一看的创业书籍推荐

行业相关&#xff0c;这些年亲自读了不少创业书籍。 而要说哪本创业书籍最值得推荐&#xff0c;个人认为还是12Reads的《创业必读12篇》这本。 P.S.很多小伙伴向笔者抱怨说这本书买不到&#xff0c;我只想说请善用搜索引擎&#xff0c;这本书只能从其官网获得。对于一名创业者…

创业方面的书籍推荐:成功创业秘诀都在这本书里了!

每一天&#xff0c;都有不计其数的人投身创业大潮​。 在这一过程中&#xff0c;有些人最终将获得别人不可企及的成功&#xff0c;但更多的人则是饱尝失败的痛苦与打击&#xff0c;暗自躲在角落里&#xff0c;被整个世界所遗忘。 同样都是创业&#xff0c;同样站在同一个起跑…

创业方面的书籍推荐:《经理人参阅:创业管理学》

创业、经商需要看什么书&#xff1f;有哪些创业书籍值得推荐&#xff1f; 作为一名草根创业者&#xff0c;一路走来跌跌撞撞、踩过不少坑也走过很多弯路&#xff0c;今天想给大家推荐的这本创业书籍叫《经理人参阅&#xff1a;创业管理学》。 需要说明的是&#xff0c;这本书跟…

关于企业战略管理的书,这些经典教材值得推荐

本期给大家推荐的这些战略管理书籍都是经典中的经典&#xff0c;学企业战略&#xff0c;看这些书足矣&#xff01; 1.《战略管理必读12篇》 在全球化、数字化&#xff0c;而且多变化的商业环境中&#xff0c;企业想要永续经营&#xff0c;除了必须跟上&#xff0c;甚至超越快速…

创业书籍推荐,这些书经商必读

对于许多想要创业的人来说&#xff0c;成功的关键在于掌握正确的知识和技能。虽然创业的实际经验是无可替代的&#xff0c;但是通过阅读经验丰富的人士写的书籍&#xff0c;可以提前了解创业、经商过程中可能遇到的挑战&#xff0c;并为成功奠定基础。在这篇文章中&#xff0c;…

关于创新创业的书,看这两本就够了

创新与创业之间有着千丝万缕的紧密联系。创新是创业的基础&#xff0c;创业并非拿来主义&#xff0c;没有创新就难谈创业&#xff1b;而没有创业的大胆创举&#xff0c;创新也将无处安放。 ​然而你该如何创新&#xff1f;创新的方法有哪些&#xff1f;创业维艰&#xff0c;你…

创业书籍推荐,这本书最经典!

创业类的书籍有不少&#xff0c;今天要给大家推荐的这本《创业必读12篇》作为其中比较有代表性的经典著作&#xff0c;在本人看来是最适合创业者看的书。 虽然这本书目前仅能从官网购得&#xff0c;并且价格要高于其他同类创业书籍&#xff0c;但这些都丝毫不能阻挡我想要将这本…

今日创见|2022创业者必读的七本好书推荐

如今的企业经济都是关于速度、增长和保持不破产。随着消费者行为、数字化技术和全球化发生翻天覆地的变化&#xff0c;不断创新和挑战现状比以往任何时候都更为重要。我们做了一份企业家“必读”清单&#xff0c;其中包括最近几年发布的一些最新、实用和鼓舞人心的建议。我们的…

经商必读的创业类书籍推荐

创业之路虽然坎坷&#xff0c;但创业者也不要忘了适时给自己充电的重要性。 没有人能随随便便创业成功&#xff0c;80%的人都看不到明天的日出。成功的创业者总是懂的自我提升的重要性&#xff0c;无论有多忙&#xff0c;他们都能找时间静下心来好好读一本专业书籍或是听一堂课…