BLEBeaconScan / BLEBeaconScan.ino /
59054df 5 years ago
1 contributor
80 lines | 2.187kb
/*
   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);
}