@@ -35,6 +35,8 @@ OneButton userButton;
3535
3636APB::WebServer webServer (scheduler);
3737
38+ Task rescanTask;
39+
3840
3941#define LOG_SCOPE " APB::Main - "
4042
@@ -62,19 +64,33 @@ void setup() {
6264 APB::Settings::Instance.setup ();
6365 APB::InfluxDb::Instance.setup (scheduler);
6466
65- APB::StatusLed::Instance.setup ();
67+ APB::StatusLed::Instance.setup (&scheduler );
6668 #ifdef WIFI_POWER_TX
6769 WiFi.setTxPower (WIFI_POWER_TX);
6870 #endif
6971 #ifdef WIFI_POWER_RX
7072 WiFi.setTxPower (WIFI_POWER_RX);
7173 #endif
7274
75+ WiFi.onEvent ([](arduino_event_id_t event, arduino_event_info_t ){
76+ Log.infoln (LOG_SCOPE " WiFi event: %s" , WiFi.eventName (event));
77+ });
7378
74- WiFiManager::Instance.setOnConnectedCallback (std::bind (&APB::StatusLed::okPattern, &APB::StatusLed::Instance));
75- WiFiManager::Instance.setOnConnectionFailedCallback (std::bind (&APB::StatusLed::wifiConnectionFailedPattern, &APB::StatusLed::Instance));
76- WiFiManager::Instance.setOnNoStationsFoundCallback (std::bind (&APB::StatusLed::noWiFiStationsFoundPattern, &APB::StatusLed::Instance));
77- WiFiManager::Instance.setup (scheduler, &APB::Settings::Instance.wifi ());
79+ rescanTask.set (30'000 , TASK_FOREVER, [](){
80+ Log.infoln (LOG_SCOPE " Rescanning WiFi networks" );
81+ WiFiManager::Instance.rescan ();
82+ });
83+ scheduler.addTask (rescanTask);
84+ WiFiManager::Instance.setOnConnectedCallback ([](const AsyncWiFiMulti::ApSettings &){
85+ APB::StatusLed::Instance.okPattern ();
86+ rescanTask.disable ();
87+ });
88+ WiFiManager::Instance.setOnConnectionFailedCallback ([](){
89+ APB::StatusLed::Instance.wifiConnectionFailedPattern ();
90+ rescanTask.enableDelayed (30'000 );
91+ });
92+ WiFiManager::Instance.setOnDisconnectedCallback (std::bind (&APB::StatusLed::wifiConnectionFailedPattern, &APB::StatusLed::Instance));
93+ WiFiManager::Instance.setup (&APB::Settings::Instance.wifi ());
7894 Wire.begin (I2C_SDA_PIN, I2C_SCL_PIN);
7995 Wire.setClock (100000 );
8096 APB::Ambient::Instance.setup (scheduler);
0 commit comments