|
本帖最后由 hulululu 于 2021-6-17 11:56 编辑
blinker用小爱同学语音控制,灯的状态语音能够控制,但是小爱会提示要控制的设备好像出问题了。
我搜了下说是切换阿里云,我试了,问题还是一样,能控制,但是小爱返回错误。
设备串口反馈- [11:49:47.532]收←◆[391985] MIOT Query codes: 0
- [392004] need set power state: off
复制代码
源码如下:
- #define LED_BUILTIN D4 //ESP-12E模块自身的LED,对应GPIO2,低电平亮
- //#define LED_BUILTIN 16 //nodemcu-esp8266开发板扩展的LED,对应GPIO16,低电平亮
-
- #define BLINKER_WIFI
- #define BLINKER_WITHOUT_SSL //blinker默认使用加密方式进行远程通信,但通信加密会消耗大量的RAM,如果您对通信安全性无要求,
- //可以添加宏BLINKER_WITHOUT_SSL用以获得更多可用RAM,BLINKER_WITHOUT_SSL目前仅可用于ESP8266,其他设备的RAM足以进行加密通信
- #define BLINKER_MIOT_LIGHT //定义为语音控制灯设备
- #include <Blinker.h> //使用第三方库
-
- bool oState = true;
- // 新建组件对象
- BlinkerButton Button1("btn-a1");//组件对象,要和APP组件中的“数据键名”一致
- // app 端按下按键即会执行该函数 回调函数
- void button1_callback(const String & state) {
-
- BLINKER_LOG("get button state: ", state);
- if (state=="on") {
- digitalWrite(LED_BUILTIN, LOW);
- // 反馈开关状态
- Button1.print("on");
- oState = true;
- } else if(state=="off"){
- digitalWrite(LED_BUILTIN, HIGH);
- // 反馈开关状态
- Button1.print("off");
- oState = false;
- }
- }
- //小爱电源类回调
- 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();
- oState = true;
- }
- else if (state == BLINKER_CMD_OFF) {
- digitalWrite(LED_BUILTIN, HIGH);
- BlinkerMIOT.powerState("off");
- BlinkerMIOT.print();
- oState = false;
- }
- }
- //小爱查询状态
- void miotQuery(int32_t queryCode)
- {
- BLINKER_LOG("MIOT Query codes: ", queryCode);
- BlinkerMIOT.powerState(oState ? "on" : "off");
- BlinkerMIOT.print();
- }
- void setup() {
- // 初始化串口,并开启调试信息
- Serial.begin(115200);
- BLINKER_DEBUG.stream(Serial); //串口打印调试信息
- // 初始化有LED的IO
- pinMode(LED_BUILTIN, OUTPUT); //LED_BUILTIN 宏就是开发板指示灯的io口
- digitalWrite(LED_BUILTIN, HIGH);
- // 初始化blinker
- Blinker.begin(auth, ssid, pswd);
- Button1.attach(button1_callback); //绑定按键执行回调函数
-
- BlinkerMIOT.attachPowerState(miotPowerState); //小爱电源控制
- BlinkerMIOT.attachQuery(miotQuery);
- }
- void loop() {
- Blinker.run(); /*每次运行都会将设备收到的数据进行一次解析。
- 在使用WiFi接入时,该语句也负责保持网络连接*/
- }
复制代码
这次换了阿里云过了几分钟又好了,可能是是同步之后要等几分钟。
|
|