使用Blinker+NodeMCU接入语音助手控制多路接口

发布时间:2024-11-21 06:32

如何使用语音控制电视:多数电视支持与智能音箱连接。 #生活技巧# #家电使用技巧# #电视调看攻略#

-本文适合于进阶开发,初学者对于如何使用NodeNCU连接WIFI,以及Blinker APP的使用可以移步Blinker官网,网络上也不乏此类教程。但是官方给出的教程以及网上流传的资料针对做一些小实验,过于平淡,关于如何运用此套系统解决实际中“智能家居”的控制问题没有太多介绍。

对于想利用“小米小爱”、“天猫精灵”、“百度小度”等语音设备控制多路开关设备,官方文档似乎并没有提出解决方案。为此我针对官方的程序进行了一定的升级优化,提出了一种能接入“小米小爱”控制多路开关设备解决方案。

如何利用语音助手控制多路开关设备

一、首先我给出控制一路开关设备的程序,便于大家对照。

```c #define BLINKER_PRINT Serial #define BLINKER_WIFI #define BLINKER_MIOT_LIGHT #include <Blinker.h> char auth[] = "******"; char ssid[] = "******"; char pswd[] = "******"; void miotPowerState(const String & state) { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { digitalWrite(LED_BUILTIN, LOW); BlinkerMIOT.powerState("on"); BlinkerMIOT.print(); } else if (state == BLINKER_CMD_OFF) { digitalWrite(LED_BUILTIN, HIGH); BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); } } void setup() { Serial.begin(115200); #if defined(BLINKER_PRINT) BLINKER_DEBUG.stream(BLINKER_PRINT); #endif pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); Blinker.begin(auth, ssid, pswd); BlinkerMIOT.attachPowerState(miotPowerState); } void loop() { Blinker.run(); }

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950

不难发现,此类算法只能控制一路开关接口。

二、那么如何控制多路开关接口呢?

#define BLINKER_WIFI #define BLINKER_MIOT_MULTI_OUTLET //设置为小爱多个插座的模式 #include <Blinker.h> char i; char auth[] = "******"; char ssid[] = "******"; char pswd[] = "******"; bool oState[5] = { false }; 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=D3; } if (state == BLINKER_CMD_ON) { digitalWrite(i, LOW); BlinkerMIOT.powerState("on", num); BlinkerMIOT.print(); oState[num] = true; } else if (state == BLINKER_CMD_OFF) { digitalWrite(i, HIGH); BlinkerMIOT.powerState("off", num); BlinkerMIOT.print(); oState[num] = false; if (num == 0) { for (uint8_t o_num = 0; o_num < 5; o_num++) { oState[o_num] = false; } } } } 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, HIGH); pinMode(D2, OUTPUT); digitalWrite(D2, HIGH); pinMode(D3, OUTPUT); digitalWrite(D3, HIGH); Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); BlinkerMIOT.attachPowerState(miotPowerState); BlinkerMIOT.attachQuery(miotQuery); } void loop() { Blinker.run(); }

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114

经过本人测试,此算法可以通过语音助手控制至少5路接口,大大提高了控制效率,让使用一块NodeMCU控制整个家庭的智能设备成为了可能!

APP截图如下:
在这里插入图片描述
训练小米小爱截图如下:
在这里插入图片描述
下期将介绍如何使用Blinker官方提供的APP控制多路接口,敬请期待!

详情请关注亿航创客官方抖音账号:EhangGroup

网址:使用Blinker+NodeMCU接入语音助手控制多路接口 https://www.yuejiaxmz.com/news/view/169485

相关内容

语音控制:基于ESP8266的DIY助手
语音助手:智能生活的入口
灵犀语音助手,解放双手用语音控制手机– Appchina应用汇
手机语音控制app下载排行榜
福特汽车上的新语音控制驾驶助手设备
智能家居很“听话”,亚马逊语音助手掀起语音控制风?
10 年使用的 2024 个最佳语音助手
十大语音助手app排行 手机语音助手哪个好 智能语音助手软件推荐
语音助手
语音控制好用还是鸡肋?

随便看看