move wifi stuff to separate module, implement WifiManager for AP configuration
This commit is contained in:
@@ -2,21 +2,18 @@
|
|||||||
* Libraries and global scope code
|
* Libraries and global scope code
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ESP8266WiFi.h>
|
|
||||||
#include <WiFiClientSecure.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
BearSSL::WiFiClientSecure net;
|
|
||||||
time_t now;
|
|
||||||
unsigned long lastMillis = 0;
|
unsigned long lastMillis = 0;
|
||||||
|
|
||||||
String devname; // Device identifier for MQTT
|
String devname; // Device identifier for MQTT
|
||||||
|
char nodename[80] = "UNDEF";
|
||||||
|
|
||||||
struct Settings {
|
struct Settings {
|
||||||
String name = "";
|
String name = "";
|
||||||
String ip = "";
|
String ip = "";
|
||||||
} settings;
|
} settings;
|
||||||
|
|
||||||
|
time_t now;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Debugging might be nice sometimes
|
* Debugging might be nice sometimes
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,11 +1,60 @@
|
|||||||
// Future use
|
/*
|
||||||
|
* Wifi and OTA related stuff
|
||||||
|
*/
|
||||||
|
|
||||||
wifi_setup() {
|
#include <time.h>
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#include <WiFiClientSecure.h>
|
||||||
|
#include <WiFiManager.h>
|
||||||
|
#include <ESP8266httpUpdate.h>
|
||||||
|
|
||||||
|
WiFiManager WifiManager;
|
||||||
|
WiFiClientSecure net;
|
||||||
|
|
||||||
|
//BearSSL::WiFiClientSecure net;
|
||||||
|
|
||||||
|
//
|
||||||
|
// If the WifiManager configuration portal is called, we can do stuff
|
||||||
|
//
|
||||||
|
//void WifiManagerCallback(WiFiManager *myWiFiManager) {
|
||||||
|
// PRINTLN_SERIAL("Entered AP config mode");
|
||||||
|
//}
|
||||||
|
|
||||||
|
void wifi_associate() {
|
||||||
|
WifiManager.setConfigPortalTimeout(300); // If no configuration is done in 5 mins, exit/restart quietly
|
||||||
|
if (WifiManager.autoConnect(nodename)) { // @@@FIXME@@@ we should really set a PSK for the AP (but in my brief testing it crashed the ESP, so what's up with that)
|
||||||
|
PRINTLN_SERIAL("Wifi connected");
|
||||||
|
|
||||||
|
//wificlient.setFingerprint(WTR_SHA1);
|
||||||
|
net.setInsecure(); // Do not check fingerprint
|
||||||
|
net.setTimeout(15000); // 15 Seconds
|
||||||
|
|
||||||
|
PRINT_SERIAL("Setting time using SNTP");
|
||||||
|
configTime(-5 * 3600, 0, "pool.ntp.org", "time.nist.gov");
|
||||||
|
now = time(nullptr);
|
||||||
|
while (now < 1510592825) {
|
||||||
|
delay(500);
|
||||||
|
APPEND_SERIAL(".");
|
||||||
|
now = time(nullptr);
|
||||||
|
}
|
||||||
|
APPENDLN_SERIAL(" done!");
|
||||||
|
struct tm timeinfo;
|
||||||
|
gmtime_r(&now, &timeinfo);
|
||||||
|
PRINT_SERIAL("Current time: ");
|
||||||
|
APPENDLN_SERIAL(asctime(&timeinfo));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wifi_loop() {
|
void wifi_setup() {
|
||||||
|
// WifiManager.setAPCallback(WifiManagerCallback); // Enable WifiManager callback to clear the cache
|
||||||
|
wifi_associate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wifi_loop() {
|
||||||
|
if(WiFi.status() != WL_CONNECTED) {
|
||||||
|
PRINTLN_SERIAL("Wifi disconnected, trying to reconnect");
|
||||||
|
wifi_associate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
// Check for firmware upgrades
|
// Check for firmware upgrades
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
#ifdef ENABLE_MQTT
|
#ifdef ENABLE_MQTT
|
||||||
|
|
||||||
|
|
||||||
|
// sample schema's to use: https://www.home-assistant.io/integrations/light.mqtt/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define a function newcmd in your module to be able to accept mqtt commands
|
* Define a function newcmd in your module to be able to accept mqtt commands
|
||||||
* Syntax and parameters are like this:
|
* Syntax and parameters are like this:
|
||||||
@@ -72,34 +75,7 @@ void mqtt_callback(char* topic, byte* payload, unsigned int length) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WifiMQTTconnect() {
|
void mqtt_connect() {
|
||||||
|
|
||||||
if(WiFi.status() != WL_CONNECTED) {
|
|
||||||
PRINTLN_SERIAL("Wifi not connected, connecting...");
|
|
||||||
WiFi.mode(WIFI_STA); // Weird MQTT connection bug, https://github.com/knolleary/pubsubclient/issues/138#issuecomment-326113915
|
|
||||||
WiFi.begin(WLAN_SSID, WLAN_PASS);
|
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
|
||||||
PRINTLN_SERIAL("Waiting for Wifi...");
|
|
||||||
delay(500);
|
|
||||||
}
|
|
||||||
settings.ip = WiFi.localIP().toString();
|
|
||||||
PRINTLN_SERIAL("Wifi connected");
|
|
||||||
}
|
|
||||||
|
|
||||||
PRINT_SERIAL("Setting time using SNTP");
|
|
||||||
configTime(-5 * 3600, 0, "pool.ntp.org", "time.nist.gov");
|
|
||||||
now = time(nullptr);
|
|
||||||
while (now < 1510592825) {
|
|
||||||
delay(500);
|
|
||||||
APPEND_SERIAL(".");
|
|
||||||
now = time(nullptr);
|
|
||||||
}
|
|
||||||
APPENDLN_SERIAL(" done!");
|
|
||||||
struct tm timeinfo;
|
|
||||||
gmtime_r(&now, &timeinfo);
|
|
||||||
PRINT_SERIAL("Current time: ");
|
|
||||||
APPENDLN_SERIAL(asctime(&timeinfo));
|
|
||||||
net.setInsecure(); // verification options set to none
|
|
||||||
mqtt.setServer(MQTT_SERVER, MQTT_SERVERPORT);
|
mqtt.setServer(MQTT_SERVER, MQTT_SERVERPORT);
|
||||||
mqtt.setCallback(mqtt_callback);
|
mqtt.setCallback(mqtt_callback);
|
||||||
|
|
||||||
@@ -141,7 +117,7 @@ void mqtt_loop() {
|
|||||||
|
|
||||||
// Check for MQTT instructions
|
// Check for MQTT instructions
|
||||||
if(!mqtt.connected()) {
|
if(!mqtt.connected()) {
|
||||||
WifiMQTTconnect();
|
mqtt_connect();
|
||||||
} else {
|
} else {
|
||||||
mqtt.loop();
|
mqtt.loop();
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ void setup() {
|
|||||||
settings.name.remove(devlen+1, 6);
|
settings.name.remove(devlen+1, 6);
|
||||||
|
|
||||||
PRINTLN_SERIAL("device name generated");
|
PRINTLN_SERIAL("device name generated");
|
||||||
|
|
||||||
|
wifi_setup();
|
||||||
|
|
||||||
#ifdef ENABLE_MQTT
|
#ifdef ENABLE_MQTT
|
||||||
mqtt_setup();
|
mqtt_setup();
|
||||||
@@ -40,6 +41,7 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
wifi_loop();
|
||||||
#ifdef ENABLE_MQTT
|
#ifdef ENABLE_MQTT
|
||||||
mqtt_loop();
|
mqtt_loop();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user