diff --git a/main.ino b/main.ino index c79aa21..f12f18f 100644 --- a/main.ino +++ b/main.ino @@ -1,25 +1,79 @@ -#define RELAY_PIN 12 -#define LED_PIN 13 +#include //https://github.com/esp8266/Arduino +//needed for library +#include +#include +#include //https://github.com/tzapu/WiFiManager + +//for LED status +#include +Ticker ticker; + +const byte LED_PIN = 13; +const byte BUTTON_PIN = 0; + +void tick() +{ + //toggle state + int state = digitalRead(LED_PIN); // get the current state of LED_PIN pin + digitalWrite(LED_PIN, !state); // set pin to the opposite state +} + +//gets called when WiFiManager enters configuration mode +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); +} + +WiFiManager wifiManager; void setup() { + // put your setup code here, to run once: Serial.begin(115200); - - Serial.println("START"); - + + //set led pin as output pinMode(LED_PIN, OUTPUT); + // start ticker with 0.5 because we start in AP mode and try to connect + ticker.attach(0.6, tick); -} + pinMode(BUTTON_PIN, INPUT); -void loop() { + //WiFiManager + //Local intialization. Once its business is done, there is no need to keep it around + //WiFiManager wifiManager; + //reset settings - for testing + //wifiManager.resetSettings(); - digitalWrite(LED_PIN, HIGH); + //set callback that gets called when connecting to previous WiFi fails, and enters Access Point mode + wifiManager.setAPCallback(configModeCallback); - delay(1000); + //fetches ssid and pass and tries to connect + //if it does not connect it starts an access point with the specified name + //here "AutoConnectAP" + //and goes into a blocking loop awaiting configuration + if (!wifiManager.autoConnect()) { + Serial.println("failed to connect and hit timeout"); + //reset and try again, or maybe put it to deep sleep + ESP.reset(); + delay(1000); + } + //if you get here you have connected to the WiFi + Serial.println("connected...yeey :)"); + ticker.detach(); + //keep LED on digitalWrite(LED_PIN, LOW); - - delay(1000); - - Serial.println("LED"); - +} + +bool button_state = 0; +void loop() { + // put your main code here, to run repeatedly: + button_state = digitalRead(BUTTON_PIN); + if (button_state == 0) { + wifiManager.resetSettings(); + ESP.reset(); + } }