presence rework #1119, plugin history filter

This commit is contained in:
jokob-sk
2025-07-26 08:45:07 +10:00
parent 0265c41612
commit 170a3c0ae1
7 changed files with 186 additions and 196 deletions

View File

@@ -48,10 +48,6 @@ def process_scan (db):
mylog('verbose','[Process Scan] Updating Devices Info')
update_devices_data_from_scan (db)
# Void false connection - disconnections
mylog('verbose','[Process Scan] Voiding false (ghost) disconnections')
void_ghost_disconnections (db)
# Pair session events (Connection / Disconnection)
mylog('verbose','[Process Scan] Pairing session events (connection / disconnection) ')
pair_sessions_events(db)
@@ -75,104 +71,39 @@ def process_scan (db):
# Commit changes
db.commitDB()
#-------------------------------------------------------------------------------
def void_ghost_disconnections (db):
sql = db.sql #TO-DO
startTime = timeNowTZ()
# Void connect ghost events (disconnect event exists in last X min.)
mylog('debug','[Void Ghost Con] - 1 Connect ghost events')
sql.execute("""UPDATE Events SET eve_PairEventRowid = Null,
eve_EventType ='VOIDED - ' || eve_EventType
WHERE eve_MAC != 'Internet'
AND eve_EventType in ('Connected', 'Down Reconnected')
AND eve_DateTime = ?
AND eve_MAC IN (
SELECT Events.eve_MAC
FROM CurrentScan, Devices, Events
WHERE devMac = cur_MAC
AND eve_MAC = cur_MAC
AND eve_EventType = 'Disconnected'
AND eve_DateTime >= DATETIME(?, '-3 minutes')
) """,
(startTime, startTime))
# Void connect paired events
mylog('debug','[Void Ghost Con] - 2 Paired events')
sql.execute("""UPDATE Events SET eve_PairEventRowid = Null
WHERE eve_MAC != 'Internet'
AND eve_PairEventRowid IN (
SELECT Events.RowID
FROM CurrentScan, Devices, Events
WHERE devMac = cur_MAC
AND eve_MAC = cur_MAC
AND eve_EventType = 'Disconnected'
AND eve_DateTime >= DATETIME(?, '-3 minutes')
) """,
(startTime,))
# Void disconnect ghost events
mylog('debug','[Void Ghost Con] - 3 Disconnect ghost events')
sql.execute("""UPDATE Events SET eve_PairEventRowid = Null,
eve_EventType = 'VOIDED - '|| eve_EventType
WHERE eve_MAC != 'Internet'
AND ROWID IN (
SELECT Events.RowID
FROM CurrentScan, Devices, Events
WHERE devMac = cur_MAC
AND eve_MAC = cur_MAC
AND eve_EventType = 'Disconnected'
AND eve_DateTime >= DATETIME(?, '-3 minutes')
) """,
(startTime,))
mylog('debug','[Void Ghost Con] Void Ghost Connections end')
db.commitDB()
#-------------------------------------------------------------------------------
def pair_sessions_events (db):
# db.commitDB()
sql = db.sql #TO-DO
mylog('debug', '[Pair Session] - START')
# Pair Connection / New Device events
# Step 1: Pair connection-related events with future unpaired disconnections
mylog('debug', '[Pair Session] - 1: Pair Connections → Disconnections')
sql.execute("""
UPDATE Events
SET eve_PairEventRowid = (
SELECT E2.ROWID
FROM Events AS E2
WHERE E2.eve_EventType IN ('Disconnected', 'Device Down')
AND E2.eve_MAC = Events.eve_MAC
AND E2.eve_PairEventRowid IS NULL
AND E2.eve_DateTime > Events.eve_DateTime
ORDER BY E2.eve_DateTime ASC
LIMIT 1
)
WHERE eve_EventType IN ('New Device', 'Connected', 'Down Reconnected')
AND eve_PairEventRowid IS NULL
""")
mylog('debug','[Pair Session] - 1 Connections / New Devices')
sql.execute ("""UPDATE Events
SET eve_PairEventRowid =
(SELECT ROWID
FROM Events AS EVE2
WHERE EVE2.eve_EventType IN ('New Device', 'Connected', 'Down Reconnected',
'Device Down', 'Disconnected')
AND EVE2.eve_MAC = Events.eve_MAC
AND EVE2.eve_Datetime > Events.eve_DateTime
ORDER BY EVE2.eve_DateTime ASC LIMIT 1)
WHERE eve_EventType IN ('New Device', 'Connected', 'Down Reconnected')
AND eve_PairEventRowid IS NULL
""" )
# Step 2: Pair disconnection-related events with previous unpaired connections
mylog('debug', '[Pair Session] - 2: Pair Disconnections → Connections')
sql.execute("""
UPDATE Events
SET eve_PairEventRowid = (
SELECT E2.ROWID
FROM Events AS E2
WHERE E2.eve_EventType IN ('New Device', 'Connected', 'Down Reconnected')
AND E2.eve_MAC = Events.eve_MAC
AND E2.eve_PairEventRowid IS NULL
AND E2.eve_DateTime < Events.eve_DateTime
ORDER BY E2.eve_DateTime DESC
LIMIT 1
)
WHERE eve_EventType IN ('Disconnected', 'Device Down')
AND eve_PairEventRowid IS NULL
""")
# Pair Disconnection / Device Down
mylog('debug','[Pair Session] - 2 Disconnections')
sql.execute ("""UPDATE Events
SET eve_PairEventRowid =
(SELECT ROWID
FROM Events AS EVE2
WHERE EVE2.eve_PairEventRowid = Events.ROWID)
WHERE eve_EventType IN ('Device Down', 'Disconnected')
AND eve_PairEventRowid IS NULL
""" )
mylog('debug', '[Pair Session] - END')
mylog('debug','[Pair Session] Pair session end')
db.commitDB()