WiFiManager: I am getting errors while compiling basic example.

Basic Infos

Hardware

WiFimanager Branch/Release: Master

Esp32:

Hardware: NodeMCUEsp32

Core Version: using latest master from git arduino-esp32

Description

Problem description"

I am getting errors while compiling basic example.

D:\Arduino\libraries\WiFiManager\WiFiManager.cpp: In member function 'void WiFiManager::WiFiEvent(arduino_event_id_t, system_event_info_t)':
D:\Arduino\libraries\WiFiManager\WiFiManager.cpp:3505:17: warning: comparison between 'enum arduino_event_id_t' and 'enum system_event_id_t' [-Wenum-compare]
     if(event == SYSTEM_EVENT_STA_DISCONNECTED){
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:\Arduino\libraries\WiFiManager\WiFiManager.cpp:3522:20: warning: comparison between 'enum arduino_event_id_t' and 'enum system_event_id_t' [-Wenum-compare]
   else if(event == SYSTEM_EVENT_SCAN_DONE){
                    ^~~~~~~~~~~~~~~~~~~~~~
D:\Arduino\libraries\WiFiManager\WiFiManager.cpp: In member function 'void WiFiManager::WiFi_autoReconnect()':
D:\Arduino\libraries\WiFiManager\WiFiManager.cpp:3539:79: error: no matching function for call to 'WiFiClass::onEvent(std::_Bind_helper<false, void (WiFiManager::*)(arduino_event_id_t, system_event_info_t), WiFiManager*, const std::_Placeholder<1>&, const std::_Placeholder<2>&>::type)'
       wm_event_id = WiFi.onEvent(std::bind(&WiFiManager::WiFiEvent,this,_1,_2));
                                                                               ^
In file included from D:\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiSTA.h:28,
                 from D:\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFi.h:32,
                 from D:\Arduino\libraries\WiFiManager\WiFiManager.h:65,
                 from D:\Arduino\libraries\WiFiManager\WiFiManager.cpp:13:
D:\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiGeneric.h:145:21: note: candidate: 'wifi_event_id_t WiFiGenericClass::onEvent(WiFiEventCb, arduino_event_id_t)'
     wifi_event_id_t onEvent(WiFiEventCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
                     ^~~~~~~
D:\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiGeneric.h:145:21: note:   no known conversion for argument 1 from 'std::_Bind_helper<false, void (WiFiManager::*)(arduino_event_id_t, system_event_info_t), WiFiManager*, const std::_Placeholder<1>&, const std::_Placeholder<2>&>::type' {aka 'std::_Bind<void (WiFiManager::*(WiFiManager*, std::_Placeholder<1>, std::_Placeholder<2>))(arduino_event_id_t, system_event_info_t)>'} to 'WiFiEventCb' {aka 'void (*)(arduino_event_id_t)'}
D:\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiGeneric.h:146:21: note: candidate: 'wifi_event_id_t WiFiGenericClass::onEvent(WiFiEventFuncCb, arduino_event_id_t)'
     wifi_event_id_t onEvent(WiFiEventFuncCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
                     ^~~~~~~
D:\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiGeneric.h:146:21: note:   no known conversion for argument 1 from 'std::_Bind_helper<false, void (WiFiManager::*)(arduino_event_id_t, system_event_info_t), WiFiManager*, const std::_Placeholder<1>&, const std::_Placeholder<2>&>::type' {aka 'std::_Bind<void (WiFiManager::*(WiFiManager*, std::_Placeholder<1>, std::_Placeholder<2>))(arduino_event_id_t, system_event_info_t)>'} to 'WiFiEventFuncCb' {aka 'std::function<void(arduino_event_id_t, arduino_event_info_t)>'}
D:\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiGeneric.h:147:21: note: candidate: 'wifi_event_id_t WiFiGenericClass::onEvent(WiFiEventSysCb, arduino_event_id_t)'
     wifi_event_id_t onEvent(WiFiEventSysCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
                     ^~~~~~~
D:\Arduino\hardware\espressif\esp32\libraries\WiFi\src/WiFiGeneric.h:147:21: note:   no known conversion for argument 1 from 'std::_Bind_helper<false, void (WiFiManager::*)(arduino_event_id_t, system_event_info_t), WiFiManager*, const std::_Placeholder<1>&, const std::_Placeholder<2>&>::type' {aka 'std::_Bind<void (WiFiManager::*(WiFiManager*, std::_Placeholder<1>, std::_Placeholder<2>))(arduino_event_id_t, system_event_info_t)>'} to 'WiFiEventSysCb' {aka 'void (*)(arduino_event_t*)'}
Multiple libraries were found for "WiFi.h"

Settings in IDE

Module: NodeMcuESP32

Sketch

#BEGIN
#include <WiFiManager.h> // https://github.com/tzapu/WiFiManager

void setup() {
    WiFi.mode(WIFI_STA); 
    Serial.begin(115200);
    //WiFiManager, Local intialization. Once its business is done, there is no need to keep it around
    WiFiManager wm;
    bool res;

    res = wm.autoConnect("AutoConnectAP","password"); // password protected ap

    if(!res) {
        Serial.println("Failed to connect");
        // ESP.restart();
    } 
    else {
        Serial.println("connected...yeey :)");
    }
}

void loop() {
    
}
#END

The same example compiles ok with esp8266.

About this issue

Most upvoted comments

Using WiFi events,

  WiFi.onEvent(WiFiConnected, SYSTEM_EVENT_STA_CONNECTED);
  WiFi.onEvent(WiFiGotIP, SYSTEM_EVENT_STA_GOT_IP);
  WiFi.onEvent(WiFiLostIP, SYSTEM_EVENT_STA_LOST_IP);
  WiFi.onEvent(WiFiDisconnected, SYSTEM_EVENT_STA_DISCONNECTED);

Working on version 1.0.6

Get this on version 2.0.1

no matching function for call to 'WiFiClass::onEvent(void (&)(arduino_event_id_t, arduino_event_info_t), system_event_id_t)'

Do I just use 1.0.6 until fixed? or is there a different method to use wifi events?

For me, the fix was to revert to version 1.0.6 of the esp32 board package rather than trying to use 2.0.0.

Hi Gentleman, i have the same problem Os : MacOs 12.0.1 Arduino IDE : 1.8.16 ESP Library 2.0.0 (test but niet) ESP Library : DFRobot (test but niet) ESP : Firebeetle ESP32-E Error : iFiManager.cpp: In member function ‘void WiFiManager::WiFiEvent(arduino_event_id_t, system_event_info_t)’: /Users/cgironde/Documents/Arduino/libraries/WiFiManager/WiFiManager.cpp:3505:17: warning: comparison between ‘enum arduino_event_id_t’ and ‘enum system_event_id_t’ [-Wenum-compare] if(event == SYSTEM_EVENT_STA_DISCONNECTED){ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

King Regards