/* 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 #include "soc/soc.h" // Disable brownout problems #include "soc/rtc_cntl_reg.h" // Disable brownout problems // My Includes #include #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(); timeSinceLastModeSwitch = time; } } 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); }