使用Blinker+NodeMCU接入语音助手控制多路接口 您所在的位置:网站首页 华为语音模块 使用Blinker+NodeMCU接入语音助手控制多路接口

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

2024-07-10 06:18| 来源: 网络整理| 查看: 265

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

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

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

```c #define BLINKER_PRINT Serial #define BLINKER_WIFI #define BLINKER_MIOT_LIGHT #include 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(); }

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

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

#define BLINKER_WIFI #define BLINKER_MIOT_MULTI_OUTLET //设置为小爱多个插座的模式 #include 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 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(); }

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

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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有