WIP: ignore stale values

This commit is contained in:
Gunnar Beutner 2023-12-06 15:38:56 +01:00
parent 571e677a63
commit 9f0ea040f1
1 changed files with 12 additions and 2 deletions

View File

@ -467,15 +467,25 @@ bool BleFingerprint::fill(JsonObject *doc) {
float weightedDistances = 0;
float sumWeights = 0;
float sumVariances = 0;
// FIXME: weight channels by timestamp of last packet, so we can ignore stale values
int channelCount = 0;
for (const auto& channel : channels) {
if (channel.lastSeenMillis < millis() - 5000)
continue;
float weight = 1 / std::max(channel.vari, 0.05f);
weightedDistances += channel.dist * weight;
sumWeights += weight;
sumVariances += channel.vari;
channelCount++;
}
// FIXME: weight channels by timestamp of last packet, so we can ignore stale values?
if (!channelCount) {
weightedDistances = getMinObservedDistance();
sumWeights = 1;
sumVariances = 0;
channelCount = 1;
}
float fusedDistance = weightedDistances / sumWeights;
float fusedVariance = sumVariances / 3;
float fusedVariance = sumVariances / channelCount;
(*doc)[F("distance")] = serialized(String(fusedDistance, 2));
(*doc)[F("var")] = serialized(String(fusedVariance, 2));