error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2689|回复: 9

[已解答] error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT

[复制链接]
发表于 2021-3-19 17:36 | 显示全部楼层 |阅读模式
BLINKER_ESP_SMARTCONFIG的连接逻辑不太符合我的需求,想实现的逻辑是:自动连接保存的WiFi>如果失败>尝试使用程序预置的SSID和密钥连接 =>双击按键启动smartConfig

先放一下报错内容
  1. In file included from D:\Documents\Arduino\SmartConfig\SmartConfig.ino:3:0:
  2. d:\Documents\Arduino\libraries\blinker-library-master\src/Blinker.h:245:6: error: #error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT ! Please check your mode setting.
  3.      #error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT ! Please check your mode setting.
  4.       ^
  5. exit status 1
复制代码


个人粗鄙的看法是因为"define BLINKER_WIFI"跟"Blinker.begin(auth)"的原因,BLINKER_WIFI需要(auth, ssid, pswd)。但我已经通过其他方式完成了网络连接,并不需要ssid和pswd。不知道我的分析是否正确。
请大佬帮忙看看,感谢!


程序内容
  1. #define BLINKER_WIFI

  2. #include <Blinker.h>
  3. #include <DHT.h>
  4. #include <ESP8266WiFi.h>
  5. #include <OneButton.h>

  6. unsigned char num = 0;

  7. #define STASSID "iopewq"
  8. #define STAPSK  "12345678"


  9. char auth[] = "1*********b";
  10. const char* ssid     = STASSID;
  11. const char* password = STAPSK;

  12. OneButton button1(D3, true);

  13. BlinkerNumber HUMI("humi");
  14. BlinkerNumber TEMP("temp");

  15. #define DHTPIN D7
  16. #define LED_PIN D4  //板载LED
  17. #define DHTTYPE DHT11   // DHT 11

  18. DHT dht(DHTPIN, DHTTYPE);

  19. float humi_read = 0, temp_read = 0;

  20. void heartbeat()
  21. {
  22.     HUMI.print(humi_read);
  23.     TEMP.print(temp_read);
  24. }

  25. void deviceReset()
  26. {
  27.     // Reset device ,erase WiFi config.
  28.     Blinker.reset();
  29. }

  30. void dataRead(const String & data)
  31. {
  32.     BLINKER_LOG("Blinker readString: ", data);

  33.     Blinker.vibrate();
  34.    
  35.     uint32_t BlinkerTime = millis();
  36.    
  37.     Blinker.print("millis", BlinkerTime);
  38. }


  39. bool autoConfig()
  40. {
  41.   WiFi.begin();
  42.   for (int i = 0; i < 20; i++)
  43.   {
  44.     int wstatus = WiFi.status();
  45.     if (wstatus == WL_CONNECTED)
  46.     {
  47.       Serial.println("自动连接上一次配置成功");
  48.       //Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
  49.       //Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
  50.       WiFi.printDiag(Serial);
  51.       return true;
  52.       //break;
  53.     }
  54.     else
  55.     {
  56.       Serial.print("AutoConfig Waiting......");
  57.       Serial.println(wstatus);
  58.       delay(1000);
  59.     }
  60.   }
  61.   Serial.println("AutoConfig Faild!" );
  62.   return false;
  63.   //WiFi.printDiag(Serial);
  64. }

  65. bool defaultwifi()
  66. {
  67.   WiFi.mode(WIFI_STA);
  68.   WiFi.begin(ssid, password);
  69.   for (int i=0; 1 < 20; i++)
  70.   {
  71.     int wstatus = WiFi.status();
  72.     if (wstatus == WL_CONNECTED)
  73.     {
  74.       Serial.println("连接默认配置成功");
  75.       //Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
  76.       //Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
  77.       WiFi.printDiag(Serial);
  78.       return true;
  79.       //break;
  80.     }
  81.     else
  82.     {
  83.       Serial.print("使用默认配置连接中...");
  84.       Serial.println(wstatus);
  85.       delay(1000);
  86.     }
  87.   }
  88. }
  89. void smartConfig()
  90. {
  91.   WiFi.mode(WIFI_STA);
  92.   Serial.println("等待SmartConfig!");
  93.   WiFi.beginSmartConfig();          //开启SmartConfig服务
  94.   while(1)
  95.   {
  96.       Serial.print(".");
  97.       num++;
  98.       if(num >= 15)
  99.       {
  100.         Serial.print("\n");
  101.         num = 0;
  102.         }
  103.       delay(500);
  104.       if(WiFi.smartConfigDone())        //连接成功标志
  105.       {
  106.           Serial.println("SmartConfig成功!");
  107.           delay(2000);
  108.           Serial.println();
  109.           Serial.printf("SSID:%s\t\n",WiFi.SSID().c_str());       //显示WiFi SSID
  110.           Serial.printf("PASSWORD:%s\t\n",WiFi.psk().c_str());    //显示WiFi密码
  111.           delay(2000);
  112.           Serial.printf("IP address: ");
  113.           WiFi.setAutoConnect(true);
  114.           Serial.println(WiFi.localIP());
  115.           WiFi.printDiag(Serial);
  116.           break;
  117.       }
  118.       else                     //连接失败后的提示
  119.         Serial.println("SmartConfig,Please reboot ESP8266 and try agin!");
  120.    }  
  121. }

  122. void click1() {
  123.   Serial.println("按键1单击");
  124.   digitalWrite(LED_PIN, !digitalRead(LED_PIN));
  125. }

  126. void DoubleClick1() {
  127.   Serial.println("按键1双击");
  128.   smartConfig();
  129. } // DoubleClick1

  130. void longPress1() {
  131.   Serial.println("按键1长按");
  132.   deviceReset();
  133. } // longPress1


  134. void setup() {
  135.   // put your setup code here, to run once:
  136.   Serial.begin(115200);
  137.   Serial.println("Serial is ok!");
  138.   BLINKER_DEBUG.stream(Serial);
  139.   BLINKER_DEBUG.debugAll();  
  140.   pinMode(LED_PIN, OUTPUT);
  141.   digitalWrite(LED_PIN, LOW);
  142.   
  143.   Blinker.begin(auth);
  144.   Blinker.attachData(dataRead);
  145.   button1.attachClick(click1);//按键1单击
  146.   button1.attachDoubleClick(doubleclick1);//按键1双击
  147.   button1.attachDuringLongPress(longPress1);//按钮1长按
  148.   if (!autoConfig())
  149.   {
  150.     //Serial.println("Defaultconfig module");
  151.     defaultwifi();
  152.     if (!defaultwifi())
  153.     {
  154.       //Serial.println("smartConfig module");
  155.       smartConfig();
  156.     }
  157.   }
  158.   Blinker.attachHeartbeat(heartbeat);
  159.   dht.begin();
  160. }

  161. void loop() {
  162.   Blinker.run();
  163.   button1.tick();
  164.   
  165.   float h = dht.readHumidity();
  166.   float t = dht.readTemperature();

  167.   if (isnan(h) || isnan(t))
  168.   {
  169.       BLINKER_LOG("Failed to read from DHT sensor!");
  170.   }
  171.   else
  172.   {
  173.       BLINKER_LOG("Humidity: ", h, " %");
  174.       BLINKER_LOG("Temperature: ", t, " *C");
  175.       humi_read = h;
  176.       temp_read = t;
  177.   }

  178.   Blinker.delay(2000);
  179.   // put your main code here, to run repeatedly:
  180. }
复制代码


 楼主| 发表于 2021-3-19 21:35 | 显示全部楼层
XlinliY.Zhang 发表于 2021-3-19 21:18
本来就是联网超时20S自己进入的,只要20S内连得上WiFi自然进不去

  看来你对我的想法有所误解,我希望的是再没有我手动操作的情况下不要进入SmartConfig
上一次保存的WiFi>预置的SSID 密码 | 只有手动按键的情况下才允许进入SmartConfig

还是非常感谢你的回答
发表于 2021-3-19 18:32 | 显示全部楼层
esptouch直接用Blinker自带的不就行
 楼主| 发表于 2021-3-19 18:39 | 显示全部楼层
XlinliY.Zhang 发表于 2021-3-19 18:32
esptouch直接用Blinker自带的不就行

Blinker自带的第一次上电就会进入smartConfig,而我是希望他不要自动进入,而是通过手动按键才进入
发表于 2021-3-19 19:03 | 显示全部楼层
这个只有自己看懂源码修改了
 楼主| 发表于 2021-3-19 19:10 | 显示全部楼层
奈何col 发表于 2021-3-19 19:03
这个只有自己看懂源码修改了

这么说我的分析的原因是正确的么?

点评

没看懂您的分析,建议阅读源码  详情 回复 发表于 2021-3-19 19:13
发表于 2021-3-19 19:13 | 显示全部楼层
bitcat 发表于 2021-3-19 19:10
这么说我的分析的原因是正确的么?

没看懂您的分析,建议阅读源码
发表于 2021-3-19 21:18 | 显示全部楼层
bitcat 发表于 2021-3-19 18:39
Blinker自带的第一次上电就会进入smartConfig,而我是希望他不要自动进入,而是通过手动按键才进入 ...

本来就是联网超时20S自己进入的,只要20S内连得上WiFi自然进不去
 楼主| 发表于 2021-3-19 21:43 | 显示全部楼层
把BlinkerESPMQTT.h里面相关的内容修改或注释后已经成功了
发表于 2022-4-9 03:45 | 显示全部楼层
我也遇到了相同的问题,可以请教一下具体修改了啥吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 09:48 , Processed in 0.141060 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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