|
@@ -20,7 +20,11 @@ import core.alarm_plan_helper as helper
|
|
|
from core.linkage_action import LinkageAction
|
|
|
|
|
|
from db.db_process import (
|
|
|
- db_req_que, DBRequest
|
|
|
+ db_req_que, DBRequest_Async
|
|
|
+)
|
|
|
+
|
|
|
+from db.db_process import (
|
|
|
+ db_execute_sync, db_execute_async
|
|
|
)
|
|
|
import db.db_sqls as sqls
|
|
|
import mqtt.mqtt_send as mqtt_send
|
|
@@ -156,6 +160,20 @@ class EventAttr_TargetAbsence(EventAttr_Base):
|
|
|
self.enter_ts_ = -1
|
|
|
self.absence_time_ = -1
|
|
|
|
|
|
+# 事件属性 清理过期事件(无用)
|
|
|
+class EventAttr_CleanExpiredEvents(EventAttr_Base):
|
|
|
+ def __init__(self, event_type):
|
|
|
+ self.event_type_ = event_type
|
|
|
+ self.leave_ts_: int = -1 # 离开时间(ms)
|
|
|
+ self.enter_ts_: int = -1 # 进入时间(ms)
|
|
|
+ self.absence_time_: int = -1 # 消失时长(ms)
|
|
|
+ self.time_threshold_: int = 300 # 触发消失时间阈值(ms)
|
|
|
+ return
|
|
|
+
|
|
|
+ def reset(self):
|
|
|
+ self.leave_ts_ = -1
|
|
|
+ self.enter_ts_ = -1
|
|
|
+ self.absen
|
|
|
|
|
|
# 事件属性表
|
|
|
event_attr_map = {
|
|
@@ -168,6 +186,8 @@ event_attr_map = {
|
|
|
EventType.NIGHT_TOILETING_FREQUENCY_ABNORMAL.value: EventAttr_NightToiletingFrequencyAbnormal,
|
|
|
EventType.BATHROOM_STAY_FREQUENCY.value : EventAttr_BathroomStayFrequency,
|
|
|
EventType.TARGET_ABSENCE.value : EventAttr_TargetAbsence,
|
|
|
+
|
|
|
+ EventType.CLEAN_EXPIRED_EVENTS.value : EventAttr_CleanExpiredEvents,
|
|
|
}
|
|
|
|
|
|
class Cron:
|
|
@@ -361,7 +381,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|
|
@@ -439,7 +459,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|
|
@@ -517,7 +537,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|
|
@@ -558,7 +578,7 @@ class AlarmPlan:
|
|
|
"start_dt" : start_dt,
|
|
|
"end_dt" : end_dt
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(
|
|
|
+ db_req_que.put(DBRequest_Async(
|
|
|
sql=sqls.sql_query_events_by_datetime,
|
|
|
params=params,
|
|
|
callback=self.cb_toileting_frequency,
|
|
@@ -594,7 +614,7 @@ class AlarmPlan:
|
|
|
"start_dt" : start_dt,
|
|
|
"end_dt" : end_dt
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(
|
|
|
+ db_req_que.put(DBRequest_Async(
|
|
|
sql=sqls.sql_query_events_by_datetime,
|
|
|
params=params,
|
|
|
callback=self.cb_night_toileting_frequency,
|
|
@@ -630,7 +650,7 @@ class AlarmPlan:
|
|
|
"start_dt" : start_dt,
|
|
|
"end_dt" : end_dt
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(
|
|
|
+ db_req_que.put(DBRequest_Async(
|
|
|
sql=sqls.sql_query_events_by_datetime,
|
|
|
params=params,
|
|
|
callback=self.cb_toileting_frequency_abnormal,
|
|
@@ -666,7 +686,7 @@ class AlarmPlan:
|
|
|
"start_dt" : start_dt,
|
|
|
"end_dt" : end_dt
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(
|
|
|
+ db_req_que.put(DBRequest_Async(
|
|
|
sql=sqls.sql_query_events_by_datetime,
|
|
|
params=params,
|
|
|
callback=self.cb_night_toileting_frequency_abnormal,
|
|
@@ -701,7 +721,7 @@ class AlarmPlan:
|
|
|
"start_dt" : start_dt,
|
|
|
"end_dt" : end_dt
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(
|
|
|
+ db_req_que.put(DBRequest_Async(
|
|
|
sql=sqls.sql_query_events_by_datetime,
|
|
|
params=params,
|
|
|
callback=self.cb_bathroom_stay_frequency,
|
|
@@ -776,7 +796,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|
|
@@ -798,7 +818,22 @@ class AlarmPlan:
|
|
|
|
|
|
|
|
|
|
|
|
+ # 清理过期事件
|
|
|
+ def handle_clear_expired_events(self):
|
|
|
+ try:
|
|
|
+ db_execute_async(sqls.sql_delete_expired_events)
|
|
|
|
|
|
+ except json.JSONDecodeError as e:
|
|
|
+ tb_info = traceback.extract_tb(e.__traceback__)
|
|
|
+ for frame in tb_info:
|
|
|
+ LOGERR(f"[{frame.filename}:{frame.lineno}] @{frame.name}(), error:{e}, {e.doc}")
|
|
|
+ except Exception as e:
|
|
|
+ tb_info = traceback.extract_tb(e.__traceback__)
|
|
|
+ for frame in tb_info:
|
|
|
+ LOGERR(f"[{frame.filename}:{frame.lineno}] @{frame.name}(), error: {e}")
|
|
|
+
|
|
|
+
|
|
|
+# ========== 一些回调 ==========
|
|
|
|
|
|
# 如厕频次统计回调
|
|
|
def cb_toileting_frequency(self, result, userdata):
|
|
@@ -844,7 +879,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|
|
@@ -911,7 +946,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|
|
@@ -981,7 +1016,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|
|
@@ -1051,7 +1086,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|
|
@@ -1074,7 +1109,6 @@ class AlarmPlan:
|
|
|
return
|
|
|
|
|
|
|
|
|
-
|
|
|
# 卫生间频次统计回调
|
|
|
def cb_bathroom_stay_frequency(self, result, userdata):
|
|
|
try:
|
|
@@ -1119,7 +1153,7 @@ class AlarmPlan:
|
|
|
"tenant_id": self.tenant_id_,
|
|
|
"remark": json.dumps({}, ensure_ascii=False)
|
|
|
}
|
|
|
- db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+ db_req_que.put(DBRequest_Async(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
|
|
|
# 通知
|
|
|
linkage_action = {
|