2023-12-07 23:51:43 +03:00
|
|
|
#include "esp32_presense.h"
|
|
|
|
|
|
|
|
namespace esphome
|
|
|
|
{
|
2023-12-10 09:08:23 +03:00
|
|
|
namespace esp32_presense
|
2023-12-07 23:51:43 +03:00
|
|
|
{
|
|
|
|
unsigned int totalSeen = 0;
|
|
|
|
unsigned int totalFpSeen = 0;
|
|
|
|
unsigned int totalFpQueried = 0;
|
|
|
|
unsigned int totalFpReported = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ESP32Presense::reportLoop()
|
|
|
|
{
|
|
|
|
auto copy = BleFingerprintCollection::GetCopy();
|
|
|
|
unsigned int count = 0;
|
|
|
|
for (auto &i : copy)
|
|
|
|
if (i->shouldCount())
|
|
|
|
count++;
|
|
|
|
sendTelemetry(totalSeen, totalFpSeen, totalFpQueried, totalFpReported, count);
|
|
|
|
|
|
|
|
auto reported = 0;
|
|
|
|
for (auto &f : copy) {
|
|
|
|
auto seen = f->getSeenCount();
|
|
|
|
if (seen) {
|
|
|
|
totalSeen += seen;
|
|
|
|
totalFpSeen++;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
if (f->hasReport()) {
|
|
|
|
if (reportBuffer(f))
|
|
|
|
f->clearReport();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (reportDevice(f)) {
|
|
|
|
totalFpReported++;
|
|
|
|
reported++;
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ESP32Presense::sendTelemetry(
|
|
|
|
unsigned int totalSeen,
|
|
|
|
unsigned int totalFpSeen,
|
|
|
|
unsigned int totalFpQueried,
|
|
|
|
unsigned int totalFpReported,
|
|
|
|
unsigned int count
|
|
|
|
) {
|
|
|
|
this->publish(this->room_ + "/status", "online");
|
|
|
|
this->publish(this->room_ + "/max_distance", BleFingerprintCollection::maxDistance);
|
|
|
|
this->publish(this->room_ + "/absorption", BleFingerprintCollection::absorption);
|
|
|
|
this->publish(this->room_ + "/tx_ref_rssi", BleFingerprintCollection::txRefRssi);
|
|
|
|
this->publish(this->room_ + "/rx_adj_rssi", BleFingerprintCollection::rxAdjRssi);
|
|
|
|
this->publish(this->room_ + "/query", BleFingerprintCollection::query);
|
|
|
|
this->publish(this->room_ + "/include", BleFingerprintCollection::include);
|
|
|
|
this->publish(this->room_ + "/exclude", BleFingerprintCollection::exclude);
|
|
|
|
this->publish(this->room_ + "/known_macs", BleFingerprintCollection::knownMacs);
|
|
|
|
this->publish(this->room_ + "/known_irks", BleFingerprintCollection::knownIrks);
|
|
|
|
this->publish(this->room_ + "/count_ids", BleFingerprintCollection::countIds);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
/*
|
|
|
|
void ESP32NimbleMQTTRoom::on_result(nimble_distance_custom::NimbleDistanceCustomResult& result)
|
|
|
|
{
|
|
|
|
auto address = result.address.toString();
|
|
|
|
|
|
|
|
this->publish_json(
|
|
|
|
this->base_topic_ + "/devices/" + address + "/" + this->room_,
|
|
|
|
[=](ArduinoJson::JsonObject root) -> void {
|
|
|
|
root["id"] = address;
|
|
|
|
root["distance"] = result.distance;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
};
|
|
|
|
*/
|
|
|
|
} // namespace esp32_nimble_tracker
|
|
|
|
} // namespace esphome
|