[GH-ISSUE #592] Attach Button Interrupts while in Configuration mode #493

Closed
opened 2026-02-28 01:25:34 +03:00 by kerem · 1 comment
Owner

Originally created by @charinduedirisuriya on GitHub (Apr 14, 2018).
Original GitHub issue: https://github.com/tzapu/WiFiManager/issues/592

Is it possible to attach button interrupts while wifi manager is active on configuration mode. I noticed that none of my buttons work when wifi manager is on configuration mode. How can i achieve this?

void configModeCallback (WiFiManager *myWiFiManager) {

Serial.println("Entered config mode");
Serial.println(WiFi.softAPIP());
//if you used auto generated SSID, print it
Serial.println(myWiFiManager->getConfigPortalSSID());
//entered config mode, make led toggle faster
ticker.attach(0.2, tick);
}

void setup() {
Serial.begin(115200);
Serial.println("Initialising");

pinMode(RELAY_PIN_01, OUTPUT);
pinMode(BUTTON_PIN_01, INPUT_PULLUP);

pinMode(RELAY_PIN_02, OUTPUT);
pinMode(BUTTON_PIN_02, INPUT_PULLUP);

pinMode(RELAY_PIN_03, OUTPUT);
pinMode(BUTTON_PIN_03, INPUT_PULLUP);

pinMode(LED_PIN, OUTPUT);

Serial.println("Enabling touch switch interrupt");
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN_01), buttonChangeCallback_01, CHANGE);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN_02), buttonChangeCallback_02, CHANGE);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN_03), buttonChangeCallback_03, CHANGE);

MQTT_PORT = atoi(PORT);
WiFiManager wifiManager;
wifiManager.setAPCallback(configModeCallback);

// wifiManager.resetSettings();
wifiManager.setBreakAfterConfig(true);
wifiManager.setConfigPortalTimeout(180);

if (!wifiManager.autoConnect(deviceName, "12345678")) {
Serial.println("failed to connect, we should reset as see if it connects");
setup();
}

ticker.detach();

Serial.println("MQTT IP ADDRESS: \n");
Serial.println(MQTT_SERVER);
Serial.println("MQTT PORT: \n");
Serial.println(MQTT_PORT);

Serial.println("MQTT USERNAME: \n");
Serial.println(mqttUser);
Serial.println("MQTT PASSWORD: \n");
Serial.println(mqttPassword);
Serial.println("Device Name: \n");
Serial.println(deviceName);
Serial.println("Controller Topic: \n");
Serial.println(controllerTopic);
Serial.println("Device Topic: \n");
Serial.println(deviceTopic);

Serial.println("Topics: \n");

Serial.println(controllerTopic);
Serial.println(deviceTopic);

Serial.println("Connected to Wifi!.. :)");

Serial.println("Local Ip");
Serial.println(WiFi.localIP());

client.setServer(MQTT_SERVER, MQTT_PORT);
client.setCallback(MQTTcallback);

}

Originally created by @charinduedirisuriya on GitHub (Apr 14, 2018). Original GitHub issue: https://github.com/tzapu/WiFiManager/issues/592 Is it possible to attach button interrupts while wifi manager is active on configuration mode. I noticed that none of my buttons work when wifi manager is on configuration mode. How can i achieve this? void configModeCallback (WiFiManager *myWiFiManager) { Serial.println("Entered config mode"); Serial.println(WiFi.softAPIP()); //if you used auto generated SSID, print it Serial.println(myWiFiManager->getConfigPortalSSID()); //entered config mode, make led toggle faster ticker.attach(0.2, tick); } void setup() { Serial.begin(115200); Serial.println("Initialising"); pinMode(RELAY_PIN_01, OUTPUT); pinMode(BUTTON_PIN_01, INPUT_PULLUP); pinMode(RELAY_PIN_02, OUTPUT); pinMode(BUTTON_PIN_02, INPUT_PULLUP); pinMode(RELAY_PIN_03, OUTPUT); pinMode(BUTTON_PIN_03, INPUT_PULLUP); pinMode(LED_PIN, OUTPUT); Serial.println("Enabling touch switch interrupt"); attachInterrupt(digitalPinToInterrupt(BUTTON_PIN_01), buttonChangeCallback_01, CHANGE); attachInterrupt(digitalPinToInterrupt(BUTTON_PIN_02), buttonChangeCallback_02, CHANGE); attachInterrupt(digitalPinToInterrupt(BUTTON_PIN_03), buttonChangeCallback_03, CHANGE); MQTT_PORT = atoi(PORT); WiFiManager wifiManager; wifiManager.setAPCallback(configModeCallback); // wifiManager.resetSettings(); wifiManager.setBreakAfterConfig(true); wifiManager.setConfigPortalTimeout(180); if (!wifiManager.autoConnect(deviceName, "12345678")) { Serial.println("failed to connect, we should reset as see if it connects"); setup(); } ticker.detach(); Serial.println("MQTT IP ADDRESS: \n"); Serial.println(MQTT_SERVER); Serial.println("MQTT PORT: \n"); Serial.println(MQTT_PORT); Serial.println("MQTT USERNAME: \n"); Serial.println(mqttUser); Serial.println("MQTT PASSWORD: \n"); Serial.println(mqttPassword); Serial.println("Device Name: \n"); Serial.println(deviceName); Serial.println("Controller Topic: \n"); Serial.println(controllerTopic); Serial.println("Device Topic: \n"); Serial.println(deviceTopic); Serial.println("Topics: \n"); Serial.println(controllerTopic); Serial.println(deviceTopic); Serial.println("Connected to Wifi!.. :)"); Serial.println("Local Ip"); Serial.println(WiFi.localIP()); client.setServer(MQTT_SERVER, MQTT_PORT); client.setCallback(MQTTcallback); }
kerem 2026-02-28 01:25:34 +03:00
  • closed this issue
  • added the
    Question
    label
Author
Owner

@tablatronix commented on GitHub (Oct 12, 2018):

use non blocking mode, available in development branch

wm stable is blocking loop for webserver

<!-- gh-comment-id:429462220 --> @tablatronix commented on GitHub (Oct 12, 2018): use non blocking mode, available in development branch wm stable is blocking loop for webserver
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/WiFiManager#493
No description provided.