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