ESP8266 点灯科技 无线配网,支持 米 度 猫 语音控制

news/2024/11/28 7:30:40/

这是本人用了一周半的时候写的,出是现学现卖。发这个主要的目的就是为了方便新人,这个代码新人直接复制就可以用。  支持    百度小度     小米小爱    天猫精灵 的语音控制。

同时内置了无线配网。方便大家联不通的WIFI,  唯一不足就是 点灯的    blinker   char auth,也就是点灯的KEY要  一次烧录。

不废话  代码 如下。

#define BLINKER_WIFI

#define BLINKER_MIOT_LIGHT       //定义小米小爱灵库函数

#define BLINKER_DUEROS_LIGHT     //定义小度智能库函数

#define BLINKER_ALIGENIE_LIGHT   //定义天猫精灵库函数

#include <Blinker.h>

#include <WiFiManager.h>


 

char auth[] = "xxxxxxx";//点灯科技获取的KEY


 

int GPIO=0;//定义GPIO口用于控制继电器


 

#define BUTTON_1 "ButtonKey"//定义按钮

BlinkerButton Button1("switch");//括号里面的字符就是点灯APP 创建按钮的字符



 

// 按下按键即会执行该函数 点灯APP代码配置

void button1_callback(const String & state)

{

    BLINKER_LOG("get button state: ", state);

    digitalWrite(GPIO,!digitalRead(GPIO));

    Blinker.vibrate(); //使用Blinker.vibrate()即会让手机震动

    if (state == BLINKER_CMD_OFF) { //如果点灯APP接收到是关闭灯就设置GPIO口为高电平

        digitalWrite(GPIO, HIGH);

        BUILTIN_SWITCH.print("off"); //这个就是点灯APP的回调函数 其作用就是发送关闭状态使用APP按钮显示关闭状态

    }

    else if (state == BLINKER_CMD_ON) {//如果点灯APP接收到是开灯就设置GPIO口为低电平

        digitalWrite(GPIO, LOW);

        BUILTIN_SWITCH.print("on"); //这个就是点灯APP的回调函数 其作用就是发送 打开 状态使用APP按钮显示 打开 状态

       

    }

   

}



 

//Blinker定义小米小爱灵库函数

void miotPowerState(const String & state)

{

    BLINKER_LOG("need set power state: ",state);

    if (state == BLINKER_CMD_OFF) {//如果语音接收到是关闭灯就设置GPIO口为高电平

        digitalWrite(GPIO, HIGH);

        BlinkerMIOT.powerState("off");

        BlinkerMIOT.print();

    }

    else if (state == BLINKER_CMD_ON) {//如果语音接收到是开灯就设置GPIO口为低电平

        digitalWrite(GPIO, LOW);

        BlinkerMIOT.powerState("on");

        BlinkerMIOT.print();

    }

}

//Blinker小度智能接入代码

void duerPowerState(const String & state)

{

    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_OFF) {//如果语音接收到是关闭灯就设置GPIO口为高电平

        digitalWrite(GPIO, HIGH);

        BlinkerDuerOS.powerState("off");

        BlinkerDuerOS.print();

    }

    else if (state == BLINKER_CMD_ON) {//如果语音接收到是开灯就设置GPIO口为低电平

        digitalWrite(GPIO, LOW);

        BlinkerDuerOS.powerState("on");

        BlinkerDuerOS.print();

    }

}

//定义Blinker天猫精灵接口函数

void aligeniePowerState(const String & state)

{

    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_OFF) {//如果语音接收到是关闭灯就设置GPIO口为高电平

        digitalWrite(GPIO, HIGH);

        BlinkerAliGenie.powerState("off");

        BlinkerAliGenie.print();

    }

    else if (state == BLINKER_CMD_ON) {//如果语音接收到是开灯就设置GPIO口为低电平

        digitalWrite(GPIO, LOW);

        BlinkerAliGenie.powerState("on");

        BlinkerAliGenie.print();

    }

}


 

void setup()

{

     //首次无线自动配网代码 先以芯片名加MAC地址生成AP 配置SSID和密码 自动重启8266连接WIFI

     //优先读取存储的SSID和密码,当存的密码连接不上自动进入配网模式

    Serial.begin(115200); // 初始化串口

    WiFiManager wm;

      bool res;

    res = wm.autoConnect(); // 从芯片名称和MAC地址自动生成AP名称

   

    if(!res) {

        Serial.println("Failed to connect");

        ESP.restart(); //去掉注释可实现WiFi连接失败 自动清除配网信息

    }

    else {

        //如果你到了这里,你已经连接到了WiFi  

        Serial.println("connected...yes :)");

        Serial.println(WiFi.SSID());              // WiFi名称

        Serial.print("IP address:\t");

    }

    BLINKER_DEBUG.stream(Serial);

    //设置引脚模式并初始化引脚    

    pinMode(GPIO,OUTPUT);

    digitalWrite(GPIO,HIGH);//初始化,由于继电器是低电平触发。所以刚开始设为高电平 也就是所谓的上拉锁定 保证默认状态是高电平 1  

   

    // 初始化blinker

    Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str());

    Button1.attach(button1_callback);                         //当app中组件触发并发送到设备端时将触发该组件注册的回调函数

    BlinkerMIOT.attachPowerState(miotPowerState);             //这段代码一定要加,不加小爱同学控制不了,务必在回调函数中反馈该控制状态

    BlinkerDuerOS.attachPowerState(duerPowerState);          //这段代码一定要加,不加小度智能控制不了,务必在回调函数中反馈该控制状态

    BlinkerAliGenie.attachPowerState(aligeniePowerState);   //这段代码一定要加,不加天猫精灵控制不了,务必在回调函数中反馈该控制状态

   

}

   

   

void loop()

{

    Blinker.run();

}


http://www.ppmy.cn/news/824525.html

相关文章

EtherCat转Profinet网关模块连接西门子S7-1200 PLC

云南某现场控制器采用西门子1200系列PLC&#xff0c;远程IO站的模块来自安川伺服驱动器&#xff1b;所有的IO模块均挂在Profinet转Ethercat网关上&#xff1b;安川伺服驱动器在正常工作时支持EtherCAT协议&#xff0c;作为EtherCAT从站&#xff0c;监控系统西门子S7-1200系列PL…

西门子S7-1200与FUNUC机器人MODBUS TCP通信

PLC与机器人MB通信时&#xff0c;funuc作为服务器端&#xff0c;1200作为客户端。1200向funuc发送读写请求&#xff0c;funuc应答后PLC接收funuc的数据&#xff0c;实现数据的传递。 注意&#xff1a;Modbus不能同步进行通信,主机在同一时间内只能向一个从机发送请求&#xff…

天翎MyApps低代码平台案例分享—百川信保安服务综合管理系统

项目背景&#xff1a;百川信&#xff08;北京&#xff09;信息服务有限公司&#xff08;以下简称“百川信”&#xff09;成立于2014年&#xff0c;是一家专注于为安保行业提供高效、全场景、智能化协同办公管理与服务的科技公司。作为国内领先的数字安保解决方案与应用服务提供…

什么是程序员亲手制造的,你却找不到

博主&#xff1a;爱码叔 个人博客站点&#xff1a; www.icodebook.com 公众号&#xff1a;漫话软件设计 微博&#xff1a;程序员涛哥 专注于软件设计与架构、技术管理。擅长用通俗易懂的语言讲解技术。对技术管理工作有自己的一定见解。文章会第一时间首发在个站上&#xff0c;…

2.《你当像鸟飞往你的山》外面有一个世界:去读书吧,你会像鸟飞往你的山!...

2.《你当像鸟飞往你的山》外面有一个世界&#xff1a;去读书吧&#xff0c;你会像鸟飞往你的山&#xff01; 我们中国的老百姓&#xff0c;都晓得读书特别重要的道理。但是&#xff0c;一般都是家长这么觉得&#xff0c;很多小孩是不喜欢读书和上学的。 但是&#xff0c;当事情…

Python语句求一个正整数的全部约数

约数&#xff0c;又称因数。整数a除以整数b(b≠0) 除得的商正好是整数而没有余数&#xff0c;我们就说a能被b整除&#xff0c;或b能整除a。a称为b的倍数&#xff0c;b称为a的约数。 n int(input("请输入整数&#xff1a;")) i 1 list_yueshu [] while i < n:i…

Python中使列表嵌套变成一个列表

将子列表的所有元素提取出来&#xff0c;并生成一个包含所有元素且没有子列表的新列表&#xff1a; T [[1, 2], [3, 4, 5]] T sum(T, [])#结果 T [1, 2, 3, 4, 5]

高冷一字id_一个字的网名 高冷一字id

一个字的网名&#xff1f; 瑶、女、里尼、暖、品、艳、喜、韵、玉、九、年、寿、真、奎、段、智、耻、清、气、阴、古、吉、甲等&#xff0c;月、都、蜀、雍、思、奈、文、燕、毛、车、西、花、旦、洁、颓废、酒、景、廉、通、浅、盲、赞、宣、梦、悟、研、简猫、莫、蒽、诺、祭…