From 270e3c475b82c8ad686d2432a5bf047fbc2f0db8 Mon Sep 17 00:00:00 2001
From: DTTerastar
Date: Mon, 29 Mar 2021 15:51:18 -0400
Subject: [PATCH] Add Enter/Left messages for enrollment
---
lib/BleFingerprint/BleFingerprint.cpp | 19 ++++++++++++++-----
lib/BleFingerprint/BleFingerprint.h | 2 +-
src/main.cpp | 17 +++++++----------
3 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/lib/BleFingerprint/BleFingerprint.cpp b/lib/BleFingerprint/BleFingerprint.cpp
index 6a331c4..90e03f0 100644
--- a/lib/BleFingerprint/BleFingerprint.cpp
+++ b/lib/BleFingerprint/BleFingerprint.cpp
@@ -46,7 +46,7 @@ BleFingerprint::BleFingerprint(BLEAdvertisedDevice *advertisedDevice, float init
auto nativeAddress = address.getNative();
String mac_address = Sprintf("%02x%02x%02x%02x%02x%02x", nativeAddress[5], nativeAddress[4], nativeAddress[3], nativeAddress[2], nativeAddress[1], nativeAddress[0]);
- Serial.print("MAC: ");
+ Serial.print("New | MAC: ");
Serial.print(mac_address);
if (advertisedDevice->haveName())
@@ -200,10 +200,19 @@ bool BleFingerprint::shouldReport()
StaticJsonDocument<512> BleFingerprint::report()
{
StaticJsonDocument<512> doc;
-#if VERBOSE
- // if (id == "iBeacon:2c96d71f47569faddd487c93cc9dac2e-0-0")
- // Serial.printf("%-36s %lu %5.1f %5.1f %5.1f\n", id.c_str(), output.timestamp, output.value.position, output.value.speed * 1e6, output.value.acceleration * 1e12);
-#endif
+ if (output.value.position < 0.5)
+ {
+ if (!enroll)
+ {
+ Serial.printf("Enter | %-50s %lu %5.1f %5.1f %5.1f\n", id.c_str(), output.timestamp, output.value.position, output.value.speed * 1e6, output.value.acceleration * 1e12);
+ enroll = true;
+ }
+ }
+ else if (enroll && output.value.position > 1.5)
+ {
+ Serial.printf("Left | %-50s %lu %5.1f %5.1f %5.1f\n", id.c_str(), output.timestamp, output.value.position, output.value.speed * 1e6, output.value.acceleration * 1e12);
+ enroll = false;
+ }
if (id != nullptr)
doc[F("id")] = id;
diff --git a/lib/BleFingerprint/BleFingerprint.h b/lib/BleFingerprint/BleFingerprint.h
index e76eb55..c44fb9e 100644
--- a/lib/BleFingerprint/BleFingerprint.h
+++ b/lib/BleFingerprint/BleFingerprint.h
@@ -24,7 +24,7 @@ public:
NimBLEAddress getAddress() { return address; }
private:
- bool hasValue;
+ bool hasValue = false, enroll = false;
NimBLEAddress address;
String id, name, url;
int rssi, calRssi;
diff --git a/src/main.cpp b/src/main.cpp
index a5cea6e..ca00912 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -283,10 +283,8 @@ class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
void onResult(BLEAdvertisedDevice *advertisedDevice)
{
digitalWrite(LED_BUILTIN, LED_BUILTIN_ON);
- //Serial.printf("Advertised Device: %s \n", advertisedDevice->toString().c_str());
BleFingerprint *f = getFingerprint(advertisedDevice);
f->seen(advertisedDevice);
- vTaskDelay(advertisedDevice->getRSSI() > -60 ? 2 : 1);
digitalWrite(LED_BUILTIN, !LED_BUILTIN_ON);
}
};
@@ -336,6 +334,13 @@ bool reportDevice(BLEAdvertisedDevice advertisedDevice)
void scanForDevices(void *parameter)
{
+ BLEDevice::init("");
+ pBLEScan = BLEDevice::getScan(); //create new scan
+ pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks(), true);
+ pBLEScan->setActiveScan(BLE_ACTIVE_SCAN);
+ pBLEScan->setInterval(BLE_SCAN_INTERVAL);
+ pBLEScan->setWindow(BLE_SCAN_WINDOW);
+
int i = 0;
while (1)
{
@@ -534,14 +539,6 @@ void setup()
connectToWifi();
setClock();
connectToMqtt();
-
- BLEDevice::init("");
- pBLEScan = BLEDevice::getScan(); //create new scan
- pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks(), true);
- pBLEScan->setActiveScan(BLE_ACTIVE_SCAN);
- pBLEScan->setInterval(BLE_SCAN_INTERVAL);
- pBLEScan->setWindow(BLE_SCAN_WINDOW);
-
xTaskCreatePinnedToCore(scanForDevices, "BLE Scan", 4096, pBLEScan, 1, &thBLEScan, 1);
#ifdef M5STICK