1 contributor
/*
Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp
Ported to Arduino ESP32 by Evandro Copercini
*/
#ifndef ARDUINO_ESP32_DEV
error "Board Must be /ESP32 Wrover Module/ OR /????/"
#endif //ARDUINO_ESP32_DEV
#include <Arduino.h>
#include "soc/soc.h" // Disable brownout problems
#include "soc/rtc_cntl_reg.h" // Disable brownout problems
// My Includes
#include <dummy.h>
#include "my_constants.h"
//#include "my_draw.h"
#include "my_wifi.h"
#include "my_sd.h"
#include "my_ntp.h"
#include "my_serial.h"
#include "my_ota.h"
#include "my_mqtt.h"
#include "my_http.h"
#include "my_ble.h"
void setup()
{
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println(String(APPNAME));
sd_set();
WiFiConnect();
if( WiFi.status() == WL_CONNECTED ) {
setClock();
#ifdef USE_MQTT
sprintf(clientID,clientIDFmt,WiFi.macAddress().c_str());
mqtt_connect();
#endif //USE_MQTT
}
Serial.println("BuildDate:["+String(compile_date)+"]");
ble_set();
http_set();
}
void loop()
{
unsigned long time;
time = millis();
if (time - timeSinceLastModeSwitch > UPDATE_PERIOD) {
if( 0 == upgradeInProgress ) {
countMeasures++;
getTimeString();
getBLEScan();
sd_write();
}
} else if( time > MAX_RUNNING_TIME ) {
//Restart the board if running time is > MAX_RUNNING_TIME
#ifdef USE_MQTT
mqtt_reconnect();
String MQTTMsg = "{\"time\": \""+String(acTimeStringTZ)+"\", \"MAC\": \""+WiFi.macAddress()+"\", \"status\": \"Triggered reboot\"}";
if (!client.publish(mqtt_topic, MQTTMsg.c_str())) {
Serial.println("ERROR: MQTT not sent!");
}
#endif //USE_MQTT
Serial.println("Triggered reboot");
ESP.restart();
} else if(WiFi.status() != WL_CONNECTED) {
//Reconnect WiFi if not connected
WiFiConnect();
#ifdef USE_MQTT
mqtt_connect();
#endif //USE_MQTT
}
pollSerial();
server.handleClient();
delay(LOOP_DELAY);
}