基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(四)

4 接入小爱同学

在点灯科技官网可以看到,BLINKER连接小爱同学的操作主要有

点灯科技官网链接 https://www.diandeng.tech/doc/xiaoai
所以,我们的语音控制只能是“打开“与"关闭"的操作,或者是我们可根据其原来的模式控制来自定义成我们想要的操作,例如
将原 ” 电视模式 " 设置成固定的电视节目;
将原 ” 温馨 " 模式,设置成固定的空调温度,模式,风速、风向等;(空调一次红外信号可控制多种设置)
等等,自定义语音控制函数的操作即可实现自己想要的操作;、

4.2 代码

#define BLINKER_WIFI //定义wifi模块
#define BLINKER_MIOT_OUTLET  //定义为小爱同学插座
#include <Blinker.h>//包含Blinker头文件
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>

#define kIrled 2         //定义IO2
IRsend irsend(kIrled);   //定义IO2为红外发射数据端

bool oState = false;     //开关状态保存
char auth[] = "******";  //设备key(点灯科技软件,进入设备后,右上角可查看)
char ssid[] = "******";  //wifi 名称
char pswd[] = "******";  //wifi 密码
BlinkerButton  TV("tv");    //定义"开关"数据键名


void tv_callback(const String & state) {  //按下开关按键
    if (state == BLINKER_CMD_ON){    //如果按键按下后是打开
      BLINKER_LOG("打开电视");
      TV.print("on");                //记录是打开状态
      irsend.sendNEC(0x20DF10EF);    //发射电视开关键的红外数据(第二章获取的信号值)
      delay(20);
      oState = true;                 //开关状态保存,主要用于接入小爱
    }
    else if (state == BLINKER_CMD_OFF){    //如果按键按下后是关闭
      BLINKER_LOG("关闭电视");
      TV.print("off");               //记录是关闭状态
      irsend.sendNEC(0x20DF10EF);    //发射电视开关键的红外数据(第二章获取的信号值)
      delay(20);
      oState = false;                //开关状态保存,主要用于接入小爱
    }
}

void miotPowerState(const String & state)    //小爱语音开关控制进入函数
{ 
    if (state == BLINKER_CMD_ON){     //判断语音内容 为打开
      TV.print("on");          //点灯科技软件对应按键被打开
      BLINKER_LOG("电视打开");   
      BlinkerMIOT.powerState("on");   //反馈小爱同学按键状态已打开
      BlinkerMIOT.print();            //发送反馈
      irsend.sendNEC(0x20DF10EF);     //发射电视开关键的红外数据(同上)
      delay(20); 
      oState = true;                  //开关状态保存,用于小爱同学与BLINKER同步
    }
    else if (state == BLINKER_CMD_OFF){  //判断语音内容 为关闭
      TV.print("off");            //点灯科技软件对应按键被关闭
      BLINKER_LOG("电视关闭");
      BlinkerMIOT.powerState("off"); //反馈小爱同学按键状态已关闭
      BlinkerMIOT.print();           //发送反馈
      irsend.sendNEC(0x20DF10EF);    //发射电视开关键的红外数据(同上)
      delay(20); 
      oState = false;                //开关状态保存,用于小爱同学与BLINKER同步
    }
}

void miotQuery(int32_t queryCode)/小爱语音查询状态函数
{
    BlinkerMIOT.powerState(oState ? "on" : "off");  //可查询开关状态
    BlinkerMIOT.print();
}

void setup() {   //开始运行一次的函数
  irsend.begin();    //初始化红外发射模块
  Blinker.begin(auth, ssid, pswd);  //连接wifi,连接blniker
  TV.attach(tv_callback);           //把按键与函数对应起来
  BlinkerMIOT.attachPowerState(miotPowerState);   //语音指令与控制函数对应(开关指令)
  BlinkerMIOT.attachQuery(miotQuery);    //语音指令与控制函数对应(查询指令)
}

void loop() {  //不断循环运行的函数
      Blinker.run();    //blinker一直运行
}

4.3 结果

继续上传程序后,设备上电。
我们可以打开点灯科技软件,点进设备 -> 右上角 的设置 -> 将设备名改成自己想要的名字,如’'十二",便于之后呼叫小爱控制时比较顺口。

在米家APP上,我 的 -> 其他平台设备 -> 添加 ->找到点灯科技 - > 绑定账号 ,
然后同步一下设备,发现了 设备“十二 ”,然后退出;

接下来,我们就可以找小爱同学,控制设备了;
例如:
“ 打开十二 ” 或者 “ 十二关闭 ” 或者 “ 十二打开了吗 “

至此,小爱同学控制红外遥控设备功能已经实现了,

设置模式的,大家可以到上方点科技官网(接入小爱同学)查看内容,具体内容差不多,也挺简单的。小度、天猫精灵的官网也有,方法也差不多。点灯科技的Ardunio库确实做的很不错;

第一次写博客,表达能力不足的地方请见谅。

链接: 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(一).
链接: 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(二).
链接: 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(三).
链接: 基于ESP8266与Blinker(点灯科技平台)的智能遥控器设计(四).

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值