用ESP01S结合点灯科技,使用小爱同学和button控制时报错-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2322|回复: 5

[已解答] 用ESP01S结合点灯科技,使用小爱同学和button控制时报错

[复制链接]
发表于 2021-6-16 12:16 | 显示全部楼层 |阅读模式
本帖最后由 MMMMMCU 于 2021-6-16 12:47 编辑

ERROR: MQTT NOT ALIVE OR MSG LIMIT
单独使用按钮或者单独使用小爱同学控制开关都没问题,但是使用小爱同学控制开关的时候我有写代码同步手机上按钮的状态,
这个状态同步就时灵时不灵,主要就是开机灵一阵子,然后就不同步了,不灵的时候串口监视器会报错:ERROR: MQTT NOT ALIVE OR MSG LIMIT
截图.png
代码如下:
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#define DELAY 0
#define BUTTON_1 "btn-m46"

#include <Blinker.h>

char auth[] = "************";
char ssid[] = "*************";
char pswd[] = "************";

BlinkerButton Button1(BUTTON_1);

void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);

    if (state == BLINKER_CMD_BUTTON_TAP) {
        BLINKER_LOG("Button tap!");
        digitalWrite(DELAY, !digitalRead(DELAY));
    }
    else if (state == BLINKER_CMD_BUTTON_PRESSED) {
        BLINKER_LOG("Button pressed!");
    }
    else if (state == BLINKER_CMD_BUTTON_RELEASED) {
        BLINKER_LOG("Button released!");
        digitalWrite(DELAY, !digitalRead(DELAY));
    }
    else if (state == BLINKER_CMD_ON) {
        BLINKER_LOG("Toggle on!");
        digitalWrite(DELAY, LOW);
    }
    else if (state == BLINKER_CMD_OFF) {
        BLINKER_LOG("Toggle off!");
        digitalWrite(DELAY, HIGH);
    }
    else {
        BLINKER_LOG("Get user setting: ", state);
    }

    if (digitalRead(DELAY) == LOW) {
        Serial.print("LOW\n");
        Button1.color("#00FF00");
        Button1.text("ON");
        BlinkerMIOT.powerState("on");

        Button1.print();
        BlinkerMIOT.print();
    }
    else {
        Serial.print("HIGH\n");
        Button1.color("#000000");
        Button1.text("OFF");
        BlinkerMIOT.powerState("off");

        Button1.print();
        BlinkerMIOT.print();
    }
}

void miotPowerState(const String& state)
{
    BLINKER_LOG("need set power state: ", state);
    button1_callback(state);
}

void miotQuery(int32_t queryCode)
{
    BLINKER_LOG("MIOT Query codes: ", queryCode);

    switch (queryCode)
    {
    case BLINKER_CMD_QUERY_ALL_NUMBER:
        BLINKER_LOG("MIOT Query All");
        BlinkerMIOT.powerState(digitalRead(DELAY) == LOW ? "on" : "off");
        BlinkerMIOT.print();
        break;
    case BLINKER_CMD_QUERY_POWERSTATE_NUMBER:
        BLINKER_LOG("MIOT Query Power State");
        BlinkerMIOT.powerState(digitalRead(DELAY) == LOW ? "on" : "off");
        BlinkerMIOT.print();
        break;
    default:
        BlinkerMIOT.powerState(digitalRead(DELAY) == LOW ? "on" : "off");
        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(DELAY, OUTPUT);
    digitalWrite(DELAY, LOW);

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
    BlinkerMIOT.attachPowerState(miotPowerState);
    BlinkerMIOT.attachQuery(miotQuery);
}

void loop()
{
    Blinker.run();
}


 楼主| 发表于 2021-6-16 12:17 | 显示全部楼层
论坛大佬知道是怎么回事吗?
 楼主| 发表于 2021-6-16 12:20 | 显示全部楼层
还有当失效报错:ERROR: MQTT NOT ALIVE OR MSG LIMIT的时候,点灯app上的监视器就收不到ESP01S发过来的按钮状态信息
 楼主| 发表于 2021-6-16 12:46 | 显示全部楼层
0000000000000000
发表于 2021-6-16 14:04 | 显示全部楼层
详见板块主页置顶的常见问题QA
发表于 2021-9-15 11:03 | 显示全部楼层
你用的是arduino uno加上esp-01模块吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 11:47 , Processed in 0.099315 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表