Update doubleFilter.py

Probleme mit dem double Filter.
Immer wenn die Liste nach Zeit gelöscht wird, wird das nächste doppelte Paket als ok durchgelassen. Die Liste ist dann bis auf einen Eintrag leer, der erste Eintrag wird aber nicht auf Duplikat geprüft.
Einstellung ist RIC, SUBRIC, Message. Die Zeit habe ich zum testen auf 2 sekunden gestellt.

type: module
res: filter.doubleFilter
config:
ignoreTime: 2
maxEntry: 40
pocsagFields:
ric
subric
message
This commit is contained in:
GonzoBS 2022-11-06 17:36:28 +01:00 committed by GitHub
parent b277640046
commit e43aad1e42
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -69,6 +69,11 @@ class BoswatchModule(ModuleBase):
def _check(self, bwPacket, filterFields):
self._filterLists[bwPacket.get("mode")].insert(0, bwPacket)
for listPacket in self._filterLists[bwPacket.get("mode")][1:]: # [1:] skip first entry, thats the new one
if all(listPacket.get(x) == bwPacket.get(x) for x in filterFields):
logging.debug("found duplicate: %s", bwPacket.get("mode"))
return False
# delete entries that are to old
counter = 0
for listPacket in self._filterLists[bwPacket.get("mode")][1:]: # [1:] skip first entry, thats the new one
@ -83,10 +88,5 @@ class BoswatchModule(ModuleBase):
logging.debug("MaxEntry reached - delete oldest")
self._filterLists[bwPacket.get("mode")].pop()
for listPacket in self._filterLists[bwPacket.get("mode")][1:]: # [1:] skip first entry, thats the new one
if all(listPacket.get(x) == bwPacket.get(x) for x in filterFields):
logging.debug("found duplicate: %s", bwPacket.get("mode"))
return False
logging.debug("doubleFilter ok")
return None